当前位置:   article > 正文

苍穹外卖项目微信支付(没有商户号)的解决方法,超详细!!!_没有微信商户号怎么实现支付功能

没有微信商户号怎么实现支付功能

今天在写苍穹外卖项目时,写到微信支付时发现个人无法获取商户号,那么今天我就在这里分享一个方法,可以绕过微信支付实现订单支付的功能。本方法仅仅是绕过微信支付,没有进行真正的微信支付,如果想要体验真正的微信支付环节,可以搜其他方法。对于没有微信支付的环节,我们仅需要做一个大致了解即可。
步骤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;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

orderMapper.getByNumberAndUserId:

 @Select("select * from orders where number = #{orderNumber} and user_id= #{userId}")
    Orders getByNumberAndUserId(String orderNumber, Long userId);
  • 1
  • 2

payment方法中的update方法和getbyid方法老师都已经讲过。这里不再进行提供。
之后将小程序重新编译,进行下单支付
实验结果如下:
在这里插入图片描述
数据库中的数据也更新成功
在这里插入图片描述
至此,本次分享到此全部结束,希望对你有帮助,如果觉得博主写的博客对你有帮助的话,希望给个小小的3连谢谢(●’◡’●)!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/504956
推荐阅读
相关标签
  

闽ICP备14008679号