// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
// 云函数入口函数 pay
exports.main = async (event, context) => {
const res = await cloud.cloudPay.unifiedOrder({
"body": event.goodName, //商品名称 或 商品描述
"outTradeNo": event.outTradeNoTo, //订单号
"notify_url": "https://pay.weixin.qq.com/index.php",//是正url有问题码?这个网址是从哪里获取的?
"spbillCreateIp": "127.0.0.1", //回调地址
"subMchId": "16315", // 微信支付商户号
"totalFee": event.totalFee, //商品支付金额 单位(分) 100代表一块钱
"envId": "yjiechuang-env-1g6k3fd", //云开发环境ID
"functionName": "paycb" //回调的云函数
})
return res
}
// 云函数入口文件 paycb
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
// 云函数入口函数
exports.main = async (event, context) => {
//return {
// sum: event.a + event.b
//}
const res = {errcode:0,errmsg:''}//需要返回的字段,不返回该字段则一直回调
return res
}
小程序代码:
goumai_button1:function(e){
var that = this;
var outTradeNo = ""; //订单号
var jiaqian = 1; // 开发阶段先设置交易金额为0.01元
// var jiaqian = parseInt(that.data.filesM * 100); //获取真实付款金额
outTradeNo = Math.floor((Math.random() * 1000) + 1) + "1371" + new Date().getTime(); //生成订单号
that.setData({
outTradeNo: outTradeNo
})
//准备支付(先获取必要参数)
wx.cloud.callFunction({
name: 'pay', //调用微信得pay云函数
data: {
goodName: "农夫山泉", // 商品名称 或 商品描述
totalFee: jiaqian, // 需要支付的金额
outTradeNoTo: outTradeNo // 生成的订单号
},
success: res => {
console.log("获取字符参数成功", res); // 此处是通过pay微信云函数,有微信给我们生成支付前的必要参数
console.log("res.result.payment", res.result.payment);
const payment = res.result.payment // 微信会返回支付需要的必备数据
wx.hideLoading()
//调起支付(获取必要参数后,开始真实调用微信支付窗口)
wx.requestPayment({
...payment,
success(res) { //如果支付成功了,进入success函数回调(成功后具体操作看实际业务需求)
console.log('支付成功', res)
wx.showLoading({
title: "付款成功"
})
setTimeout(function () {
wx.hideLoading()
//that.upload(e); //将用户购买的数据 交给 后台
}, 700)
},
fail(res) {
console.error('支付失败', res)
wx.showLoading({
title: "支付失败"
})
setTimeout(function () {
wx.hideLoading()
}, 1600)
}
})
},
fail(res) {
console.log("获取支付参数失败", res);
}
})
}
"envId": "yjiechuang-env-1g6k3fd", //云开发环境ID
换成wxContext.ENV试试。
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
const res = await cloud.cloudPay.unifiedOrder({
"body": event.goodName, //商品名称 或 商品描述
"outTradeNo": event.outTradeNoTo, //订单号
"notify_url": "https://pay.weixin.qq.com/index.php",//????是这里问题吗?,这个网址是如何获取的?
"spbillCreateIp": "127.0.0.1", //回调地址
"subMchId": "1695", // 微信支付商户号
"totalFee": event.totalFee, //商品支付金额 单位(分) 100代表一块钱
"envId": wxContext.ENV, //云开发环境ID
"functionName": "paycb" //回调的云函数
})
return res
}