当前位置:网站首页>uniapp + uniCloud+unipay 实现微信小程序支付功能
uniapp + uniCloud+unipay 实现微信小程序支付功能
2022-07-05 09:42:00 【zrong180106】
项目目录结构
导入unipay插件
文件目录:
uniCloud/cloudfunctions/common/uni-pay
新建getOrderInfo云函数
在getOrderInfo/index.js中引入uni-pay
// const unipay = require('unipay')
// 会报错: MODULE_NOT_FOUND:Cannot find module 'unipay'
正确: const unipay = require('uni-pay')
'use strict';
// const unipay = require('unipay') // 报错: MODULE_NOT_FOUND:Cannot find module 'unipay'
// 引入unipay
const unipay = require('uni-pay')
exports.main = async (event, context) => {
const unipayIns = unipay.initWeixin({
appId: 'xxxxxx', //小程序appid
mchId: 'xxxx', //微信商户号
key: 'xxxxxx', //商户号的API密钥
//pfx: fs.readFileSync('/path/to/your/pfxfile'), // p12文件路径,使用微信退款时需要,需要注意的是阿里云目前不支持以相对路径读取文件,请使用绝对路径的形式
})
//event为客户端上传的参数
let orderInfo = await unipayIns.getOrderInfo({
openid: event.openid, //这个是客户端上传的用户的openid
// subject: event.name, // 订单名称微信支付时不可填写此项
body: '服务费',
outTradeNo: event.suiji, //给他个随机号让他可以第二次发起支付
totalFee: event.pric, // 金额,单位元,在上传过来的时候就已经*100了
// 支付结果通知地址,没有该参数或者为空会报错,随便给了一个测试网址
notifyUrl: 'https://xxxxx',
// attach: event.out_trade, //备注,订单号或 长者id 在下一步通知中判断长度来确定
})
return { orderInfo }
};
在客户端编写支付请求
<button @click="weixinPay">支付</button>
// 微信支付
weixinPay() {
var that = this
// 1.传递weixin 获取微信的code
uni.login({
provider: 'weixin',
success(code) {
console.log('code:', code.code) // 获得code
//2:获得微信openid
uni.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
method:'GET',
data: {
appid: "xxxxxxxxxx", // 你的小程序的APPID
secret: "xxxxxxxxxxxx", //你的小程序的secret,
js_code: code.code //wx.login 登录成功后的code
},
success: (cts) => {
console.log(cts);
// cts.data.openid 拿到openid
//3:调用云函数 统一下单
uniCloud.callFunction({
name: 'getOrderInfo',
data: { // 传递订单的一些基本信息
openid: cts.data.openid,
// name: that.order.name,
// out_trade: that.order.out_trade, // 订单号
out_trade: 123456, // 订单号
suiji: Math.floor(Math.random() * 100000000),
pric: 1, // 单位分
}
}).then(odr => {
console.log('OrderInfo:', odr)
uni.hideLoading(); //隐藏loding...
uni.requestPayment({ // 调用支付api
provider: 'weixin',
...odr.result.orderInfo,
success() {
uni.showModal({
title: '支付成功',
content: '请和顾问联系执行订单即可!'
})
},
fail() {}
})
})
}
});
},
fail(err) {
reject(new Error('微信登录失败'))
}
})
// 支付结束
}
参考:
边栏推荐
- MySQL digital type learning notes
- .Net之延迟队列
- 【小技巧】获取matlab中cdfplot函数的x轴,y轴的数值
- Design of stepping motor controller based on single chip microcomputer (forward rotation and reverse rotation indicator gear)
- Uni app running to wechat development tool cannot Preview
- 单片机原理与接口技术(ESP8266/ESP32)机器人类草稿
- 如何获取GC(垃圾回收器)的STW(暂停)时间?
- 让AI替企业做复杂决策真的靠谱吗?参与直播,斯坦福博士来分享他的选择|量子位·视点...
- Tdengine can read and write through dataX, a data synchronization tool
- Swift saves an array of class objects with userdefaults and nssecurecoding
猜你喜欢
《微信小程序-基础篇》小程序中的事件与冒泡
Cent7 Oracle database installation error
【小技巧】獲取matlab中cdfplot函數的x軸,y軸的數值
Wechat applet - simple diet recommendation (3)
Apache dolphin scheduler system architecture design
La voie de l'évolution du système intelligent d'inspection et d'ordonnancement des petites procédures de Baidu
Evolution of Baidu intelligent applet patrol scheduling scheme
Cut off 20% of Imagenet data volume, and the performance of the model will not decline! Meta Stanford et al. Proposed a new method, using knowledge distillation to slim down the data set
盗版DALL·E成梗图之王?日产5万张图像,挤爆抱抱脸服务器,OpenAI勒令改名
美图炒币半年亏了3个亿,华为被曝在俄罗斯扩招,AlphaGo的同类又刷爆一种棋,今日更多大新闻在此...
随机推荐
Evolution of Baidu intelligent applet patrol scheduling scheme
View Slide
Kotlin Compose 多个条目滚动
程序员搞开源,读什么书最合适?
Tdengine offline upgrade process
TDengine × Intel edge insight software package accelerates the digital transformation of traditional industries
如何获取GC(垃圾回收器)的STW(暂停)时间?
Coordinate system of view
Tianlong Babu TLBB series - single skill group injury
tongweb设置gzip
Openes version query
Apache DolphinScheduler 系统架构设计
[200 opencv routines] 219 Add digital watermark (blind watermark)
Generics, generic defects and application scenarios that 90% of people don't understand
字节跳动面试官:一张图片占据的内存大小是如何计算
Apache dolphin scheduler system architecture design
Comparison of batch merge between Oracle and MySQL
程序员如何活成自己喜欢的模样?
Windows uses commands to run kotlin
钉钉、企微、飞书学会赚钱了吗?