在微信浏览器里面打开H5网页中执行JS调起支付。接口输入输出数据格式为JSON。
注意:WeixinJSBridge内置对象在其他浏览器中无效。
getBrandWCPayRequest参数以及返回值定义:
1、网页端接口请求参数列表(参数需要重新进行签名计算,参与签名的参数为:appId、timeStamp、nonceStr、package、signType,参数区分大小写。)
|
公众号id | appId | 是 | String(16) | wx8888888888888888 | 填写下单时传入的appid或sub_appid,且当前实际调起支付的公众号appid必需是appid或sub_appid之一,否则无法调起支付。 注意:appId参数为大写字母“I” |
时间戳 | timeStamp | 是 | String(32) | 1414561699 | 当前的时间,其他详见时间戳规则 |
随机字符串 | nonceStr | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位。推荐随机数生成算法 |
订单详情扩展字符串 | package | 是 | String(128) | prepay_id=123456789 | 统一下单接口返回的prepay_id参数值,提交格式如:prepay_id=*** |
签名方式 | signType | 是 | String(32) | MD5 | 签名类型,默认为MD5,支持HMAC-SHA256和MD5。 注意此处需与统一下单的签名类型一致 |
签名 | paySign | 是 | String(64) | C380BEC2BFD727A4B6845133519F3AD6 | 签名,详见签名生成算法 |

1//key:合作伙伴平台设置的apiv2密钥,可参考该文档设置:https://kf.qq.com/faq/180830UVRZR7180830Ij6ZZz.html
2stringSignTemp = "appId=wx619a931576afe069&nonceStr=RIPb5Upk3ku7knU6&package=prepay_id=wx2611334392677180ea59742b3744840000&signType=MD5&timeStamp=1774495197&key=qazwsxedcrfvtgbyhnujmikolp111111"
3
4//MD5签名方式
5paySign = MD5(stringSignTemp).toUpperCase() = "1F2E9533D7D483FBCDBD0B9BCA76F97D"
6
7//HMAC-SHA256签名方式,signType改为HMAC-SHA256,部分语言的hmac方法生成结果二进制结果,需要调对应函数转化为十六进制字符串
8paySign = hash_hmac("sha256",stringSignTemp,key).toUpperCase()="4A04CF5B979A4920409A9DEF2322C33C96DE8E9A96830E648719C60EF991700E"参数名注意大小写,详细签名算法请参考“签名算法”说明
|
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可以统一处理为用户遇到错误或者主动放弃,不必细化区分。

1
2function onBridgeReady(){
3 WeixinJSBridge.invoke(
4 'getBrandWCPayRequest', {
5 "appId":"wx2421b1c4370ec43b",
6 "timeStamp":"1395712654",
7 "nonceStr":"e61463f8efa94090b1f366cccfbbb444",
8 "package":"prepay_id=u802345jgfjsdfgsdg888",
9 "signType":"MD5",
10 "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89"
11 },
12 function(res){
13 if(res.err_msg == "get_brand_wcpay_request:ok" ){
14
15
16 }
17 });
18}
19if (typeof WeixinJSBridge == "undefined"){
20 if( document.addEventListener ){
21 document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
22 }else if (document.attachEvent){
23 document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
24 document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
25 }
26}else{
27 onBridgeReady();
28}
29|
1 | 调用支付JSAPI缺少参数:total_fee | 1、请检查预支付会话标识prepay_id是否已失效 2、请求的appid与下单接口的appid是否一致 |