這篇文章主要介紹微信開發(fā)之H5支付的示例分析,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
目前創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、藁城網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。H5支付是基于公眾號基礎(chǔ)開發(fā)的一種非微信內(nèi)瀏覽器支付方式(需要單獨申請支付權(quán)限),可以滿足在微信外的手機(jī)H5頁面進(jìn)行微信支付的需求。。
測試地址
http://wxpay.weixin.qq.com/pub_v2/pay/wap.v2.php
http://wxpay.weixin.qq.com/mch/pay/h6.v2.php
效果圖
流程圖
主要是先定義商品的名稱及價格,以及交易號。代碼如下。
include_once("../WxPayPubHelper/WxPayPubHelper.php"); //使用統(tǒng)一支付接口 $unifiedOrder = new UnifiedOrder_pub(); //設(shè)置統(tǒng)一支付接口參數(shù) //設(shè)置必填參數(shù) //appid已填,商戶無需重復(fù)填寫 //mch_id已填,商戶無需重復(fù)填寫 //noncestr已填,商戶無需重復(fù)填寫 //spbill_create_ip已填,商戶無需重復(fù)填寫 //sign已填,商戶無需重復(fù)填寫 $unifiedOrder->setParameter("body","H5支付測試");//商品描述 $timeStamp = time(); $out_trade_no = WxPayConf_pub::APPID."$timeStamp"; $unifiedOrder->setParameter("out_trade_no","$out_trade_no");//商戶訂單號 $unifiedOrder->setParameter("total_fee","1");//總金額 //$unifiedOrder->setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址 $unifiedOrder->setParameter("trade_type","WAP");//交易類型 //非必填參數(shù),商戶可根據(jù)實際情況選填 $unifiedOrder->setParameter("device_info","100001");//設(shè)備號
上述參數(shù)最終封裝成如下類似XML參數(shù)
1 //100001 1237905502
將上述XML發(fā)送給統(tǒng)一支付接口
https://api.mch.weixin.qq.com/pay/unifiedorder
得到如下XML數(shù)據(jù)
這樣就得到一個prepayid
商戶server調(diào)用統(tǒng)一下單接口請求訂單,api參見公共api【統(tǒng)一下單】(接口中trade_type需定義為WAP),微信會返回給商戶prepayid,商戶按固定格式生成deeplink,通過用戶點擊deeplink來調(diào)起微信支付。
deeplink格式:
weixin://wap/pay?appid%3Dwxf5b5e87a6a0fde94%26noncestr%3D123%26package%3D123%26prepayid%3Dwx20141203201153d7bac0d2e10889028866%26sign%3D6AF4B69CCC30926F85770F900D098D64%26timestamp%3D1417511263
生成deeplink 的步驟如下:
步驟1:按URL 格式組裝參數(shù), $value 部分進(jìn)行URL 編碼,生成string1:
string1 : key1=Urlencode($value1)&key2=Urlencode($value2、&...
步驟2:對string1 作整體的Urlencode,生成string2:
String2=Urlencode(string1);
步驟3:拼接前綴,生成最終deeplink
舉例如下:
String1:
appid=wxf5b5e87a6a0fde94&noncestr=123&package=WAP&prepayid=wx201412101630480281750c890475924233&sign=53D411FB74FE0B0C79CC94F2AB0E2333×tamp=1417511263
再對整個string1 做一次URLEncode
string2:
appid%3Dwxf5b5e87a6a0fde94%26noncestr%3D123%26package%3DWAP%26prepayid%3Dwx201412101630480281750c890475924233%26sign%3D53D411FB74FE0B0C79CC94F2AB0E2333%26timestamp%3D1417511263
再加上協(xié)議頭weixin://wap/pay? 得到最后的deeplink
weixin://wap/pay?appid%3Dwxf5b5e87a6a0fde94%26noncestr%3D123%26package%3DWAP%26prepayid%3Dwx201412101630480281750c890475924233%26sign%3D53D411FB74FE0B0C79CC94F2AB0E2333%26timestamp%3D1417511263
字段名 | 變量名 | 必填 | 類型 | 示例值 | 描述 |
---|---|---|---|---|---|
公眾賬號ID | appid | 是 | String(32) | wx8888888888888888 | 微信分配的公眾賬號ID |
隨機(jī)字符串 | noncestr | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 隨機(jī)字符串,不長于32位。推薦隨機(jī)數(shù)生成算法 |
訂單詳情擴(kuò)展字符串 | package | 是 | String(32) | WAP | 擴(kuò)展字段,固定填寫WAP |
預(yù)支付交易會話標(biāo)識 | prepayid | 是 | String(64) | wx201410272009395522657a690389285100 | 微信統(tǒng)一下單接口返回的預(yù)支付回話標(biāo)識,用于后續(xù)接口調(diào)用中使用,該值有效期為2小時 |
簽名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 簽名,詳見簽名生成算法 |
時間戳 | timestamp | 是 | String(32) | 1414561699 | 當(dāng)前的時間,其他詳見時間戳規(guī)則 |
開發(fā)文檔:https://pay.weixin.qq.com/wiki/doc/api/wap.php?chapter=15_1
1、用戶在商戶側(cè)完成下單,使用微信支付進(jìn)行支付
2、由商戶后臺向微信支付發(fā)起下單請求(調(diào)用統(tǒng)一下單接口)注:交易類型trade_type=MWEB
3、微信支付校驗商戶權(quán)限
4、統(tǒng)一下單接口返回支付相關(guān)參數(shù)給商戶后臺,如支付跳轉(zhuǎn)url(參數(shù)名“mweb_url”,即流程圖中的微信中轉(zhuǎn)頁面地址)
5、商戶后臺收到統(tǒng)一下單接口返回參數(shù),將mweb_url返回給前端
6、商戶通過前端頁面訪問微信中轉(zhuǎn)頁面mweb_url(此步驟微信支付會校驗refer,以判斷請求來源是否合法)
7、由中轉(zhuǎn)頁面mweb_url主動喚起微信支付收銀臺
8、微信支付收銀臺被喚起同時關(guān)閉mweb_url中轉(zhuǎn)頁面
9、用戶在微信支付收銀臺完成支付
以上是“微信開發(fā)之H5支付的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!