苍穹外卖解决无法微信支付问题(超简单!)

关注微信公众号:怒码少年,回复关键词【电子书】可以免费获取计算机相关电子书

问题描述

苍穹项目day08中使用的微信小程序使用用户主体是无法开启微信支付功能的,但是又不想项目烂尾,这里可以帮你解决!!

解决办法

使用代码模拟,直接修改数据库中表的数据。具体步骤如下:

  1. 后端在/OrderController.java中注释掉原来的订单支付的/payment控制方法,改成:
@PutMapping("/payment")
@ApiOperation("订单支付")
public Result<String> payment(@RequestBody OrdersPaymentDTO ordersPaymentDTO) throws Exception {
    log.info("订单支付:{}", ordersPaymentDTO);
    orderService.paySuccess(ordersPaymentDTO.getOrderNumber()); 
    return  Result.success();
}

paySuccess方法用于微信后台检查成功,前端用户确认支付之后修改数据库的数据(例如把订单状态改为待接单,把支付状态设置为已支付,设置好结账时间),这里我们不请求微信后台了,直接修改数据。

  1. 前端在pages\pay\index.js中搜索wx.requestPayment,把这个方法注释起来(大概在225行左右)。再把下方的uni.redirectTo({url: '/pages/success/index?orderId=' + _this.orderId });这行代码开启(没有的话自己加上去)。

修改后的前端这部分代码是

if (res.code === 1) {
//这个方法全部注释掉
  // wx.requestPayment({
  //   nonceStr: res.data.nonceStr,
  //   package: res.data.packageStr,
  //   paySign: res.data.paySign,
  //   timeStamp: res.data.timeStamp,
  //   signType: res.data.signType,
  //   success:function(res){
  //     wx.showModal({
  //       title: '提示',
  //       content: '支付成功',
  //       success:function(){
  //         uni.redirectTo({url: '/pages/success/index?orderId=' + _this.orderId });
  //       }
  //     })
  //     console.log('支付成功!')
  //   }
  // })
    
//这行代码一定要有!!直接重定向,不使用微信支付
  uni.redirectTo({url: '/pages/success/index?orderId=' + _this.orderId });
    
} else {
  wx.showModal({
    title: '提示',
    content: res.msg
  })
  1. 觉得有用的话可以可以帮忙点个赞吧,谢谢大家!!有问题请私信博主,欢迎大家和我讨论项目

联系作者

csdn不怎么看,大家还有什么问题的可以私信微信公众号:怒码少年。我们后台联系,尽我所能!😁😁

原因分析

首先来看微信小程序的支付时序图:
在这里插入图片描述
这个图看上去复杂,其实微信后台的作用本质上就是保证数据传输时候的数据的安全性(所以才需要数字签名这些等等)和最后调用微信支付扣除用户的钱。真正操作订单的是商户系统,也就是我们的Java后端。

所以我们这里就直接不扣钱了! 直接后台修改数据(模拟微信后台扣款成功了)

效果展示

1. 前端准备好购物车之后点击去支付

在这里插入图片描述
前端跳转至
在这里插入图片描述

此时数据库orders表中多了一条为支付的订单数据:注意看各个字段的值

在这里插入图片描述
2. 前端点击确认支付

在这里插入图片描述

前端跳转至支付成功的页面

在这里插入图片描述
此时数据库orders表中的对应的订单数据的订单状态/支付状态/结账时间发生了变化,说明操作成功了!!

在这里插入图片描述

END

觉得有用的伙计们点个赞吧!👍,感谢你看到这里,祝你生活顺利and代码永不报错(报了也马上可以解决!)。

这里放一个我的微信公众号怒码少年,就是记录一下成长过程和一些技术学习成果,欢迎大家关注!
在这里插入图片描述

  • 14
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值