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

>更新时间：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)
        autonumber
        actor User as 用户
        participant Mch as 商户H5前端
        participant Mch2 as 商户后端
        participant WxPay as 微信支付系统

        User->>Mch: 用户操作下单
        Mch->>Mch2: 请求下单

        alt 浏览器 preflight 请求
            Mch->>Mch2: options请求

            note right of Mch: 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/
			Mch2->>Mch2: 判断Origin头部是否合法

            alt 判断Origin头部是否合法(是)
                Mch2-->>Mch: ：options请求正常响应
                note right of Mch: HTTP/1.1 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 否
                Mch2-->>Mch: ：options请求异常响应
                note right of Mch: HTTP/1.1 403 Forbidden<br/>（no access-control-allow header）<br/>报错信息
            end

        end

        Mch->>Mch2: get/post请求
        note right of Mch: 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:...

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

        alt api.third.com合法且用户登录态有效(是)
            Mch2->>Mch2: 保存订单
            Mch2->>WxPay: 用微信支付接口下单
            WxPay-->>Mch2: 返回跳转URL
            Mch2-->>Mch: ：请求下单正常响应（）
            note right of Mch: Access-Control-Allow-Origin: https://api.third.com<br/>Access-Control-Allow-Credentials: true
        else 否
            Mch2-->>Mch: ：请求下单异常响应
            note right of Mch: HTTP/1.1 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/merchant/4011937163.md)）注：交易类型trade\_type=MWEB

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

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

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

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

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

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

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

注意：

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

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