花了幾天把小程序的支付模塊接口寫了一下,可能有著公眾號開發的一點經驗,沒有入太多的坑,在此我想記錄一下整個流程。
首先先把小程序微信支付的圖搬過來:

相信會來查百度的同學們基本都是對文檔的說明不是很理解。我下面大概總結一下整個業務邏輯的過程。
微信小程序的商戶系統一般是以接口的形式開發的,小程序通過調用與后端約定好的接口進行參數的傳遞以及數據的接收。在小程序支付這塊,還需要跟微信服務器進行交互。過程大致是這樣的:
一.小程序調用登錄接口獲取code,傳遞給商戶服務器用來獲取用戶的openID
我們知道在微信平臺中,同一個公眾號的openID都是不同的,它是用戶身份識別的id,也就是說,我們通過openID來區分不同的用戶,這個有微信開發基礎的應該都很熟悉。為了知道誰在支付,我們需要先獲取當前用戶的openid,那么openID應該怎么獲取呢?看下圖:

看不懂嗎?不急,聽我慢慢解釋,這個業務流程大致就是首先你得先在小程序的代碼中調用wx.login()來向微信獲取到code,拿到了之后把code通過request傳給商戶服務器,再由商戶服務器通過騷操作來跟微信服務器要session_key和openID。
偽代碼如下(小程序端):
getToken: function () { //調用登錄接口 wx.login({ success: function (res) { var code = res.code; wx.request({ url: 商戶服務器接口地址, data: { code: code }, method: 'POST', success: function (res) { wx.setStorageSync('token', res.data.token); //存在小程序緩存中 }, fail: function (res) { console.log(res.data); } }) } }) }調用這幾行代碼就可以向跟微信服務器要code,并且將code傳到商戶服務器中,記住這里最好使用post發送請求,安全性的東西我應該不用講了,因為避免其他人濫用接口,于是我們使用token來進行驗證。并將商戶服務器返回的token存在小程序緩存中。
那么服務器端應該怎么做呢?
我門通過小程序提交的code,和小程序的APPID以及APPSECRET和拼接下列的url,并用curl進行get請求。
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
返回的數據是一個json對象,我門通過使用json_decode(JSON,true)解析為數組,數據包括用戶的openID以及session_key,獲取到了后我們應該將openID存入數據庫中,它代表著用戶的身份,那么令牌應該怎么生成呢。
新聞熱點
疑難解答