---
url: "https://pay.weixin.qq.com/doc/v2/partner/4011939727.md"
title: "开发指引"
doc_id: 4011939727
---

>更新时间：2026.06.10

## 接口流程图

```mermaid
sequenceDiagram
    rect rgb(255,255,255)
    actor 微信支付用户
    participant 浏览器
    participant 商户系统后台
    participant 微信客户端
    participant 微信支付后台

    %% 1. 用户下单
    微信支付用户->>浏览器: 用户操作下单
    浏览器->>商户系统后台: 1. 请求下单
    商户系统后台->>商户系统后台: 保存订单
    商户系统后台->>微信支付后台: 2. 调用微信支付接口下单
    微信支付后台-->>商户系统后台: 返回跳转URL
    商户系统后台-->>浏览器: 返回302消息跳转
    浏览器->>浏览器: 3. 得到URL后跳转

    %% 2. 微信校验
    浏览器->>微信支付后台: 跳转到微信的页面
    微信支付后台->>微信支付后台: 4. 校验权限，安全性
    微信支付后台-->>浏览器: 返回校验结果

    %% 3. 发起支付
    浏览器->>微信客户端: deeplink调用
    微信客户端->>微信客户端: 调用支付
    微信支付后台->>商户系统后台: 5. 支付通知
    商户系统后台-->>微信支付后台: 返回接收结果
    微信客户端->>浏览器: 6. 调起原浏览器，跳转目标页面

    %% 4. 查询支付结果
    浏览器->>商户系统后台: 7. 查询支付结果
    商户系统后台->>商户系统后台: 8. 判断是否接收到通知，否则调起支付查询

    alt 判断支付通知（是否收到通知）
        商户系统后台->>微信支付后台: 9. 调用查询API
    end
    商户系统后台-->>浏览器: 返回支付结果
    浏览器->>浏览器: 10. 展示支付结果
    浏览器->>微信支付用户:
    end
```

## 安全标准规范流程图

```mermaid
sequenceDiagram
    rect rgb(255,255,255)
    participant 用户 as 微信支付用户
    participant 浏览器
    participant 商户后台 as 商户系统后台
    participant 微信客户端
    participant 微信后台 as 微信支付后台

    用户->>浏览器: 用户操作下单
    浏览器->>商户后台: 1. 请求下单
    alt 浏览器 preflight 请求
    浏览器->>商户后台: 1.1 option请求
    note right of 浏览器:  OPTIONS /api HTTP/1.1<br>Access-Control-Request-Headers: x-A,x-B<br>Access-Control-Request-Method: POST<br>Origin: https://api.third.com<br>Referer: https://api.third.com/
    商户后台-->>商户后台:判断Orgin头部是否合法

    alt 判断Origin头部是否合法(是)
    商户后台-->>浏览器:options请求正常响应
        note right of 浏览器: 200 OK<br>Access-Control-Allow-Credentials: true<br>Access-Control-Allow-Headers: x-A,x-B<br>Access-Control-Allow-Methods: POST, GET<br>Access-Control-Allow-Origin: https://api.third.com
    else 否
     商户后台-->>浏览器:options请求异常响应
        note right of 浏览器: 403 Forbidden<br>(no access-control-allow header)<br>报错信息
    end
   end
    浏览器-->>商户后台:get/post请求
    note right of 浏览器: GET /api HTTP/1.1<br>Host: api.shanghu.com<br>Referer: https://api.third.com/1/2.html<br>Origin: https://api.third.com<br>Cookie: shanghu_uid=xxx...

    商户后台->>商户后台: 判断Origin头部是否合法
    商户后台->>商户后台: 判断Cookie是否关联到商户站点已注册用户

    alt api.third.com合法且用户登录态有效(是)
        商户后台->>商户后台: 保存订单
        商户后台->>微信后台: 2. 调用微信支付接口下单
        微信后台-->>商户后台: 返回跳转URL
        商户后台-->>浏览器: 请求下单正常响应
        note right of 浏览器:<br>Access-Control-Allow-Origin: https://api.third.com<br>Access-Control-Allow-Credentials: true
    else 否
        商户后台-->>浏览器: 请求下单异常响应
        note right of 浏览器: 403 Forbidden<br>(no access-control-allow header)<br>报错信息
    end
    end
```

1、 用户向商户系统后台请求下单，商户后台必须做好安全校验

- 当跨域请求不是[简单请求](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS#%E7%AE%80%E5%8D%95%E8%AF%B7%E6%B1%82)时，浏览器会发起Options[预检请求](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS#%E9%A2%84%E6%A3%80%E8%AF%B7%E6%B1%82)，此时商户后台需要支持Options请求且校验Origin头部，如果不在允许的白名单列表内，则返回403且不返回 `Access-Control-Allow-*` 相关头部

- 针对GET/POST的跨域下单请求，商户后台需要校验Origin头部是否合法且用户Cookie是否完备（若用户未登陆则先引导登陆商户站点），否则返回403且不返回 `Access-Control-Allow-*` 相关头部


2、由商户后台向微信支付发起下单请求（[调用统一下单接口](https://pay.weixin.qq.com/doc/v2/partner/4011939925.md)）注：交易类型trade\_type=MWEB

3、统一下单接口返回支付相关参数给商户后台，如支付跳转url（参数名“mweb\_url”），商户通过mweb\_url调起微信支付中间页

4、中间页进行H5权限的校验，安全性检查（此处常见错误请见下文）

5、如支付成功，商户后台会接收到微信侧的异步通知

6、用户在微信支付收银台完成支付或取消支付,返回商户页面（默认为返回支付发起页面）

7、商户在展示页面，引导用户主动发起支付结果的查询

8、商户后台判断是否接收到微信侧的支付结果通知，如没有，后台调用我们的[订单查询接口](https://pay.weixin.qq.com/doc/v2/partner/4011939979.md)确认订单状态（查单实现可参考：[支付回调和查单实现指引](https://pay.weixin.qq.com/doc/v2/partner/4011984698.md)）

9、展示最终的订单支付结果给用户

注意：

- 商户需按照安全规范进行接入，若因未遵循规范接入而出现安全问题，财付通将根据《[微信支付服务协议](https://pay.weixin.qq.com/index.php/public/apply_sign/protocol)》条款处理

- 以上图示，仅为示例，只供参考。请商户自行确认是否实现了跨越访问白名单限制和用户登录态校验。