---
url: "https://pay.weixin.qq.com/doc/brand/4015596635.md"
title: "跨城冗灾升级指引"
doc_id: 4015596635
---

>更新时间：2025.07.22

以下指南旨在为品牌商户在升级支付系统时提供参考。品牌商户应根据其系统的实际情况采取适当的升级措施，并确保支付系统的安全性。



## 1. 简介

什么是冗灾？异地灾备的重要性？

当光缆被挖断、机房出现异常，或因不可抗拒原因（如地质灾害）等造成正常路径上业务不可用，通过备份路径和措施来保证业务继续正常进行。

## 2. 品牌商户实现跨城冗灾整体流程

![](https://gtimg.wechatpay.cn/resource/xres/mmpaydoc/static/img/3013e080431b729801f6637afcb16d40.png)

## 3. 专线品牌商户方案

方案A：多专线异地机房实现跨城冗灾

|  | 品牌商户侧要求 | 微信支付 |
| --- | --- | --- |
| 专线 | 两条异地专线<br>1、如果已拉单专线，需要补一条异地专线(品牌商户侧发起)<br>2、如果已有两条同城专线，需要将其中一条改到异地机房（品牌商户侧发起） | 提供四个专线接入点：<br>上海电信<br>上海联通<br>深圳电信<br>深圳联通 |
| 机房 | 无要求 | 上海<br>深圳 |
| 冗灾规则 | 专线双活、业务双活（专线同时跑交易）<br>支持专线、机房异常、跨城冗灾 | 每个中心独立业务部署 |
| 冗灾触发机制 | 可按实际情况按以下方案实现：<br>1. 方案1：统计每条专线的连接耗时、丢包率、业务成功率；出现异常情况可自动切换到最优链路<br>   <br>2. 方案2：统计接口（例如：下单API）成功率，失败率升高自动启动冗灾，比如失败率降到50%，<br>   <br>3. 方案3：定时探测（例如：查单API），连续3次探测失败（连接超时，响应超时，HTTP状态码：5xx表示服务器错误）自动启动冗灾<br>   <br>注意：专线回调类API有主备区分，切换路径后，回调域名也应该换到对应域名 | - |
| 正常回切机制 | 有探测机制，能自动恢复双活 | - |

跨城冗灾需支持的范围：微信支付 和 公众平台 业务微信支付域名：api.mch.weixin.qq.com（主域名）； api2.mch.weixin.qq.com（备域名）

公众平台域名：api.weixin.qq.com（主域名）； api2.weixin.qq.com（备域名）

公众平台资源域名： res.wx.qq.com（主域名） ；res2.wx.qq.com（备域名）

以广州专线品牌商户为例，说明冗灾流程

专线应开通公众平台访问策略，公众号支付有涉及到公众平台授权接口调用。

![](https://gtimg.wechatpay.cn/resource/xres/mmpaydoc/static/img/152c4afea7a97aa8c93d65e7670c7f1a.png)

方案B：同城专线+公网灾备实现跨城冗灾

正常使用专线方案运行，应具备自动切换到公网的条件（定时探测公网可用性）和实现公网冗灾的逻辑。

## 4. 公网品牌商户方案

| 品牌商户侧要求 | 品牌商户侧要求 | 微信支付 |
| --- | --- | --- |
| 机房和运营商 | / | 品牌商户侧DNS就近解析，微信支付提供六个接入点：<br>上海电信、深圳电信、天津电信<br>上海联通、深圳联通、天津联通 |
| 容灾规则 | 要求：双活，发生故障能主备切换，恢复后能回切<br>1、主域名是主通道， 备用域名（跨城解析域名）可以采用1%以内的流量做验证<br>2、遇到主域名异常要能将主要通道自动切换到备用域名（跨城解析域名）访问<br>3、当主域名恢复正常后，主要通道要从备用域名（跨城解析域名）回切访问 | 主域名：同运营商就近解析；<br>备域名：同运营商跨城解析；<br>网络延时对比：主域名小于备域名 |

跨城容灾方案说明：

正常使用主域名调用，备域名需有流量，保证业务能实时切换。当域名出现请求超时、读写超时，自动切换备域名重试。

交易主链路和交易备链路做好动态流量分配，保证遇到异常能够自动切换。例如可以统计主备域名的连接耗时、丢包率、业务失败率，出现异常情况（例如5秒钟内统计业务失败率超过50%）可自动切换到最优链路。

| 方案名称 | 适用品牌商户 | 优点 | 缺点 | 补充说明 |
| --- | --- | --- | --- | --- |
| 方案一：统计主域名实际请求成功率，<br>实现主备域名实时切换策略 | 交易量大 | 1、基于实际业务请求结果数据，容灾切换准确率高<br>2、配合高频率统计计算，能够达到出现故障时在更短的时间内做出切换 | 1、和业务耦合深，需要上报每次请求结果<br>2、交易量小的品牌商户，用于容灾统计的数据少，很难达到理想的容灾效果 | 增加重试逻辑：访问一个域名失败之后，<br>可以换一个域名进行重试，从而提升单次业务请求成功率 |
| 方案二：定时探测主域名连通性，<br>实现主备域名实时切换策略 | 1、交易量较少<br>2、不希望对现有业务做过多改造 | 1、业务流程改动少，使用方式简单<br>2、生效的时间固定，和交易量无关 | 1、交易量大的品牌商户，探测周期过长的话，一旦出故障，影响笔数大<br>2、容灾切换时效性低 | 增加重试逻辑：访问一个域名失败之后，<br>可以换一个域名进行重试，从而提升单次业务请求成功率 |

微信支付提供两个自动切换方案供品牌商户自行选择，需实现双活、流量分配、域名实时切换。

### 4.1.方案一：统计主域名实际请求成功率，实现主备域名实时切换策略

#### 4.1.1.备注说明

主域名：api.mch.weixin.qq.com, api.weixin.qq.com

备用域名：api2.mch.weixin.qq.com, api2.weixin.qq.com

#### 4.1.2.方案流程图

![](https://gtimg.wechatpay.cn/resource/xres/mmpaydoc/static/img/04f49f5d224111d72e3efa96d6b62e28.png)

#### 4.1.3.业务请求流程

1. 准备好全局存储空间（比如配置文件、内存空间等）存放“域名信息”、“日志信息”并进行初始化；

2. 发起业务请求之前，从域名信息库里面获取域名；

3. 使用当前域名发起请求，成功，则上报成功结果并且流程结束；

4. 使用当前域名发起请求，失败（连接超时、读写超时），则上报失败结果并且获取另一个域名进行重试，流程结束；

5. 因业务问题导致失败，品牌商户侧根据自身逻辑处理；

6. 第3步和第4步中上报的请求结果存储规则：保留主域名10分钟内最近100次请求，品牌商户也可根据实际情况自行调整。


#### 4.1.4.成功率统计流程

1. 定义主域名最小可用率，比如90%(具体数值品牌商户可根据实际业务情况进行设定)；

2. 启动定时探测器，取【业务请求流程】中的请求结果数据，对其进行汇总统计，计算成功率，每分钟一次（计算频率品牌商户可根据实际业务情况进行设定）；

3. 当主域名请求成功率大于等于最小可用率时更新当前域名为主域名；

4. 当主域名请求成功率小于最小可用率时更新当前域名为备用域名。


### 4.2.方案二：定时探测主域名连通性，实现主备域名实时切换策略

#### 4.2.1.备注说明

主域名：api.mch.weixin.qq.com, api.weixin.qq.com

备用域名：api2.mch.weixin.qq.com, api2.weixin.qq.com

#### 4.2.2.方案流程图

![](https://gtimg.wechatpay.cn/resource/xres/mmpaydoc/static/img/a436571b7f5f0cc25a6781be47971a2e.png)

#### 4.2.3.业务请求流程

1. 准备好全局存储空间（比如配置文件、内存空间等）存放“域名信息”并进行初始化；

2. 发起交易前，从“域名信息”中获取当前域名；

3. 使用当前域名发起请求，成功，则流程结束；

4. 使用当前域名发起请求，失败（连接超时、读写超时），获取另一个域名进行重试，流程结束；

5. 因业务问题导致失败，品牌商户侧根据自身逻辑处理；


#### 4.2.4.定时探测流程

1. 启动定时探测器，每分钟一次进行主域名探测（探测频率品牌商户可根据业务实际情况自行设定）；

2. 连续探测主域名5次，失败（连接超时）次数小于3次，更新域名信息为主域名，失败（连接超时）次数大于等于3次，更新域名信息为备用域名；

3. 探测方式可用curl、telnet等方式发起。


### 4.3.失败重试策略

#### 4.3.1.备注说明

主域名：api.mch.weixin.qq.com, api.weixin.qq.com

备用域名：api2.mch.weixin.qq.com, api2.weixin.qq.com

#### 4.3.2.方案流程图

![](https://gtimg.wechatpay.cn/resource/xres/mmpaydoc/static/img/d769a5dfc3c4bc5f624913870f1e647f.png)

#### 4.3.3.业务请求流程

1. 发起交易前，从“域名信息”中获取当前域名；

2. 使用当前域名发起请求，成功，则流程结束；

3. 使用当前域名发起请求，失败（连接超时、读写超时），获取另一个域名进行重试，流程结束；

4. 因业务问题导致失败，品牌商户侧根据自身逻辑处理；


### 4.4.实现双活的流量分配策略

#### 4.4.1.备注说明

主域名：api.mch.weixin.qq.com, api.weixin.qq.com

备用域名：api2.mch.weixin.qq.com, api2.weixin.qq.com

#### 4.4.2.方案流程图

![](https://gtimg.wechatpay.cn/resource/xres/mmpaydoc/static/img/fa60067f5f02e2b840b69899c19cb946.png)

#### 4.4.3.双活域名流量分配策略

1. 发起交易前配置好主备切换比率，值范围在0~99之间（具体数值品牌商户可根据实际业务情况进行设定）；

2. 当前域名是主域名的情况下，要进行流量分配。流量分配规则：先获取0~99的随机数，当随机数<主备切换比率则使用主域名发起交易，随机数>=主备切换比率则使用备用域名发起交易；

3. 当前域名是备用域名的情况下，直接用备用域名发起请求。


专线品牌商户请参考：[专线冗灾指引](https://pay.weixin.qq.com/doc/brand/4015596635.md#3.-%E4%B8%93%E7%BA%BF%E5%95%86%E6%88%B7%E6%96%B9%E6%A1%88)

## 5. 验证

### 5.1. 已升级支持跨城冗灾，品牌商户自行验证

方案1：通过人工配置错误HOST模拟灾情

方案2：通过机房断专线的方式模拟

## 6. 升级说明

### 微信支付侧实现跨城容灾，为什么还需要品牌商户配合？

当某个城市内的机房都不可用，微信支付侧会进行灾备处理，通过另外一个城市提供支付服务。品牌商户侧需要通过主备域名切换的方式，访问微信支付正常服务，减小故障带来的影响。

### 涉及哪些API

- 微信支付API

- 公众平台后台API和前台JS资源


## 7. 微信支付回调通知品牌商户

品牌商户侧与微信支付约定私有的回调域名，形如xxxx.wxpay.local，xxxx替换为品牌商户名称简写，具体有以下两种方案可选：

- 随机模式： xxxx.wxpay.local为随机回调域名，微信支付侧会将该域名在配置文件中定义为全部回调IP，随机选择和重试；

- 主备模式： s.xxxx.wxpay.local顺序模式，是将电信IP作为主回调IP的回调域名，此时联通IP作为备用；

  r.xxxx.wxpay.local逆序模式，是将联通IP作为主回调IP的回调域名，此时电信IP作为备用；


品牌商户可以只用随机模式的私有回调域名，如果想要更好控制专线选择，可以在需要切换时使用主备模式，微信支付侧回调程序根据品牌商户侧提供的私有回调域名自动适配回调IP。

走专线还是走公网? 品牌商户传的私有回调地址就走专线回调，其他回调地址类型走公网回调。

## 8. 专线冗灾演练

1. 双方约定时间定期或者不定期演练专线冗灾自动切换

2. 品牌商户侧排查所有专线策略是否都通

3. 微信支付侧排查专线回调策略是否都通

4. 品牌商户侧通过调整防火墙策略等方式断开其中一条专线，验证观察业务是否能自动切换至另一条线路，且切换过程中业务无损失

5. 恢复后再断开验证另一条专线

6. 如果品牌商户侧能实现两条专线都不通自动走公网调用的话，可以再验证两条专线都断开的情况下，是否如预期走公网调用和走公网回调

7. 如遇故障影响业务，请优先回退，之后再排查原因。


## 9. QA

见[社区QA](https://developers.weixin.qq.com/community/pay/doc/000ae006fe0b38c83468b256651008)