微信小程式的雲開發支付先看下微信官方給出的流程圖:

這張圖裡,開發者隻需要關注的是小程式和雲函數端即可;雲函數做了很多參數的處理,是以我們不需要關注證書,簽名等,隻需要調用相應的函數即可;接下來大緻說下整個支付流程:
一、 小程式項目要有雲開發環境,在使用雲能力前,先完成雲能力的初始化,即在根目錄下的app.js中配置;
wx.cloud.init({
env: '環境id',
traceUser: true,
})
二、 要将小程式和商戶号的綁定,再在雲控制台添加上商戶号,添加完之後,需要超級管理者在 微信支付商家助手 公衆号進行授權,第一次開通可能沒那麼快收到授權資訊;退款權限需要在商戶号平台授權的産品中進行确認授權的;
三、 在項目的cloudfunctions右鍵建立node.js雲函數,(一個下單雲函數,一個是結果回調雲函數),建立之後,然後上傳和部署雲函數;
下單函數的編寫:通過CloudPay.unifiedOrder()去下單,注意有些參數是不用填的,可以參考微信官方給的案例,
exports.main = async (event, context) => {
const res = await cloud.cloudPay.unifiedOrder({
"body" : "描述",
"outTradeNo" : "1217752501201407033233368018",
"spbillCreateIp" : "127.0.0.1",
"subMchId" : "商戶号",
"totalFee" : 1,
"envId": "雲環境id",//
"functionName": "pay_cb"//回調結果雲函數
})
}
像一些随機數,簽名什麼的,都不需要傳遞,注意的是回調函數名和環境id,event是用戶端傳給雲函數的參數;
用戶端的寫法:
wx.cloud.callFunction({
name: '函數名',//下單的雲函數
data: {//傳遞的資料
// ...
},
success: res => {
const payment = res.result.payment
wx.requestPayment({//支付api
...payment,
success (res) {
console.log('pay success', res)
},
fail (err) {
console.error('pay fail', err)
}
})
},
fail: console.error,
})
回調結果的函數一定要注意傳回參數給微信伺服器,不然會一直回調;
if(event.resultCode == 'SUCCESS'){ //根據result_code檢視業務結果成功進行送出資料告訴伺服器
//更新雲資料庫資料
const res = {errcode:0,errmsg:''}//需要傳回的字段,不傳回該字段則一直回調
return res
}
這樣整個支付流程接結束了;跟傳統的支付方式方式相比,确實簡單了很多,也更安全,如果有商戶号可以寫個demo試試呗!