# 工作流实现微信支付退款场景
开发者可使用云开发工作流+云函数能力,快速对接微信支付退款相关的接口。
# 流程概览
本文档中我们将会实现下图中的步骤,实现简单的微信支付退款流程:
# 第 1 步:部署退款工作流模板,完成初始配置,并发布工作流
打开云开发控制台-「云函数」- 新建 - 工作流,选择工作流「使用微信支付申请退款」模板,并安装模板。
# 第 2 步:完成「申请退款」工作流的配置
模板部署完成后,进入工作流编辑器内完成配置。
在“申请退款”节点内,完成 API 的配置。
注意 更新 APIs 或方法后,入参需要重新配置为如下:
({
manualTrigger.output
})
另外,首次使用的用户如果没有可用的微信支付 API 实例,可以新建凭证+API 实例。
支付通知回调的配置,可以配置成另一个工作流,或者已有 HTTP 服务的 URL:
# 第 3 步:完成「通知回调」工作流的配置
如果在第 2 步中,把通知回调配置为了另一条工作流,那么我们同样需要完成「通知回调」工作流的配置工作。
例如,我们可以使用自定义代码的节点,在支付回调中,修改云数据库内的订单状态:
const cloudbase = require("@cloudbase/node-sdk");
cloud.init({
env: "<环境ID>",
});
const db = cloud.database();
// 示例:向 orders 集合中插入一条记录
const result = await db.collection("orders").add(wxpayTrigger.output.resource);
# 第 4 步:完成调用代码
工作流配置完成后,接下来我们通过调用工作流,完成退款场景。
退款可以在小程序端或者云函数内发起调用。
/**
* 微信支付 - 申请退款
*/
const cloud = require('wx-server-sdk');
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });
exports.main = async (event, context) => {
const res = await cloud.callFunction({
// 固定参数
name: 'cloudbase_module',
data: {
// 工作流ID, 需从工作流属性中获取
name: 'xxxxxxx',
data: {
/**
* 更多参数参考微信支付文档:
* https://pay.weixin.qq.com/doc/v3/merchant/4012556484
*/
transaction_id: '42000021712024041829xxxxxx', // 微信订单号
out_refund_no: '20240418151xxxx', // 商户内部退款单号
amount: {
refund: 1, // 退款金额
total: 1, // 原订单金额,
currency: 'CNY',
},
},
},
});
return res.result;
};
可见,全程只有少量代码,即可完成发起微信支付退款逻辑,非常方便快捷。