prepay id为空php,微信公众号支付踩坑笔记
微信公眾號支付,簡單說主要分為如下幾個步驟.
1.openId的獲取
openId是微信用戶與特定公眾號對應關系的記錄。
1.1設置回調域名
官方解釋:用戶在網頁授權頁同意授權給公眾號后,微信會將授權數據傳給一個回調頁面,回調頁面需在此域名下,以確保安全可靠。回調頁面域名不支持IP地址。
回調頁設置截圖
1.2設置支付授權目錄
2.通過統一下單接口獲取prepay_id
其中統一下單接口鏈接URL
統一下單接口一般放在應用服務器端處理,可以用java以及php等語言處理。在所有必傳參數中,只有openId需要從前端頁面獲取,其它參數是與公眾號與付款信息相關。
3.調用getBrandWCPayRequest,監聽支付是否成功
getBrandWCPayRequest需要用到的參數為:
appId:公眾號id
timeStamp:時間戳
nonceStr:隨機字符串
package: prepay_id(示例值prepay_id=123456789)
signType: MD5或者HMAC-SHA256
paySign:對appId,timeStamp,nonceStr,package,signType參數按照參數名ASCII碼從小到大排序(字典序),使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串再拼接商戶密鑰,然后進行MD5(或HMAC-SHA256)加密,全部轉換成大寫即可。
微信支付簽名驗證地址
微信瀏覽器默認內置WeixinJSBridge對象,在其他瀏覽器中無效。
微信示例代碼如下:
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId":"wx2421b1c4370ec43b", //公眾號名稱,由商戶傳入
"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();
}
總結
以上是生活随笔為你收集整理的prepay id为空php,微信公众号支付踩坑笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记,当找不到图片时,显示默认图片
- 下一篇: 计算机报名照片在线修图,详细!2020国