说明:第一次使用微信小程序云函数的支付功能,也找了很多资源,这一种是最适合我的,不知道能不能帮助到大家,就算是自己的一个总结吧。
步骤一:
在project.config.json文件里添加"cloudfunctionRoot": “cloudfuntions/”,字段
"description": "项目配置文件",
"cloudfunctionRoot": "cloudfuntions/",
"packOptions": { "ignore": [] },步骤二:
在app.js里添加代码
onLaunch() {
// 将用户访问记录到用户管理中,在控制台可见
if(!wx.cloud) {
console.error('请使用2.2.3或以上的基础库以使用云能力');
}
else {
wx.cloud.init({
env: 'pay-2gbw5art867e1f3c', // 当前云开发环境的ID
traceUser: true,
})
}
}步骤三:
打开云开发

如果是第一次使用云开发可以这样操作:
1:新建项目时选择使用小程序·云开发
2:点击云开发按钮创建初始环境,如果创建完之后未出现相关文件夹可重启开发工具

创建好环境之后会有这个文件夹。payment里就是当前的云函数所在地
3:在payment文件夹上右键单击可以进行云函数的运行与部署
4:在app.js里面有一个属性env,它是当前环境的ID,如果要更换环境更改ID即可

步骤四:
编辑本地服务函数(给支付按钮绑定个事件pay())
pay() {
wx.cloud.callFunction({
name: 'payment', // payment为云函数的名字
data: { total_fee: 1800, // 这里注意这是number类型,当时我写成了string找了半天
spbill_create_ip: '127.0.0.1' // 回调函数服务,我随便写的,不知道有啥用,我看别的帖子也随便写的 }
}).then(res => {
console.log('vip接口', res)
wx.requestPayment({
// 这是调用云函数之后返回的五个参数,都在res里
timeStamp: res.result.payment.timeStamp,
nonceStr: res.result.payment.nonceStr,
package: res.result.payment.package,
signType: res.result.payment.signType,
paySign: res.result.payment.paySign,
success: res => { // 支付成功 console.log('支付成功', res); },
fail: err => { // 支付失败 console.log('支付失败', err);
} }) }) }步骤五:
我的云函数payment
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV // 当前云函数环境的ID})
exports.main = async (event, context) => {
// event包含本地服务里的函数wx.cloud.callFunction里传过来的data
// 我传递的是total_fee和spbill_create_ip
const res = await cloud.cloudPay.unifiedOrder({ "body" : "yuanyuan",//商品名称
"outTradeNo" : "250190269"+new Date().getTime(),//订单号
"spbillCreateIp" : `${event.spbill_create_ip}` + '',//回调函数,这我转换了,可以不转换
"subMchId" : "123123123",//商户号
"totalFee" : event.total_fee,//商品支付金额,单位分
"envId": "pay-2gbw5art867e1f3c",//云开发id
"functionName": "pay_cb"//回调云函数
}) return res}总结:云函数是将一部分代码放在了服务器上,注意异步的问题,我本来在掘金上搜的帖子是没用cloud.cloudPay.unifiedOrder,这个方法比较简单,先记录下来,以后用到别的方法在比较。
















