摘要:快應(yīng)用微信支付首先是服務(wù)端完成支付服務(wù)端的接入,接入完成以后,服務(wù)器要完成的工作是接收來自客戶端的支付請求,然后生成一個訂單,之后把訂單傳給微信的服務(wù)器,微信會返回一個,服務(wù)器需要把這個返回給客戶端完成一個中間跳轉(zhuǎn)頁面,中間頁需要在加載
快應(yīng)用微信H5支付
1.首先是服務(wù)端完成支付服務(wù)端的接入,接入完成以后,服務(wù)器要完成的工作是接收來自客戶端的支付請求,然后生成一個訂單,之后把訂單傳給微信的服務(wù)器,微信會返回一個mweb_url,服務(wù)器需要把這個mweb_url返回給客戶端;
data:{ orderId :56955, url:"https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx13101012415473b5899768303880086259&package=1999421602" }
2.完成一個中間跳轉(zhuǎn)頁面,中間頁需要在加載完成的時候從頁面的get參數(shù)中解析出 mweb_url , 然后自動向這個url跳轉(zhuǎn);生成一個https://my.demain.com/html/bo... H5鏈接
//中間頁面H5的邏輯 var payUrl = decodeURIComponent(getQueryString("mweb_url")) if (payUrl !== "null") { window.location.replace(payUrl) } function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var l = decodeURI(window.location.search); var r = l.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; }
3.關(guān)于這個中間頁:
為什么需要這個中間頁?
因為微信h5支付拉起支付界面的方式就是向mweb_url跳轉(zhuǎn),不過因為微信會通過ref做防盜鏈檢查,因為跳轉(zhuǎn)動作需要在開發(fā)者的頁面中完成
這個中間頁什么時候會被加載運行?調(diào)用微信支付的pay接口之后,平臺會自動加載運行這個頁面
加載運行這個中間頁的時候,會拿到哪些參數(shù)?調(diào)用微信支付的pay接口時傳入的參數(shù),會全部作為get參數(shù)傳給這個頁面
4.在快應(yīng)用中進行配置中間頁地址,manifest.json中聲明wxpay這個feature時填上
{ "name": "service.wxpay", "params": { "package": "you.package.name", "sign": "abcdefg", "url": "https://my.demain.com/html/bookSoter/index.html" } }
5.調(diào)用官方文檔提供的wxpay.getType()方法
wechatPayHandle(){ var payType = wxpay.getType(); if (payType === "MWEB") { wxpay.pay({ //微信網(wǎng)頁支付的prepayId prepayid: "wx13101012415473b5899768303880086259", extra: { //傳遞給支付頁面的自定義參數(shù), 根據(jù)需要進行設(shè)置, 會被urlEncode之后拼接在配置的url尾部 mweb_url: "https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx13101012415473b5899768303880086259&package=1999421602" }, fail: function (data, code) { console.log(`WX H5 PAY handling fail, code = ${code}`) }, cancel: function () { console.log("WX H5 PAY handling cancel") }, success: function (data) { //H5方式下,支付成功的回調(diào)僅僅只是指將訂單遞交給微信,并不意味著支付已經(jīng)成功完成 console.log(data) } }) } }
6.如果pay()方法走成功以后會返回一個data,不需要做任何操作和跳轉(zhuǎn),就可以喚起微信支付,返回的格式如下:
{ finl_url:"https://my.demain.com/html/bookSoter/index.html?repayid=wx13101012415473b5899768303880086259&trade_type=MWEB&mweb_url=https%3A%2F%2Fwx.tenpay.com%2Fcgi-bin%2Fmmpayweb-bin%2Fcheckmweb%3Fprepay_id%3Dwx13101012415473b5899768303880086259%26package%1999421602" }
7.如果走了success回調(diào)函數(shù)以后,微信喚起不成功存在可能有
生成的H5中間頁面的域名沒有在微信開發(fā)平臺上面配置白名單;
服務(wù)端代碼發(fā)布環(huán)境和你測試環(huán)境在同一個局域網(wǎng)里面
8.如果走了fail回調(diào)函數(shù),看返回的code值
900 在manifest.json中配置的應(yīng)用簽名有誤,無法解析
901 在manifest.json中配置的應(yīng)用包名有誤
1000 微信未安裝
1001 用于微信網(wǎng)頁支付的url配置找不到
2001 訂單已經(jīng)提交給微信,但是微信返回錯誤, 可能的原因:簽名錯誤、未注冊APPID、項目設(shè)置APPID不正確、注冊的APPID與設(shè)置的不匹配、其他異常等。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/97730.html
摘要:中國互聯(lián)網(wǎng)絡(luò)信息中心發(fā)布的中國互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計報告顯示,截至年月,我國網(wǎng)民規(guī)模達億人,微信月活億支付寶月活億百度月活億另一方面,中國手機占智能手機整體的比例超過,月活約億。在年末正式發(fā)布了面向未來的跨端的。 開源中國專訪:Chameleon原理首發(fā),其它跨多端統(tǒng)一框架都是假的? 原創(chuàng): 嘉賓-張楠 開源中國 以往我們說某一功能跨多端,往往是指在諸如 PC、移動等不同類型的設(shè)備之...
摘要:微信支付方式付款碼支付適用于線下場所支付支付是指商戶通過調(diào)用微信支付提供的接口,在支付場景中調(diào)起微信支付模塊完成收款。主要用于觸屏版的手機瀏覽器請求微信支付的場景。可以方便的從外部瀏覽器喚起微信支付。 微信支付方式(https://pay.weixin.qq.com/sta...): 1、付款碼支付————————適用于線下場所 2、JSAPI支付————————JSAPI支付是指商戶...
摘要:注冊賬號首先你需要一個手機廠商對應(yīng)開發(fā)者賬號和快應(yīng)用賬號由于博主的手機是華為,就在華為官網(wǎng)注冊一個個人開發(fā)者賬號就好啦,這個部分就不具體展開了。 博主的開發(fā)及調(diào)試環(huán)境是 macOS 10.13.4 + Chrome/65.0.3325.181 + honorV9 EMUI8.0.0(Android8.0.0)本文適合有一定前端開發(fā)經(jīng)驗的小伙伴(有一定經(jīng)驗看原文檔太累贅了,而且環(huán)境配置部...
閱讀 1865·2019-08-30 15:53
閱讀 3193·2019-08-30 15:44
閱讀 2806·2019-08-26 13:31
閱讀 1949·2019-08-26 12:10
閱讀 792·2019-08-26 11:01
閱讀 2120·2019-08-23 15:32
閱讀 1585·2019-08-23 13:43
閱讀 2529·2019-08-23 11:58