// 云函数入口文件 pay
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
// 云函数入口函数
exports.main = async (event, context) => {
const res = await cloud.cloudPay.unifiedOrder({
"body": event.goodName, //商品名称 或 商品描述
"outTradeNo": event.outTradeNoTo, //订单号
"spbillCreateIp": "127.0.0.1", //回调地址
"subMchId": "1615", // 微信支付商户号
"totalFee": event.totalFee, //商品支付金额 单位(分) 100代表一块钱
"envId": "yjiechuang-env-1gfd", //云开发环境ID
"functionName": "paycb" //回调的云函数
})
return res
}
// 云函数入口文件 paycb
const rp = require('request-promise-native');
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
// 云函数入口函数
//exports.main = async (event, context) => {
exports.main = async (event, context) => {
console.log('jgjgjgjj')
console.log('payment callback!', event)
if(event.resultCode == 'SUCCESS'){ //根据result_code查看业务结果成功进行提交数据告诉服务器
// const urlTmp = getApp().data.baseUrl ;
const urlTmp = "http://yczb.canurcster.xyz"
rp(urlTmp + '/home/supplier/notify?outTradeNo='+event.outTradeNo).then(function (e) {
console.log("响应数据:" + e)
})
}
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微信云函数,有微信给我们生成支付前的必要参数
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);
}
})
}
paycb部署成功了吗?
可以手动触发测试一下。
const res = {errcode:0,errmsg:''}//需要返回的字段,不返回该字段则一直回调
return res
}
在小程序中直接调用
goumai_button2:function(){
wx.cloud.callFunction({
name: 'paycb', //调用微信得pay云函数
data: {
//a:4,
//b:6,
// goodName: "农夫山泉", // 商品名称 或 商品描述
//totalFee: jiaqian, // 需要支付的金额
// outTradeNoTo: outTradeNo // 生成的订单号
},
}).then(res => {
console.log("res.result.sum")
}).catch(err => {
// handle error
})
}
结果:调试窗口显示字符串 res.result.sum 云控制台有日志
但是运行支付程序,回调函数没有被调用,云控制台也没有日志