微信小程序 详解 小程序支付
1、小程序內調用登錄接口,獲取到用戶的openid,api參見公共api【小程序登錄API】?
上面已經說過要前后臺結合,所以開發小程序的你這時就要做第一步了,文檔在:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject
首先用?
wx.login(OBJECT)獲取code,code用來換取openid,獲取openid的事情我是我們后臺來做,我用request帶上獲取的code去get就好了
res的返回結果就是我們的openid,到這里我們第一步完成了。
2、商戶server調用支付統一下單,api參見公共api【統一下單API:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1】?
這個我們看一下:?
?
這個里面的東西很多很多,如果是你自己完成前后端的話那就好好看,磨刀不誤砍柴工,有一點看不到可能導致一直解決不了這個流程,畢竟微信的文檔?
有那么一點亂亂的趕腳。?
這個如果像我一樣是后端做的那就不用你操心了,但是你想了解的話也不難,看上面我最開始給出的兩個地址,這兩個文章都是吧全部流程做在前端(小程序)這里的?
其實沒必要,這個在看資料的時候發現其實微信是提供java,net,php三種語言的封裝包的,那么就是說后臺只要吧這個東西下載下來把對應的參數填寫修改就可以了,?
但是最終是什么樣子的,如果可以的話我會補上這個代碼,后臺的代碼不在我這,諒解!?
這個我們一樣只要request用post請求得到結果就可以了,這次我們需要的結果就是支付perpay_id?
?
我的這個請求時只返回了一個perpay_id但是我們可以看統一下單接口返回的數據?
?
他給我們不僅返回了perpay_id,還有隨機字符串和簽名,我說這個點的原因是我沒有用這個所以是不是我們直接在接下來要用的隨機字符串和簽名就是直接用這兩個就可以了呢(我沒有驗證后臺沒有給我返回,具體是什么樣子的待驗證)。跳過這一點,我們只要這個perpay_id一樣可以成功。?
到現在我們來看一下?
?
第一步和第一步的我們已經完成了,只有第二步paySign這個簽名了。對應微信的流程是:?
3、商戶server調用再次簽名,api參見公共api【再次簽名:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7】
這個簽名我們來看看是有點令人苦惱的,我們來看看上面說的兩個文章的踩坑總結:
第一篇:?
?
第二篇:?
?
總的來說看這個簽名的坑是最多的。?
我結合一下來描述一下吧:?
首先我們看第三步(綠色)部分的地址
?
再看微信小程序API中wx.requestPayment(OBJECT)接口的文檔?
?
我特別標注的紅色框部分可能會讓你恍然大悟了,有些“坑”可能是我們看東西的方式不對啊,對于appid和key文檔上有明確的說明要帶上?
由此我們也可以看出,對于支付流程我們正確的打開方式是下圖?
?
要遵循上面圖片的步驟和連接頁面進行看和做。?
好了,扯遠了:來看簽名
這個是正確的順序,在具體簽名方法說明中,可以看出key是在簽名參數按照ASCII大小排序完再拼接上去的,?
上面的參數函數
最后就是吧這個拼接的字符串進行MD5加密,Md5加密的js在網上搜一下就好了,如果怕不對自己可以在線驗證。?
至此我們 timeStamp 時間戳,nonceStr 隨機數,package 支付id,paySign 簽名,是不是都有了?對的,這樣就結束了?
?
上圖就是調用支付的最后步驟了,注意一點時間戳和隨機字符串,保證生成一次,因為在?
wx.requestPayment(OBJECT)中我們要用,在拼接的字符串中同樣要用,這兩個要保證一樣微信去MD5加密的時候才能得到和你自己MD5加密一樣的結果
總結
以上是生活随笔為你收集整理的微信小程序 详解 小程序支付的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实现抢红包算法?如此简单
- 下一篇: 微信小程序 获取授权信息详解