1. 程式人生 > 程式設計 >小程式通過小程式雲實現微信支付功能例項

小程式通過小程式雲實現微信支付功能例項

目錄
  • 一、開通微信支付
    • 1.1 關聯商戶號
    • 1.2 新增商戶號
    • 1.3 管理員授權
  • 二、雲函式開發
    • 2.1 新建雲函式
    • 2.2 雲函式程式碼
    • 2.3 雲函式上傳並部署
  • 三、小程式呼叫
    • 3.1 統一下單
    • 3.2 支付成功回撥

一、開通微信支付

1.1 關聯商戶號

\微信公眾號平臺\功能\微信支付\商戶號管理\關聯商戶號

在這裡插入圖片描述

1.2 新增商戶號

\雲開發平臺\設定\其他設定\微信支付配置\新增商戶號

在這裡插入圖片描述

1.3 管理員授權

1.2那張圖上,點選授權。管理員的微信就會跳出提示,點選確定授權即可。

否則使用的時IbyzDoHH候,會出現sub_mch_id與sub_appid不匹配的報錯!

二、雲函式開發

2.1 新建雲函式

在這裡插入圖片描述

在這裡插入圖片描述

2.2 雲函式程式碼

\pay\index.

const cloud = require('wx-server-sdk')
cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

exports.main = async (event,context) => {    
const res = await cloud.cloudPay.unifiedOrder({
    "body" : event.body,"outTradeNo" : event.outTradeNo,"spbillCreateIp" : "127.0.0.1","subMchId" : "0000000000",//這裡要注意:雖然key是子商戶id,實際上就是普通商戶id
    "totalFee" : parseInt(event.totalFee),//第二個坑:注意必須是數字,如果不是數字,則會報錯unifiedOrder:fail wx api error: -202
    "envId": "ooo-xxxxxxxxxxxxxxxx",//這裡是回撥函式所屬的的雲環境id
    "functionName": "payCallBack",//這個是回撥函式名
    "nonceStr":event.nonceStr,//第三個坑:官方文件中相關雲函式程式碼沒有nonceStr和tradeType,測試的時候會報nonceStr不存在的錯,翻看文件才發現這個是必填項,直接粘過來以後還需要加上這兩個引數
    "tradeType":"JSAPI"
  })
  return res
}

2.3 雲函式上傳並部署

在這裡插入圖片描述

在這裡插入圖片描述

三、小程式呼叫

3.1 統一下單

  • 微信下單後獲得的資料,最好先儲存到,留
  • 再去調起微信支付介面
//呼叫雲函式,微信統一下單
  cloudPay(){
    var _this = this
    this.setData({
      body: "賬單支付-xxxxx",outTradeNo: this.data.id+"-"+util.uuid(16),totalFee: this.data.totalCost*100 //支付單位:分
    })
    app.showLoading(true)
    wx.cloud.callFunction({
      name: "pay",data: {
        body: _this.data.body,outTradeNo: _this.data.outTradeNo,totalFee: _this.data.totalFee,nonceStr:util.uuid(32)//呼叫自己的uuid函式
      },success(res) {
        // errCode: 0
        // errMsg: "cloudPay.unifiedOrder:ok"
        // returnCode: "FAIL"
 http://www.cppcns.com
// returnMsg: "total_fee is empty. " console.log("提交成功",res.result) if(res.result.returnCode!="SUCCESS"){ app.showToast(res.result.returnMsg) return } _this.unifiedOrder(res.result) // _this.requestPayment(res.result) },fail(res) { console.log("提交失敗",res) } }) },

3.2 調起微信支付介面

  //官方標準的支付方法,調起支付介面
  requestPayment(payData) {
    var _this = this;
    const payment = payData.payment//這裡注意,上一個函式的result中直接整合了這裡要用的引數,直接展開即可使用
    wx.requestPayment({
      ...payment,//...是展開變數的語法 
      success(res) {
        console.log("支付成功",res)
        _this.paySuccess()
      },fail(res) {
        console.log("支付失敗",

3.2 支付成功回撥

  • 不太建議直接在requestPayment的success回撥函式中,執行支付成功的操作
  • 最好在另外建一個雲函式payCallBack
  • 這個雲函式payCallBack,呼叫我們自建伺服器的介面,執行支付成功的操IbyzDoHH
  • 這邊涉及到如何在雲函式中呼叫http介面,賣個關子,後續講

到此這篇關於小程式通過小程式雲實現微信支付功能例項的文章就介紹到這了,更多相關小程式 微信支付內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!