概述

微信领取是云开发原生反对的微信生态能力之一,开发者只须要简略调用相应的函数即可实现整套领取流程,平安又高效。局部劣势包含:

  • 无需关怀证书、签名,领取流程简化;
  • 基于微信公有协定和公有链路,更加平安、高效;
  • 免运维,高可用性;
  • 按需扩容,弹性伸缩,按量计费,老本缩减;
  • 反对通过云函数承受领取回调,无需自建回调服务。

流程比照:传统流程 vs 云开发

代码示例

第 1 步:小程序调用云函数

C 端用户发动领取流程后,小程序端调用云函数(此处假如云函数名为 makeOrder):

// 小程序代码wx.cloud.callFunction({  name: "makeOrder",  data: {    /* 开发者自定义参数 */  }});

第 2 步:云函数生成订单,返回订单信息

云函数 makeOrder 收到调用之后,应用微信服务端 SDK 提供的 API,无需证书和签名,可间接生成订单。

生成订单之后,利用 CloudPay.unifiedOrder() 对立下单接口,将订单信息返回给小程序。

CloudPay.unifiedOrder() 接口文档:

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/open/pay/CloudPay.unifiedOrder.html

// 云函数 makeOrderconst cloud = require("wx-server-sdk");cloud.init({  env: cloud.DYNAMIC_CURRENT_ENV});exports.main = async (event, context) => {  const res = await cloud.cloudPay.unifiedOrder({    body: "小秋TIT店-超市",    outTradeNo: "1217752501201407033233368018",    spbillCreateIp: "127.0.0.1",    subMchId: "1900009231",    totalFee: 1,    envId: "test-f0b102",    functionName: "payCallback" // 领取回调的函数名  });  return res;};

第 3 步:小程序端发动领取

小程序端收到云函数返回的订单信息后,发动领取:

// 小程序代码wx.cloud.callFunction({  name: "makeOrder",  data: {    /* 开发者自定义参数 */  },  success: (res) => {    // 获得云函数返回的订单信息    const payment = res.result.payment;    // 调起微信客户端领取    wx.requestPayment({      ...payment,      success(res) {        /* 胜利回调 */      },      fail(res) {        /* 失败回调 */      }    });  }});

第 4 步:应用云函数接管领取回调,实现领取流程

用户实现付款之后,微信后盾将会调用指定的云函数(此处假如名为 payCallback),传入的参数中会带有订单信息。

开发者能够在此云函数中,实现本人的发货、实现订单的逻辑。

// 云函数 payCallbackexports.main = async (event, context) => {  const {    return_code, // 状态码    appid, // 小程序 AppID    mch_id, // 微信领取的商户号    device_info, // 微信领取调配的终端设备号    openid, // 用户在商户appid下的惟一标识    trade_type, // 交易类型:JSAPI、NATIVE、APP    bank_type // 银行类型    // ......    // 更多参数请参考:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7&index=8  } = event;  /*    开发者本人的逻辑  */  // 向微信后盾返回胜利,否则微信后盾将会反复调用此函数  return { errcode: 0 };};

相干文档:

云函数文档:

https://docs.cloudbase.net/cloud-function/introduce.html

云调用文档:

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/openapi/openapi.html

wx-server-sdk 文档:

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/Cloud.html

CloudPay.unifiedOrder() 接口文档:

https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/open/pay/CloudPay.unifiedOrder.html