苍穹外卖项目微信支付(没有商户号)的解决方法,超详细!!!

今天在写苍穹外卖项目时,写到微信支付时发现个人无法获取商户号,那么今天我就在这里分享一个方法,可以绕过微信支付实现订单支付的功能。本方法仅仅是绕过微信支付,没有进行真正的微信支付,如果想要体验真正的微信支付环节,可以搜其他方法。对于没有微信支付的环节,我们仅需要做一个大致了解即可。
步骤1:我们根据老师提供的代码,将代码复制到我们自己的项目中
在这里插入图片描述
我们主要修改的代码有两部分,第一部分是微信小程序的代码,第二部分是OrderServiceImpl中的代码。
步骤2:修改微信小程序中的代码:
我们来到pay/index.js在这里插入图片描述
将大概220行左右的代码进行修改,具体的修改方法如下:
在这里插入图片描述
将箭头所指的代码放开,老师给的代码原本是注释着的
在这里插入图片描述
步骤3:修改OrderServiceImpl中的代码
我们将原本的payment代码替换为以下代码:

 /*** 订单支付** @param ordersPaymentDTO* @return*/public OrderPaymentVO payment(OrdersPaymentDTO ordersPaymentDTO) throws Exception {// 当前登录用户idLong 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连谢谢(●’◡’●)!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/491308.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【并发】CAS原子操作

1. 定义 CAS是Compare And Swap的缩写,直译就是比较并交换。CAS是现代CPU广泛支持的一种对内存中的共享数据进行操作的一种特殊指令,这个指令会对内存中的共享数据做原子的读写操作。其作用是让CPU比较内存中某个值是否和预期的值相同,如果相…

“点击查看显示全文”遇到的超链接默认访问的问题

今天在做一个例子,就是很常见的点击展开全文。 我觉得这是一个很简单的效果,也就几行代码的事,结果点击了以后立刻隐藏不见,控制台代码也不报错,耽误了我很长时间,最后才发现问题出在超链接身上。 “展开全…

Escalate_Linux-环境变量劫持提权(5)

环境变量劫持提权 在Shll输入命令时,Shel会按PAH环境变量中的路径依次搜索命令,若是存在同名的命令,则执行最先找到的,若是PATH中加入了当前目录,也就是“”这个符号,则可能会被黑客利用,例如在…

flink源码分析 - 获取调用位置信息

flink版本: flink-1.11.2 调用位置: org.apache.flink.streaming.api.datastream.DataStream#flatMap(org.apache.flink.api.common.functions.FlatMapFunction<T,R>) 代码核心位置: org.apache.flink.api.java.Utils#getCallLocationName() flink算子flatmap中调用了一…

[力扣 Hot100]Day35 LRU 缓存

题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否…

python_pyecharts绘制漏斗图

python-pyecharts绘制漏斗图 from pyecharts.charts import Funnel from pyecharts import options as opts# 数据 data [("访问", 100), ("咨询", 80), ("订单", 60), ("点击", 40), ("展现", 20)]# 创建漏斗图 funnel …

【论文解读】transformer小目标检测综述

目录 一、简要介绍 二、研究背景 三、用于小目标检测的transformer 3.1 Object Representation 3.2 Fast Attention for High-Resolution or Multi-Scale Feature Maps 3.3 Fully Transformer-Based Detectors 3.4 Architecture and Block Modifications 3.6 Improved …

如何利用EXCEL批量插入图片

目录 1.excel打开目标表格&#xff1b; 2.点开视图-宏-录制宏&#xff0c;可以改宏的名字或者选择默认&#xff1b; 3.然后点开视图-宏-查看宏 4.点编辑进去 5.修改代码&#xff1a; &#xff08;1&#xff09;打开之后会显示有一堆代码 &#xff08;2&#xff09;将这个…

SpringBoot3整合Swagger3,访问出现404错误问题(未解决)

秉承着能用就用新的的理念&#xff0c;在JDK、SpringBoot、SpringCloud版本的兼容性下&#xff0c;选择了Java17、SpringBoot3.0.2整合Swagger3。 代码编译一切正常&#xff0c;Swagger的Bean也能加载&#xff0c;到了最后访问前端页面swagger-ui的时候出现404。 根据网上资料…

FFmpeg的HEVC解码器源代码学习笔记-3

简介&#xff1a; 使用FFmpeg对HEVC码流进行解码时&#xff0c;所采用的各种结构体的介绍&#xff1a; AVCodec typedef struct AVCodec {/*** Name of the codec implementation.* The name is globally unique among encoders and among decoders (but an* encoder and a …

【FreeRTOS】任务管理

一、任务管理介绍 1.任务状态 1&#xff09;调度器切换任务调度 2&#xff09;任务是一个死循环&#xff0c;如果想要停止这个任务则会调用在函数最后写的delete函数进行自杀 1.就绪态 1&#xff09;已经具备执行的能力&#xff0c;只等待调度器进行调度。 2&#xff09;新创建…

linux-并发通信

一.linux-tcp通信框架 1.基础框架 1.1 tcp 服务器框架 1.套接字 #include <sys/socket.h> int socket(int domain, int type, int protocol);
 返回的文件描述符可以指向当前的socket&#xff0c;后续通过对文件描述符的访问就可以配置这个socket 成功时返回文件…