微信云开发实现微信支付与退款的两种思路
本人专注使用云开发,实现一个前端可以做后端以及整个项目的部署与上线。
如果觉得我讲的好就可以给我点个赞。也可以加我微信了解详情。

1.首先你需要先了解 一下基本的云开发知识。
我们主要用到的数据库和云函数的操作为,调用云函数支付,以及调用云函数退款
主要有两种调取支付的办法,
第一种:使用基础的官方提供的 cloud.cloudPay进行操作,
按照官方的说法:支付官方文档
第一步先用云函数对创建的订单 进行统一下单,具体代码如下。
//云函数部分
const res = await cloud.cloudPay.unifiedOrder({
"body" : '收款名称',
"outTradeNo" : '商户支付向后台提供的订单号', //商户单号
"spbillCreateIp" : "127.0.0.1", //这个写这个就行
"subMchId" : "用户商户号",
"totalFee" : '支付金额*100', //这里单位为分
"envId": "cloud1-5gsz8z6d5ba3a08f",
"functionName": "pay_cb"
})
//js部分,请求后可以获取requestPayment所需的所有参数。
wx.requestPayment({
timeStamp: '',
nonceStr: '',
package: '',
signType: 'MD5',
paySign: '',
success (res) { },
fail (res) { }
})

到此就完成了支付的实现,主要是支付订单号要不同,订单金额以分为单位。
第二步退款,按照支付文档中的要求
const res = await cloud.cloudPay.refund({
"out_refund_no": "T" + new Date().getTime(),//商户退款单号
"out_trade_no": '商户订单号',//就是支付时提交的商户订单号
"nonce_str": "" + new Date().getTime(),//随机字符串
"sub_mch_id": "商户号",//子商户号
"total_fee": event.total_fee,//订单金额
"refund_fee": event.total_fee,//申请退款金额
})
这里有两个注意点,商户号可以不说子商户号,需要后台绑定下面的图片

这个需要在微信支付平台上授权。在微信支付平台的产品中心 —> 我授权的产品 点击服务商API退款 授权
还要一点需要注意的是退款金额一定要小于等于支付金额。
以上为使用官方自带的实现云开发支付。
第二种,使用tenpay模块实现支付
我一般使用的就是这个
这个需要依靠于node.js, 所以需要电脑安装号node.js。
在云函数中右击打开终端安装tenpay
npm i tenpay
如已安装旧版, 重新安装最新版
npm i tenpay@latest
第一步实例化
const tenpay = require('tenpay');
const config = {
appid: '公众号ID',
mchid: '微信商户号',
partnerKey: '微信支付安全密钥',
pfx: require('fs').readFileSync('证书文件路径'),
notify_url: '支付回调网址',
spbill_create_ip: 'IP地址'
};
这里指出一下需要下载安装一下证书到云函数中
这个是支付证书放在支付云函数中就行,嘻嘻嘻
第二步初始化支付
const api = new tenpay(config);
// 方式二
const api = tenpay.init(config);
我们使用 const api = tenpay.init(config);就行
第三步 调用支付获取wx.requestPayment所需参数。
const wxContext = cloud.getWXContext();
let result = await api.getPayParams({
out_trade_no: '商户内部订单号',
body: '商品简单描述',
total_fee: '订单金额(分)',
openid: '付款用户的openid'
});
这里openid可以用const wxContext = cloud.getWXContext();获取
在js中调用wx.requestPayment就可以完成支付了。
退款的使用,其注意事项和上面的注意事项相同
let result = await api.refund({
// transaction_id, out_trade_no 二选一
// transaction_id: '微信的订单号',
out_trade_no: '商户内部订单号',
out_refund_no: '商户内部退款单号',
total_fee: '订单金额(分)',
refund_fee: '退款金额(分)'
});
只要调用这个就可以完成退款,等待1-3分钟就会出现。
以上是我 的一个小项目的 源码,如有不正确的希望大神可以不吝赐教,大家也可以 看看我的思路。最后希望大家可以给我一个关注。我会继续创造下去的,谢谢大家。

3713

被折叠的 条评论
为什么被折叠?



