亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 建站經驗 > 正文

淺談使用PHP開發微信支付的流程

2024-04-25 20:42:17
字體:
來源:轉載
供稿:網友

下面以PHP語言為例,對微信支付的開發流程進行一下說明。

1.獲取訂單信息

2.根據訂單信息和支付相關的賬號生成sign,并且生成支付參數

3.將支付參數信息POST到微信服務器,獲取返回信息

4.根據返回信息生成相應的支付代碼(微信內部)或是支付二維碼(非微信內),完成支付。

下面分步驟的講一下:

1.微信支付中相關的必須的訂單參數有三個,分別是:body(商品名或訂單描述),out_trade_no(一般為訂單號)和total_fee(訂單金額,單位“分”,要注意單位問題),在不同的應用中,首先要做的就是獲取訂單中的相關信息,為支付參數生成做準備。

2.其他必須的支付參數有 appid(微信appid),mch_id(申請成功后告知),device_info(web端和微信端該參數都是統一的,為大寫的”WEB“),trade_type(根據使用場景不同,該值也是不同的,微信外部為”NATIVE“,微信內部為”JSAPI“),nonce_str(32位隨機字符串),spbill_create_ip(發起支付的終端IP,即服務器IP),notify_url(支付回調地址,微信服務器通知網站支付完成與否,修改訂單狀態),sign(簽名),還有一個需要說明的地方,如果trade_type為JSAPI的話,openid為必填的參數。

簽名算法是比較容易出錯的地方,在于簽名步驟繁瑣,其實很關鍵的是,sign不參與簽名

A:將1、2中提到的除sign外的參數賦值,放到一個數組array里面,按照字典順序排序,其實就是鍵值按照A—Z的順序進行排序。

B:將數組轉換成字符串string,格式為 k1=v1&k2=v2&...kN=vN

C:在此string后加上KEY值(在微信支付商戶后臺用戶自己設定的)現在string = k1=v1&k2=v2&...kN=vN&key=KEY。

D:string = md5(string)

E: sign = strtoupper(string)

至此,sign生成完畢。

將sign添加到array數組里面生成新的數組。將該數組轉換為XML。至此,微信支付的參數準備工作完成。

3.將2中生成的XML,使用POST的方式發送請求到微信(https://api.mch.weixin.qq.com/pay/unifiedorder),獲取返回的XML信息,將該信息轉換成數組格式方便操作。返回的XML信息如下:

<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <appid><![CDATA[wx2421b1c4370ec43b]]></appid> <mch_id><![CDATA[10000100]]></mch_id> <nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str> <sign><![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]></sign> <result_code><![CDATA[SUCCESS]]></result_code> <prepay_id><![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id> <trade_type><![CDATA[JSAPI]]></trade_type> </xml>

如果是trade_type==native支付的話,還會多一個參數code_url,該URL為微信掃碼支付的地址。

4.下面就是支付的過程了。

如果trade_type==native,那么使用一些方式將code_url轉換成二維碼,使用微信掃碼就可以了,如果是微信內部點擊支付的話,需要調用微信js-sdk中的相關東西,這一步中最關鍵是生成一個json格式的字符串。

首先要生成轉換json字符串的數組array_jsapi。

A:該數組的參數包括:appId,timeStamp,nonceStr,package,signType(默認為”MD5“),要注意大小寫和上面的數組里面是不一樣的。

B:使用該數組生成paySign參數,簽名方式同上。

C:將paySign參數追加到array_jsapi數組中。

D:將該數組使用json_encode格式化為字符串js_string。

完成上面的工作,就可以在微信內部進行支付了。

下面為相關支付的示例代碼:

<script type='text/javascript'> function jsApiCall() { WeixinJSBridge.invoke( 'getBrandWCPayRequest', $js_string, function(res){ WeixinJSBridge.log(res.err_msg); if(res.err_msg=='get_brand_wcpay_request:ok') { alert('支付成功'); } else { alert('支付失敗'); } } ); } function callpay() { if (typeof WeixinJSBridge == 'undefined'){ if( document.addEventListener ){ document.addEventListener('WeixinJSBridgeReady', jsApiCall, false); }else if (document.attachEvent){ document.attachEvent('WeixinJSBridgeReady', jsApiCall); document.attachEvent('onWeixinJSBridgeReady', jsApiCall); } }else{ jsApiCall(); } } </script>

代碼中js_string即為我們生成的字符串。

HTML代碼中調用callpay()函數發起支付。

這樣微信支付的支付工作就完成了。

下面是回調工作,該功能確保訂單支付成功后,有正確的狀態顯示給用戶。

支付完成后,微信使用POST請求,將支付結果反饋給網站服務器,網站服務器獲取POST信息,根據支付成功與否,來確定是否修改訂單信息。

A:將POST參數中的sign去除,并且記錄下來該值。

B:對剩余的參數進行簽名

C:將簽名結果和POST中的sign進行比對,相同說明簽名正確,根據支付結果修改訂單狀態。

E:返回XML信息給微信,確保微信知道網站已經收到該通知,避免微信再次推送POST,示例如下:

<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> </xml>
如果失敗,則返回

<xml> <return_code><![CDATA[FAIL]]></return_code> <return_msg><![CDATA[失敗原因]]></return_msg> </xml>

至此,微信支付的整個開發介紹完畢。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲综合久久筱田步美| 日韩免费精品视频| 欧美成人剧情片在线观看| 久久久久成人网| 91大神福利视频在线| 1769国产精品| 成人在线小视频| 国产精品丝袜白浆摸在线| 日韩欧美aⅴ综合网站发布| 不卡在线观看电视剧完整版| 亚洲人成五月天| 日韩av成人在线| 亚洲xxxx18| 国产精品都在这里| 在线精品国产成人综合| 国产精品激情自拍| 久久久免费av| 成人精品一区二区三区| 亚洲精品永久免费精品| 国产精品精品一区二区三区午夜版| 日韩在线观看视频免费| 中文字幕亚洲综合久久| 国产在线精品一区免费香蕉| 国产999精品久久久影片官网| 精品一区二区三区三区| 日韩在线视频免费观看高清中文| 日韩电视剧免费观看网站| 亚洲福利视频网| 色诱女教师一区二区三区| 欧美体内谢she精2性欧美| 久久亚洲国产精品成人av秋霞| 欧美日韩性视频在线| 不卡在线观看电视剧完整版| 亚洲国语精品自产拍在线观看| 亚洲色图狂野欧美| 日韩在线观看免费av| 亚洲丁香婷深爱综合| 日韩av手机在线| 亚洲а∨天堂久久精品9966| 午夜精品一区二区三区在线视频| 国产成人在线亚洲欧美| 久久偷看各类女兵18女厕嘘嘘| 精品国产91久久久久久| 国产偷国产偷亚洲清高网站| 欧美日本国产在线| 日本一区二区三区四区视频| 精品亚洲va在线va天堂资源站| 亚洲成人精品av| 国产成人精品一区二区在线| 中文字幕国产精品久久| 在线日韩欧美视频| 欧美性在线视频| 国产精品视频区1| 久久九九免费视频| 97精品久久久中文字幕免费| 欧美精品videos性欧美| 久久国产精品免费视频| 亚洲欧美三级在线| 全色精品综合影院| 日韩不卡在线观看| 成人春色激情网| 97高清免费视频| 国产成人精彩在线视频九色| 欧美午夜精品久久久久久浪潮| 国产精品69精品一区二区三区| 日韩电影在线观看永久视频免费网站| 欧美激情国产精品| 丝袜一区二区三区| 亚洲va码欧洲m码| 97久久国产精品| 久久亚洲精品中文字幕冲田杏梨| 538国产精品一区二区在线| 久久精品美女视频网站| 91久久国产精品91久久性色| 亚洲国产日韩欧美在线99| 亚洲第一视频网| 国产精品成人av在线| 91精品中国老女人| 成人午夜在线视频一区| 日韩视频―中文字幕| 日韩专区中文字幕| 亚洲精品国产精品国自产观看浪潮| 国产91精品久久久| 国产精品无av码在线观看| 欧美在线视频在线播放完整版免费观看| 日韩在线观看免费高清| 久久精品国产91精品亚洲| 亚洲人a成www在线影院| 欧美激情一二三| 97在线观看视频| 国产极品精品在线观看| 亚洲最大中文字幕| 在线观看久久久久久| 日韩免费精品视频| 日本亚洲欧美三级| 精品久久久久久| 日本韩国欧美精品大片卡二| 久久久999精品| 欧美影院久久久| 亚洲国产婷婷香蕉久久久久久| 久热精品视频在线观看一区| 国产精品91视频| 日韩av在线免播放器| 久久久精品999| 国产精品夜间视频香蕉| 中文字幕精品一区久久久久| 欧美日韩激情视频8区| 国产成人在线视频| 国产精品久久久久久亚洲影视| 亚洲丝袜av一区| 欧美一级电影在线| 黑人狂躁日本妞一区二区三区| 亚洲国产精品国自产拍av秋霞| 亚洲欧美国产一本综合首页| 尤物九九久久国产精品的分类| 这里只有精品在线观看| 国产香蕉97碰碰久久人人| 欧美在线亚洲在线| 51色欧美片视频在线观看| 国产97在线观看| 9.1国产丝袜在线观看| 久久亚洲成人精品| 中文字幕久热精品视频在线| 亚洲一区二区黄| 欧美性生交xxxxxdddd| 久久国产天堂福利天堂| 欧美激情综合色综合啪啪五月| 欧美床上激情在线观看| 亚洲一区二区三区香蕉| 欧美最猛性xxxxx(亚洲精品)| 日本高清不卡在线| 国产a∨精品一区二区三区不卡| 午夜精品久久久久久久99热浪潮| 在线精品高清中文字幕| 91av视频在线免费观看| 欧美精品在线极品| 亚洲欧美三级伦理| 国产一区二区丝袜| 亚洲免费福利视频| 96sao精品视频在线观看| 成人午夜小视频| 国产精品h在线观看| 中文在线资源观看视频网站免费不卡| 色樱桃影院亚洲精品影院| 在线精品视频视频中文字幕| 成人h片在线播放免费网站| 日韩电影免费观看中文字幕| 欧美性生交大片免网| 亚洲伊人久久综合| 亚洲天堂开心观看| 日韩免费在线免费观看| 国产精品久久久久久久久久小说| 日韩精品高清视频| 欧美另类在线播放| 97久久国产精品| 中文字幕在线观看日韩| 爽爽爽爽爽爽爽成人免费观看| 2019亚洲日韩新视频| 91精品在线影院| 91亚洲国产成人精品性色| 亚洲欧美日韩网| 国产精品av在线| 亚洲一区二区日本| 久久久精品国产网站|