記錄微信公衆號h5支付(前端部分)
- 前一段時間換了一家公司,剛來給了一個項目,h5移動端頁面,涉及登錄註冊、微信綁定、購買等。微信支付以前沒作過,不過比較簡單,在這裏記錄一下。
先上官網文檔
第一步,先拿到code,拿到code傳給後臺。
- 這段代碼填上就能夠用,當用戶確認受權之後返回定義的url後,url後就有code參數,而後吧code提出來。
var appid = "公衆號id";
var redirect_uri = encodeURIComponent("成功之後返回地址");
window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appid + "&redirect_uri=" + redirect_uri + "&response_type=code&scope=snsapi_userinfo#wechat_redirect"
複製代碼
//轉碼
function parse_url(url) { //定義函數
var pattern = /(\w+)=(\w+)/ig; //定義正則表達式
var parames = {}; //定義數組
url.replace(pattern, function (a, b, c) {
parames[b] = c;
});
return parames; //返回這個數組.
}
//獲取當前url 取到code
var url = window.location.href;
var params = parse_url(url);
//params.code 就是當前的code
複製代碼
var appIdVal = appId;
var timeStampVal = timeStamp;
var nonceStrVal = nonceStr;
var packageVal = package;
var signTypeVal = signType;
var paySignVal = paySign;
複製代碼
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId":"", //公衆號id,由商戶傳入
"timeStamp":"", //時間戳,自1970年以來的秒數
"nonceStr":"", //隨機串
"package":"", //訂單詳情擴展字符串
"signType":"", //微信簽名方式:
"paySign":"" //微信簽名
},
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();
}
複製代碼
- 樓主遇到的問題第是公衆號配置問題,由於公衆號不是我本身配置,前端部分寫好後一直拉不起支付,後來也是各類百度,最後確認是受權頁面回調地址錯誤。
- 至於後臺樓主就不太清楚了,沒研究過。在這裏記錄一下,但願對其餘人有點幫助。