今天在写苍穹外卖项目时,写到微信支付时发现个人无法获取商户号,那么今天我就在这里分享一个方法,可以绕过微信支付实现订单支付的功能。本方法仅仅是绕过微信支付,没有进行真正的微信支付,如果想要体验真正的微信支付环节,可以搜其他方法。对于没有微信支付的环节,我们仅需要做一个大致了解即可。
步骤1:我们根据老师提供的代码,将代码复制到我们自己的项目中,
我们主要修改的代码有两部分,第一部分是微信小程序的代码,第二部分是OrderServiceImpl
中的代码。
步骤2:修改微信小程序中的代码:
我们来到pay/index.js
中
将大概220
行左右的代码进行修改,具体的修改方法如下:
将箭头所指的代码放开,老师给的代码原本是注释着的。
步骤3:修改OrderServiceImpl
中的代码
我们将原本的payment
代码替换为以下代码:
/**
* 订单支付
*
* @param ordersPaymentDTO
* @return
*/
public OrderPaymentVO payment(OrdersPaymentDTO ordersPaymentDTO) throws Exception {
// 当前登录用户id
Long userId = BaseContext.getCurrentId();
User user = userMapper.getByid(userId);
// //调用微信支付接口,生成预支付交易单
// JSONObject jsonObject = weChatPayUtil.pay(
// ordersPaymentDTO.getOrderNumber(), //商户订单号
// new BigDecimal(0.01), //支付金额,单位 元
// "苍穹外卖订单", //商品描述
// user.getOpenid() //微信用户的openid
// );
//
// if (jsonObject.getString("code") != null && jsonObject.getString("code").equals("ORDERPAID")) {
// throw new OrderBusinessException("该订单已支付");
// }
JSONObject jsonObject = new JSONObject();
jsonObject.put("code", "ORDERPAID");
OrderPaymentVO vo = jsonObject.toJavaObject(OrderPaymentVO.class);
vo.setPackageStr(jsonObject.getString("package"));
// 替代微信支付成功后的数据库订单状态更新,直接在这里更新了
// 根据订单号查询当前用户的该订单
Orders ordersDB = orderMapper.getByNumberAndUserId(ordersPaymentDTO.getOrderNumber(), userId);
// 根据订单id更新订单的状态、支付方式、支付状态、结账时间
Orders orders=new Orders();
orders.setId(ordersDB.getId());
orders.setStatus(Orders.TO_BE_CONFIRMED);
orders.setPayStatus(Orders.PAID);
orders.setCheckoutTime(LocalDateTime.now());
// Orders orders = Orders.builder()
// .id(ordersDB.getId())
// .status(Orders.TO_BE_CONFIRMED) // 订单状态,待接单
// .payStatus(Orders.PAID) // 支付状态,已支付
// .checkoutTime(LocalDateTime.now()) // 更新支付时间
// .build();
orderMapper.update(orders);
return vo;
}
orderMapper.getByNumberAndUserId:
@Select("select * from orders where number = #{orderNumber} and user_id= #{userId}")
Orders getByNumberAndUserId(String orderNumber, Long userId);
payment
方法中的update
方法和getbyid
方法老师都已经讲过。这里不再进行提供。
之后将小程序重新编译,进行下单支付
实验结果如下:
数据库中的数据也更新成功:
至此,本次分享到此全部结束,希望对你有帮助,如果觉得博主写的博客对你有帮助的话,希望给个小小的3连谢谢(●’◡’●)!