# service/pay/refund.js

'use strict';
const vkPay = require("vk-uni-pay");
module.exports = {
  /**
   * 统一退款
   * @url pay/refund 前端调用的url参数地址
   * @description 当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家。
   * data 请求参数 说明
   * @param {String} out_trade_no 商户订单号
   * @param {String} refund_desc  退款说明
   * @param {Number} refund_fee 退款金额
   * res 返回参数说明
   * @param {Number} code 错误码,0表示成功
   * @param {String} msg 详细信息
   */
  main: async (event) => {
    let { data = {}, originalParam } = event;
    let res = { code: 0, msg: '退款成功' };
    // 退款开始-----------------------------------------------------------
    let {
      out_trade_no,
      refund_desc,
      refund_fee
    } = data;
    // 注意:实际退款前应该判断你自己的业务逻辑

    let refundRes = await vkPay.refund({
      out_trade_no,
      refund_desc,
      refund_fee
    });
    if (refundRes.code !== 0) {
      return refundRes;
    }
    /**
     * 注意:退款成功后,应该执行你自己的退款后逻辑
     * 此处建议只改下订单状态和写入异步任务队列表
     * 将消息发送、返佣扣除、业绩结算扣除等业务逻辑异步处理
     * 如开启定时器每隔5秒触发一次,处理订单
     */

    // 退款结束-----------------------------------------------------------
    return res;
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45