在我们做一些购物车的结算功能时是一定会有支付功能的,那我们如何去做微信支付这个功能呢,首先我们先要理清思路,并且要了解到接口需要哪些数据以及会返回哪些数据
注意:一定要先看接口文档!
-
创建订单。
○ 请求创建订单的 API 接口:把(订单金额、收货地址、订单中包含的商品信息)发送到服务器。
○ 服务器响应的结果:订单编号。
-
订单预支付。
○ 请求订单预支付的 API 接口:把(订单编号)发送到服务器。
○ 服务器响应的结果:订单预支付对象,里面包含了订单支付相关的必要参数。
-
发起微信支付。
○ 调用
uni.requestPayment()
这个 API,并传递订单预支付对象,发起微信支付。○ 监听
uni.requestPayment()
这个 API 的 success,fail,complete 回调函数。
这是我们先点击结算按钮是需要做一些校验和提示的,通过校验后再去做支付功能
// 点击了结算按钮
settlement() {
// #1 先判断是否勾选了要结算的商品
if (!this.checkedCount) return uni.$showMsg('请选择要结算的商品!')
// #2 再判断用户是否选择了收货地址
if (!this.addstr) return uni.$showMsg('请选择收货地址!')
// #3 最后判断用户是否登录了
// if (!this.token) return uni.$showMsg('请先登录!')
if (!this.token) return this.delayNavigate()
// #4 实现微信支付功能
this.payOrder()
}
接下来就是支付功能了文章来源:https://www.toymoban.com/news/detail-485746.html
// 微信支付
async payOrder() {
// 1. 创建订单
// 1.1 组织订单的信息对象
const orderInfo = {
// 开发期间,注释掉真实的订单价格,
// order_price: this.checkedGoodsAmount,
// 写死订单总价为 1 分钱
order_price: 0.01,
consignee_addr: this.addstr,
goods: this.cart.filter(x => x.goods_state).map(x => (
{ goods_id: x.goods_id, goods_number: x.goods_count, goods_price: x.goods_price }
))
}
// 1.2 发起请求创建订单
const { data: res } = await uni.$http.post('/orders/create', orderInfo)
if (res.meta.status !== 200) return uni.$showMsg('创建订单失败!')
// 1.3 得到服务器响应的“订单编号”
const orderNumber = res.message.order_number
// 2. 订单预支付
// 2.1 发起请求获取订单的支付信息
const { data: res2 } = await uni.$http.post('/my/orders/req_unifiedorder', { order_number: orderNumber })
// 2.2 预付订单生成失败
if (res2.meta.status !== 200) return uni.$showMsg('预付订单生成失败!')
// 2.3 得到订单支付相关的必要参数
const payInfo = res2.message.pay
// 3. 发起微信支付
// 3.1 调用 uni.requestPayment() 发起微信支付
const [err, succ] = await uni.requestPayment(payInfo)
// 3.2 未完成支付
if (err) return uni.$showMsg('订单未支付!')
// 3.3 完成了支付,进一步查询支付的结果
const { data: res3 } = await uni.$http.post('/my/orders/chkOrder', { order_number: orderNumber })
// 3.4 检测到订单未支付
if (res3.meta.status !== 200) return uni.$showMsg('订单未支付!')
// 3.5 检测到订单支付完成
uni.showToast({
title: '支付完成!',
icon: 'success'
})
}
以上就是功能代码啦,但是要注意的是,可能做出来后会没有效果,因为这个东西是需要一些权限账号的,如果是自己写的话,没有特定的权限是出不来支付功能的文章来源地址https://www.toymoban.com/news/detail-485746.html
主要其实就是调用uni.requestPayment()这个api的,具体可以去参照uniapp的官方文档uni.requestPayment(OBJECT) | uni-app官网
到了这里,关于使用uniapp开发微信小程序的微信支付流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!