---
url: "https://pay.weixin.qq.com/doc/v2/merchant/4011935213.md"
title: "JSAPI调起支付"
doc_id: 4011935213
---

>更新时间：2026.04.03

在微信浏览器里面打开H5网页中执行JS调起支付。接口输入输出数据格式为JSON。

注意：WeixinJSBridge内置对象在其他浏览器中无效。

getBrandWCPayRequest参数以及返回值定义：

1、网页端接口请求参数列表（参数需要重新进行签名计算，参与签名的参数为：appId、timeStamp、nonceStr、package、signType，参数区分大小写。）

| 名称 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
| --- | --- | --- | --- | --- | --- |
| 公众号id | appId | 是 | String(16) | wx8888888888888888 | 填写下单时传入的appid，且必需与当前实际调起支付的公众号appid一致，否则无法调起支付<br>注意：appId参数为大写字母“I” |
| 时间戳 | timeStamp | 是 | String(32) | 1414561699 | 当前的时间，其他详见[时间戳规则](https://pay.weixin.qq.com/doc/v2/merchant/4011941162.md) |
| 随机字符串 | nonceStr | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串，不长于32位。推荐[随机数生成算法](https://pay.weixin.qq.com/doc/v2/merchant/4011985891.md) |
| 订单详情扩展字符串 | package | 是 | String(128) | prepay\_id=123456789 | 统一下单接口返回的prepay\_id参数值，提交格式如：prepay\_id=\*\*\* |
| 签名方式 | signType | 是 | String(32) | MD5 | 签名类型，默认为MD5，支持HMAC-SHA256和MD5。注意此处需与统一下单的签名类型一致 |
| 签名 | paySign | 是 | String(64) | C380BEC2BFD727A4B6845133519F3AD6 | 签名，详见[签名生成算法](https://pay.weixin.qq.com/doc/v2/merchant/4011985891.md) |

举例如下:

```
//key：商户平台设置的apiv2密钥，可参考该文档设置：https://kf.qq.com/faq/180830UVRZR7180830Ij6ZZz.html
stringSignTemp = "appId=wx619a931576afe069&nonceStr=RIPb5Upk3ku7knU6&package=prepay_id=wx2611334392677180ea59742b3744840000&signType=MD5&timeStamp=1774495197&key=qazwsxedcrfvtgbyhnujmikolp111111"

//MD5签名方式
paySign = MD5(stringSignTemp).toUpperCase() = "1F2E9533D7D483FBCDBD0B9BCA76F97D"

//HMAC-SHA256签名方式，signType改为HMAC-SHA256，部分语言的hmac方法生成结果二进制结果，需要调对应函数转化为十六进制字符串
paySign = hash_hmac("sha256",stringSignTemp,key).toUpperCase()="4A04CF5B979A4920409A9DEF2322C33C96DE8E9A96830E648719C60EF991700E"
```

参数名注意大小写，详细签名算法请参考“[签名算法](https://pay.weixin.qq.com/doc/v2/merchant/4011985891.md)”说明

2、返回结果值说明

| 返回值 | 描述 |
| --- | --- |
| get\_brand\_wcpay\_request:ok | 支付成功 |
| get\_brand\_wcpay\_request:cancel | 支付过程中用户取消 |
| get\_brand\_wcpay\_request:fail | 支付失败 |

注：JS API的返回结果get\_brand\_wcpay\_request:ok仅在用户成功完成支付时返回。由于前端交互复杂，get\_brand\_wcpay\_request:cancel或者get\_brand\_wcpay\_request:fail可以统一处理为用户遇到错误或者主动放弃，不必细化区分。

示例代码如下：

```

function onBridgeReady(){
   WeixinJSBridge.invoke(
      'getBrandWCPayRequest', {
         "appId":"wx2421b1c4370ec43b",     //公众号ID，由商户传入
         "timeStamp":"1395712654",         //时间戳，自1970年以来的秒数
         "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串
         "package":"prepay_id=u802345jgfjsdfgsdg888",
         "signType":"MD5",         //微信签名方式：
         "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名
      },
      function(res){
      if(res.err_msg == "get_brand_wcpay_request:ok" ){
      // 使用以上方式判断前端返回,微信团队郑重提示：
            //res.err_msg将在用户支付成功后返回ok，但并不保证它绝对可靠。
      }
   });
}
if (typeof WeixinJSBridge == "undefined"){
   if( document.addEventListener ){
       document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
   }else if (document.attachEvent){
       document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
       document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
   }
}else{
   onBridgeReady();
}

```

3、客户端唤起支付常见错误

| 序号 | 错误描述 | 解决方法 |
| --- | --- | --- |
| 1 | 调用支付JSAPI缺少参数：total\_fee | 1、请检查预支付会话标识prepay\_id是否已失效<br>2、请求的appid与下单接口的appid是否一致 |