電話
13898888888
大家好呀!近在搞微信小程序支付,折騰了好幾天,終于搞定了!感覺有點(diǎn)小成就感,所以想跟大家分享一下我的經(jīng)驗(yàn),希望能幫到一些同樣在爬坑的小伙伴們。畢竟,這玩意兒看起來簡單,真上手了,細(xì)節(jié)巨多,容易讓人抓狂。
我用的是PHP,環(huán)境嘛,就普通的TP3.2.3,加上小程序,挺常見的組合。一開始,我看著文檔,各種API接口,感覺腦袋都大了。不過,慢慢捋順之后,發(fā)現(xiàn)其實(shí)沒那么難,主要就是幾個(gè)步驟,一步一步來,就OK啦!
關(guān)鍵的,你得有個(gè)微信支付商戶號(hào),這可是前提條件!沒有這個(gè),一切都是空談。申請(qǐng)流程網(wǎng)上都有,我就不贅述了,反正就是各種資料準(zhǔn)備,審核等待,挺常規(guī)的流程。
接下來,就是PHP的SDK了。我下載了一個(gè)PHP支付SDK,放到了項(xiàng)目目錄下(我的習(xí)慣是放在Library\Vendor目錄里),然后就開始“煉丹”了。哈哈,這個(gè)“煉丹”指的是寫代碼啦!
說真的,剛開始看那些代碼,密密麻麻的,各種參數(shù),各種數(shù),看得我頭都大了。但別怕,慢慢來,先理解整體流程,再細(xì)看代碼。
微信小程序支付,大致流程就是:小程序前端發(fā)起支付請(qǐng)求 → 后端服務(wù)器與微信支付服務(wù)器交互 → 微信支付服務(wù)器返回支付結(jié)果 → 后端服務(wù)器通知小程序支付結(jié)果。
是不是聽著有點(diǎn)繞?其實(shí)不難理解,簡單來說就是:
1. 小程序用戶點(diǎn)擊“支付”按鈕。
2. 小程序把訂單信息(比如商品ID、價(jià)格等等)發(fā)給我的后端服務(wù)器。
3. 我的后端服務(wù)器用PHP SDK調(diào)用微信支付API,生成預(yù)支付訂單。
4. 微信支付服務(wù)器返回預(yù)支付訂單信息,包含一個(gè)很重要的參數(shù):prepay_id。
5. 我的后端服務(wù)器把prepay_id以及一些其他參數(shù)(appId、timeStamp等等,這些參數(shù)需要自己組裝,文檔里都有)再發(fā)回小程序前端。
6. 小程序前端調(diào)用微信支付的JS API,喚起微信支付界面。
7. 用戶完成支付。
8. 微信支付服務(wù)器會(huì)通知我的后端服務(wù)器支付結(jié)果。
9. 我的后端服務(wù)器處理支付結(jié)果,更新訂單狀態(tài)等等。
是不是感覺清晰多了?其實(shí)核心就是這幾個(gè)步驟,看起來挺多,但是一個(gè)一個(gè)拆解,就so easy啦!
為了方便大家理解,我做個(gè)表格總結(jié)一下關(guān)鍵步驟:
| 步驟 | 小程序端 | 服務(wù)器端 (PHP) |
|---|---|---|
| 1. 發(fā)起支付 | 發(fā)送支付請(qǐng)求到服務(wù)器 | 接收支付請(qǐng)求 |
| 2. 生成預(yù)支付訂單 | 調(diào)用微信支付API,生成預(yù)支付訂單,獲取prepay_id | |
| 3. 返回支付參數(shù) | 接收支付參數(shù) (prepay_id等) | 返回prepay_id等參數(shù)給小程序 |
| 4. 喚起微信支付 | 調(diào)用微信支付JS API | |
| 5. 支付結(jié)果通知 | 接收微信支付結(jié)果通知,更新訂單狀態(tài) |
代碼方面,其實(shí)沒啥特別高深的技巧,主要就是按照文檔的API接口調(diào)用,然后處理參數(shù)。當(dāng)然,為了方便,我會(huì)把一些常用的功能封裝成類或者數(shù),這樣以后用起來也方便。比如說,我封裝了一個(gè)WeixinPay類,把一些公共方法都放進(jìn)去,這樣代碼看起來就比較清晰,也方便維護(hù)。
對(duì)了,還有一個(gè)很重要的點(diǎn)就是支付結(jié)果通知。微信支付服務(wù)器會(huì)主動(dòng)通知你的后端服務(wù)器支付結(jié)果,這步一定要處理好,不然可能會(huì)導(dǎo)致訂單狀態(tài)不準(zhǔn)確。我的處理方式是:先驗(yàn)證簽名,確保通知來自微信支付服務(wù)器,再更新訂單狀態(tài)。如果處理成功,記得返回給微信支付服務(wù)器“SUCCESS”,不然微信會(huì)一直重發(fā)通知,直到你返回“SUCCESS”為止。
其實(shí),整個(gè)過程中,讓我頭疼的就是各種參數(shù)的處理。微信支付的API文檔雖然很詳細(xì),但是參數(shù)很多,而且有些參數(shù)的含義不太容易理解,需要仔細(xì)研究文檔。還有就是簽名,這玩意兒,稍有不慎就會(huì)出錯(cuò),所以一定要仔細(xì)檢查參數(shù)是否正確,簽名算法是否正確。
微信小程序支付,說難也不難,說簡單也不簡單。關(guān)鍵在于理解整個(gè)流程,一步一步地來,細(xì)心處理好每一個(gè)細(xì)節(jié),相信你也能輕松搞定!
想問問大家,你們?cè)谖⑿判〕绦蛑Ц堕_發(fā)過程中,有沒有遇到什么比較棘手的或者有什么好的經(jīng)驗(yàn)可以分享一下?讓我們一起交流學(xué)習(xí),共同進(jìn)步!
郵箱:youweb@qq.com
Q Q:http://wpa.qq.com/msgrd?v=3&uin=88888888&site=qq&menu=yes
大家好呀!近在搞微信小程序支付,折騰了好幾天,終于搞定了!感...
哎,近好多朋友問我小程序開發(fā)的事兒,尤其是本地開發(fā)。其實(shí)吧,...
哎,近好多朋友都在問我在邯鄲開發(fā)小程序的事兒,搞得我都有點(diǎn)兒...
我想開發(fā)一個(gè)小程序,想想還有點(diǎn)小激動(dòng)呢!嗯…怎么說呢,我這個(gè)...
哎,近好多朋友都在問我小程序開發(fā)的事兒,搞得我頭都大了。畢竟...