小程序·云調(diào)用(微信支付)

本文來(lái)自嗶哩嗶哩視頻學(xué)習(xí)所得:

微信支付·交互流程圖

congig0.png

微信支付接入·前準(zhǔn)備工作

config1.png

\color{#00000}{這里的微信支付}\color{rgb(255,0,0)}{是指普通的商戶(hù)對(duì)接微信支付}

老版本微信簽名支付

pay0.png

pay1.png

小程序·云函數(shù)實(shí)現(xiàn)

// 云函數(shù)入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const mch_id = "商戶(hù)號(hào)";
const envId = "云環(huán)境ID";
const db = cloud.database();

// 云函數(shù)入口函數(shù)
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  let openid = wxContext.OPENID;
  let {
    totalFee
  } = event;
  let body = "商品描述";
  let nonceStr = Math.random().toString(36).substr(2, 13); // 32位隨機(jī)字符串,此處是11位
  let timeStamp = parseInt(Date.now() / 1000);
  let outTradeNo = 'cloud' + timeStamp + nonceStr; // 商戶(hù)訂單號(hào),32位以?xún)?nèi)的唯一字符串,此處是25位
  let tradetype = 'JSAPI'; // 交易類(lèi)型,小程序:JSAPI

  // 生成預(yù)支付交易單
  const result = await cloud.cloudPay.unifiedOrder({
    body,
    nonceStr,
    tradetype,
    outTradeNo,
    spbillCreateIp: '127.0.0.1', // 調(diào)用微信支付的機(jī)器Ip
    subMchId: mch_id,
    totalFee, // 訂單金額,單位(分)。必須是整數(shù)
    envId: envId,
    functionName: 'wxPayCallback' // 接收微信支付異步回調(diào)的云函數(shù)名
  })

  // 記錄交易訂單信息
  db.collection('order').add({
    data: {
      _openid: openid,
      body,
      outTradeNo,
      totalFee,
      status: 0,
      createTime: Date.now()
    }
  });


  return result;
}

支付回調(diào)云函數(shù)

// 云函數(shù)入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const envId = "云環(huán)境id";
const db = cloud.database();

// 云函數(shù)入口函數(shù)
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  // resultCode:SUCCESS/FALL      teansactionId:微信訂單號(hào)
  let {
    resultCode,
    outTradeNo,
    teansactionId
  } = event;

  let status = resultCode === 'SUCCESS' ? 1 : 2
  let params = {
    event,
    transactionId,
    status
  }
  await db.collection("order").where({
    outTradeNo: outTradeNo
  }).update({
    data: params
  });

  return {
    code: 0,
    msg: 'success'
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容