最新更新時(shí)間:2020.10.10 版本說明
在微信瀏覽器里面打開H5網(wǎng)頁中執(zhí)行JS調(diào)起支付
1. WeixinJSBridge內(nèi)置對(duì)象在其他瀏覽器中無效。
2. 列表中參數(shù)名區(qū)分大小,大小寫錯(cuò)誤簽名驗(yàn)證會(huì)失敗。
參數(shù)名 | 變量 | 類型 | 必填 | 描述 |
---|---|---|---|---|
應(yīng)用ID | appId | string[1,32] | 是 | 微信分配的應(yīng)用ID 示例值:wx8888888888888888 |
時(shí)間戳 | timeStamp | string[1,32] | 是 | 當(dāng)前的時(shí)間,其他詳見時(shí)間戳規(guī)則 示例值:1414561699 |
訂單詳情擴(kuò)展字符串 | package | string[1,128] | 是 | 統(tǒng)一下單接口返回的prepay_id參數(shù)值,提交格式如:prepay_id=*** 示例值:prepay_id=123456789 |
隨機(jī)字符串 | nonce_str | string[1,32] | 是 | 隨機(jī)字符串,不長(zhǎng)于32位。推薦隨機(jī)數(shù)生成算法 示例值:5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
簽名 | sign | string[1,64] | 是 | 簽名,詳見簽名生成算法 示例值:C380BEC2BFD727A4B6845133519F3AD6 |
簽名類型 | sign_type | string[1,32] | 否 | 簽名類型,默認(rèn)為MD5,支持HMAC-SHA256和MD5。注意此處需與統(tǒng)一下單的簽名類型一致。 示例值:HMAC-SHA256 |
公眾號(hào)id
時(shí)間戳
隨機(jī)字符串
訂單詳情擴(kuò)展字符串
wx8888888888888888
1414561699
5K8264ILTKch16CQ2502SI8ZNMTM67VS
prepay_id=123456789
簽名方式與請(qǐng)求數(shù)據(jù)簽名一致,使用商戶私鑰對(duì)待簽名串進(jìn)行SHA256 with RSA簽名,并對(duì)簽名結(jié)果進(jìn)行Base64編碼得到簽名值。
網(wǎng)頁內(nèi)支付接口err_msg返回結(jié)果值說明:
返回值 | 描述 |
---|---|
get_brand_wcpay_request:ok | 支付成功 |
get_brand_wcpay_request:cancel | 支付過程中用戶取消 |
get_brand_wcpay_request:fail | 支付失敗 |
注:JS API的返回結(jié)果get_brand_wcpay_request:ok僅在用戶成功完成支付時(shí)返回。由于前端交互復(fù)雜,get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以統(tǒng)一處理為用戶遇到錯(cuò)誤或者主動(dòng)放棄,不必細(xì)化區(qū)分。
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId":"wx2421b1c4370ec43b", //公眾號(hào)名稱,由商戶傳入
"timeStamp":"1395712654", //時(shí)間戳,自1970年以來的秒數(shù)
"nonceStr":"e61463f8efa94090b1f366cccfbbb444", //隨機(jī)串
"package":"prepay_id=u802345jgfjsdfgsdg888",
"signType":"RSA", //微信簽名方式:
"paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信簽名
},
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ) {} // 使用以上方式判斷前端返回,微信團(tuán)隊(duì)鄭重提示:res.err_msg將在用戶支付成功后返回 ok,但并不保證它絕對(duì)可靠。
}
);
}
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();
}