超简单苍穹外卖跳过Day08微信支付!

 准备:未书写或导入Day08订单(微信)支付的任何代码,未配置相关yml文件(即无需相关yml文件,如果你导入了、配置了也没事

PS:学习阶段,如有问题及时反馈!

第一步:打开小程序开发工具,按图中修改,改完最好重新编译下

(前端不会,参考来自苍穹外卖跳过微信支付(全网最强,最详细,最容易理解)_跳过网页微信付费-优快云博客

第二步: 按照外卖学习视频导入书写资料Day08中以下红框文件中微信支付部分的代码(也就是视频Day08-17中提及的属于以下文件的代码)

第三步:在OrderServiceImplpayment方法里按图操作

第四步:在OrderServiceImplpaySuccess方法里检查是否实现这两个方法,有则完成;则无则回看视频Day08-17中此部分方法实现。

第五步:调试,“支付成功”。(注:由于前端支付成功提示信息被注释,小程序则不显示支付成功的提示信息)

### 苍穹外卖平台订单支付技术实现 #### 修改 `orderServiceImpl` 下的 `payment` 方法 为了使苍穹外卖平台能够跳过微信支付并直接显示支付成功的页面,在 `orderServiceImpl` 类中的 `payment` 方法进行了特定调整[^1]。此方法原本负责处理与第三方支付网关(如微信支付)之间的交互逻辑,现在被简化为模拟支付成功的结果。 ```java public class OrderServiceImpl { /** * 处理订单支付请求 * * @param ordersPaymentDTO 包含支付所需的信息的数据传输对象 * @return 返回表示支付状态的对象 */ public OrderPaymentVO payment(OrdersPaymentDTO ordersPaymentDTO) throws Exception { // 原始代码会调用微信API接口... // 新增:直接创建一个假的成功响应 OrderPaymentVO result = new OrderPaymentVO(); result.setSuccess(true); result.setMessage("支付已成功"); return result; } } ``` #### 解决支付问题而不涉及商户码 对于希望避开复杂认证过程的情况,可以通过更改前端展示逻辑来解决问题[^2]。具体来说: - **前端代码修改**:当用户点击“支付”按钮时,不再触发实际的在线支付流程;而是立即重定向到支付成功的界面。 这种做法虽然可以快速测试业务功能,但在生产环境中不推荐这样做,因为这违反了真实的商业交易原则,并可能带来法律风险。 #### 后端 API 接口定义 在后端部分,`OrderController` 中定义了一个用于接收来自客户端发起的支付请求的 RESTful API[^3]。该控制器接收到包含必要参数的 JSON 请求体之后,将其传递给服务层的方法来进行进一步处理。 ```java @RestController @RequestMapping("/orders") public class OrderController { private final IOrderService orderService; @Autowired public OrderController(IOrderService orderService){ this.orderService = orderService; } /** * 订单支付 * * @param ordersPaymentDTO 客户端提交的支付信息 * @throws Exception 如果发生错误则抛出异常 */ @PutMapping("/payment") @ApiOperation("订单支付") public Result<OrderPaymentVO> payment(@RequestBody OrdersPaymentDTO ordersPaymentDTO) throws Exception { log.info("订单支付:{}", ordersPaymentDTO); // 调用 service 层 method 进行支付操作 OrderPaymentVO orderPaymentVO = orderService.payment(ordersPaymentDTO); log.info("生成预支付交易单:{}", orderPaymentVO); return Result.success(orderPaymentVO); } } ``` #### 批量插入订单详情记录 除了上述核心支付逻辑外,还需要考虑如何高效地保存多个商品项至数据库表中。为此引入了 MyBatis 的 `<foreach>` 动态 SQL 片段,允许一次性向 `order_detail` 表内写入多条关联数据[^4]。 ```xml <insert id="insertBatch"> insert into order_detail ( name, image, order_id, dish_id, setmeal_id, dish_flavor, number, amount ) values <foreach collection="orderDetailList" item="od" separator=","> (#{od.name}, #{od.image}, #{od.orderId}, #{od.dishId}, #{od.setmealId}, #{od.dishFlavor}, #{od.number}, #{od.amount}) </foreach> </insert> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值