微信小程序云开发实现退款功能

微信小程序云开发实现退款功能微信小程序云开发实现退款功能官方文档小程序云开发实现微信支付官方文档非常的简单,也没有示例代码,只是列出了许多需要的参数,对于新手来说会可能有点迷糊。可以我的步骤跟着一步一步来。一、获取退款API权限在云开发控制台进行退款API权限的申请,然后在微信商户平台中进行授权。二、代码开发asynconRefund(e){constmodel=awaitwx.showModal({title:’提示’,content:’确认退款’,

大家好,欢迎来到IT知识分享网。

微信小程序云开发实现退款功能

官方文档

小程序云开发实现微信支付

官方文档非常的简单,也没有示例代码,只是列出了许多需要的参数,对于新手来说会可能有点迷糊。可以我的步骤跟着一步一步来。

一、获取退款API权限

在云开发控制台进行退款API权限的申请,然后在微信商户平台中进行授权。
在这里插入图片描述

在这里插入图片描述

二、代码开发

  async onRefund(e) { 
   
    const model = await wx.showModal({ 
   
      title: '提示',
      content: '确认退款',
      confirmText: '退款'
    });
    if (model.confirm) { 
   
      const totalN = new BigNumber(this.data.total_fee).times(100).toNumber();
      wx.cloud.callFunction({ 
   
      //调用cloudRefund云函数进行退款
        name: 'cloudRefund',
        data: { 
   
          nonce_str: this.nonce_str, //可以参考uuid()生成算法生成本字段
          out_trade_no: this.data.out_trade_no, //支付时生成的out_trade_no ,生成函数可以参考我的微信支付文章
          out_refund_no: this.out_refund_no, //此生成函数与out_trade_no生成方式大同小异,只要保证唯一性就可以
          total_fee: totalN,
          refund_fee: totalN,
        },
        success: (res) => { 
   
          console.log(res);
          //更新订单信息
          db.collection('orders').doc(this.orderId).update({ 
   
            data: { 
   
              state: 4,
              refundReason: this.data.radio,
              refundReasonContent: this.data.content,
              refundImgs: this.data.fileList.map(item => item.url),
              refundDate: new Date()
            }
          })
          wx.redirectTo({ 
   
            url: '/pages/orderDetail/orderDetail?id=' + this.orderId,
          });
        },
        fail: (err) => { 
   
          console.error(err);
          wx.showToast({ 
   
            title: '退款出错,请稍后再试',
          });
        }
      })
    }
  },
cloudRefund()云函数
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => { 
   
  const { 
    nonce_str, out_trade_no, out_refund_no, total_fee, refund_fee } = event
  const res = await cloud.cloudPay.refund({ 
   
    envId: "test-8g5u1cc1e82",
    functionName: 'pay_cb', //自己创建云函数,可以是一个空的云函数,不需要做特别的处理
    sub_mch_id: '', //在云开发控制台中查看
    nonce_str,
    out_trade_no,
    out_refund_no,
    total_fee,
    refund_fee,
  })
  return res
}
outRefundNo() 生成out_refund_no
  outRefundNo() { 
   
    const date = new Date();
    let month = date.getMonth() + 1
    if (month < 10) { 
   
      month = '0' + month;
    }
    let dates = date.getDate();
    if (dates < 10) { 
   
      dates = '0' + dates;
    }
    let hour = date.getHours();
    if (hour < 10) { 
   
      hour = '0' + hour;
    }
    let minute = date.getMinutes();
    if (minute < 10) { 
   
      minute = '0' + minute;
    }
    let seconds = date.getSeconds();
    if (seconds < 10) { 
   
      seconds = '0' + seconds;
    }
    let milliscondes = date.getMilliseconds();
    if (milliscondes < 10) { 
   
      milliscondes = '00' + milliscondes;
    } else if (milliscondes < 100) { 
   
      milliscondes = '0' + milliscondes;
    }
    let outRefundNo = '';
    for (let i = 0; i < 5; i++) { 
   
      outRefundNo += Math.floor(Math.random() * 10);
    }
    outRefundNo = "RF" + date.getFullYear() + month +
      dates + hour + minute + seconds + milliscondes + outRefundNo;
    console.log(outRefundNo);
    return outRefundNo;
  },

自此微信小程序云开发实现退款功能。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/12176.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信