微信云开发实现微信支付与退款的两种思路是_微信小程序怎么做

(3) 2024-08-13 09:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
微信云开发实现微信支付与退款的两种思路是_微信小程序怎么做,希望能够帮助你!!!。

微信云开发实现微信支付与退款的两种思路

本人专注使用云开发,实现一个前端可以做后端以及整个项目的部署与上线。
如果觉得我讲的好就可以给我点个赞。也可以加我微信了解详情。
微信云开发实现微信支付与退款的两种思路是_微信小程序怎么做_https://bianchenghao6.com/blog__第1张

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) { 
    } }) 

微信云开发实现微信支付与退款的两种思路是_微信小程序怎么做_https://bianchenghao6.com/blog__第2张
到此就完成了支付的实现,主要是支付订单号要不同,订单金额以分为单位。
第二步退款,按照支付文档中的要求

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,//申请退款金额  }) 

这里有两个注意点,商户号可以不说子商户号,需要后台绑定下面的图片
微信云开发实现微信支付与退款的两种思路是_微信小程序怎么做_https://bianchenghao6.com/blog__第3张
这个需要在微信支付平台上授权。在微信支付平台的产品中心 —> 我授权的产品 点击服务商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地址' }; 

这里指出一下需要下载安装一下证书到云函数中微信云开发实现微信支付与退款的两种思路是_微信小程序怎么做_https://bianchenghao6.com/blog__第4张
这个是支付证书放在支付云函数中就行,嘻嘻嘻
第二步初始化支付

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分钟就会出现。
以上是我 的一个小项目的 源码,如有不正确的希望大神可以不吝赐教,大家也可以 看看我的思路。最后希望大家可以给我一个关注。我会继续创造下去的,谢谢大家。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复