天天看點

微信小程式雲開發支付

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

微信小程式雲開發支付

這張圖裡,開發者隻需要關注的是小程式和雲函數端即可;雲函數做了很多參數的處理,是以我們不需要關注證書,簽名等,隻需要調用相應的函數即可;接下來大緻說下整個支付流程:

一、 小程式項目要有雲開發環境,在使用雲能力前,先完成雲能力的初始化,即在根目錄下的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試試呗!