苍穹外卖项目中有一个微信支付的功能,但是我们也没有商户,只能想办法跳过调起微信支付了,在这里我是这么实现的,话不多说,上代码。
1.首先是OrderController的payment()方法
在这里我们直接调用paySuccess()方法,进行对支付状态(对应字段pay_status)的更改,并且直接返回成功,修改为如下
/**
* 订单支付
* @param ordersPaymentDTO
* @return
*/
@PutMapping("/payment")
@ApiOperation("订单支付")
public Result<OrderPaymentVO> payment(@RequestBody OrdersPaymentDTO ordersPaymentDTO) throws Exception {
log.info("订单支付:{}", ordersPaymentDTO);
/*OrderPaymentVO orderPaymentVO = orderService.payment(ordersPaymentDTO);
log.info("生成预支付交易单:{}", orderPaymentVO);
return Result.success(orderPaymentVO);*/
orderService.paySuccess(ordersPaymentDTO.getOrderNumber());
return Result.success();
}
2.OrderServiceImpl
在这里就不需要进行修改了,因为我们根本就没有调用payment()方法,也就是,不会向微信发起请求的,也就不需要商户信息了。
3.小程序代码修改
因为我们没有调起微信支付,因此后端是没有返回值给前端的,只有一个Result.success()返回的code=1,这也足够了,我们可以修改前端代码为判断code值,为1的话直接跳转至支付成功界面即可,下面是修改
找到如下文件
在此文件中ctrl+shift搜索handleSave,在第一个else分支中,将原先的代码注释,修改为如下即可
} else {
// 如果支付成功进入成功页
clearTimeout(this.times);
var params = {
orderNumber: this.orderDataInfo.orderNumber,
payMethod: this.activeRadio === 0 ? 1 : 2 };
(0, _api.paymentOrder)(params).then(function (res) {
if (res.code === 1) {
wx.showModal({
title: '提示',
content: '支付成功',
success:function() {
uni.redirectTo({url: '/pages/success/index?orderId=' + _this.rederId});
}
})
console.log('支付成功')
// 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 });
按以上操作就可以跳过调起微信支付啦。