微信公眾號支付休涤,簡單說主要分為如下幾個步驟.
1.openId的獲取
openId是微信用戶與特定公眾號對應(yīng)關(guān)系的記錄幢码。
1.1設(shè)置回調(diào)域名
官方解釋:用戶在網(wǎng)頁授權(quán)頁同意授權(quán)給公眾號后症歇,微信會將授權(quán)數(shù)據(jù)傳給一個回調(diào)頁面,回調(diào)頁面需在此域名下,以確保安全可靠卡啰∷回調(diào)頁面域名不支持IP地址脚作。1.2設(shè)置支付授權(quán)目錄
2.通過統(tǒng)一下單接口獲取prepay_id
其中統(tǒng)一下單接口鏈接URL
統(tǒng)一下單接口一般放在應(yīng)用服務(wù)器端處理,可以用java以及php等語言處理缔刹。在所有必傳參數(shù)中球涛,只有openId需要從前端頁面獲取,其它參數(shù)是與公眾號與付款信息相關(guān)校镐。
3.調(diào)用getBrandWCPayRequest亿扁,監(jiān)聽支付是否成功
getBrandWCPayRequest需要用到的參數(shù)為:
appId:公眾號id
timeStamp:時間戳
nonceStr:隨機字符串
package: prepay_id(示例值prepay_id=123456789)
signType: MD5或者HMAC-SHA256
paySign:對appId,timeStamp,nonceStr,package,signType參數(shù)按照參數(shù)名ASCII碼從小到大排序(字典序),使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串再拼接商戶密鑰鸟廓,然后進行MD5(或HMAC-SHA256)加密从祝,全部轉(zhuǎn)換成大寫即可。
微信支付簽名驗證地址
微信瀏覽器默認(rèn)內(nèi)置WeixinJSBridge對象引谜,在其他瀏覽器中無效牍陌。
微信示例代碼如下:
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId":"wx2421b1c4370ec43b", //公眾號名稱,由商戶傳入
"timeStamp":"1395712654", //時間戳员咽,自1970年以來的秒數(shù)
"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();
}