准备资料
(一)AppID(小程序ID):*********
(二)AppSecret(小程序密钥):****
(三)微信支付商户号:*****
(四)API密钥:*******
开通云开发功能
在小程序的开发工具中点击–云开发,开通云开发功能(环境名称自定义)
定义云开发函数的目录
打开小程序中的project.config.json文件,在里面定义云开发函数的目录(目录名自定义)
新建目录
跟上面定义的云开发函数的目录保持一致
云开发初始化
在小程序的app.js中初始化
创建云函数
在上面新建的目录上,右键新建Node.js云函数,函数名自定义
安装tenpay第三方类库
安装tenpay第三方类库,获取微信支付所需参数,电脑需要先安装nodejs。
选择上面新建的云函数,右键在终端打开,输入安装指令:npm i tenpay
获取支付所需参数
根据tenpay网站中的内容编写云函数中的index.js文件。如果不会的,直接把下面的代码覆盖index.js文件,然后填写对应的几个配置参数即可
// 云函数入口文件
const cloud = require('wx-server-sdk');
cloud.init();
//实例化
const tenpay = require('tenpay');
const config = {
appid: '上面准备的appid',
mchid: '微信支付商户号',
partnerKey: 'API密钥',
notify_url: '支付回调网址,根据具体需求填写,也可以不写',
spbill_create_ip: '127.0.0.1' //发起支付的服务器地址或者客户端地址,127.0.0.1表示本机,也可以不写
};
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext();
//实例化
const api = tenpay.init(config);
//获取支付参数
let result = await api.getPayParams({
out_trade_no: event.out_trade_no, //订单号,从页面中传递过来
body: event.body, //订单说明
total_fee: event.total_fee, //订单金额
openid: wxContext.OPENID,
});
return result;
}
上传并部署
选择上面新建的云函数,右键上传并部署:云端安装依赖(不上传node_modules),可以在云函数中查看是否上传成功
支付测试
编写页面,假设结算按钮绑定tozf函数
tozf: function(){
wx.cloud.callFunction({
name:"zf", //云函数名称
data:{
out_trade_no: '1343243223', //设置订单号,随机生成
body: '这是一个测试订单', //设置订单说明
total_fee: 1 //设置订单金额,表示1分钱
},
success:function(res){
wx.requestPayment({
'timeStamp': res.result.timeStamp,
'nonceStr': res.result.nonceStr,
'package': res.result.package,
'signType': 'MD5',
'paySign': res.result.paySign,
'success':function(res){ //支付成功
//编写支付成功的处理逻辑
},
'fail':function(res){ //支付失败
//编写支付失败的处理逻辑
},
'complete':function(res){
//支付成功还是失败都会执行,可以不写
}
})
},
fail:function(res){
//调用云函数获取支付参数失败的逻辑处理
console.log("调用云函数获取支付参数失败",res)
}
})
}