从零玩转系列之微信支付实战PC端我的订单接入退款取消接口2

简介: 从零玩转系列之微信支付实战PC端我的订单接入退款取消接口

三、前端接入退款和取消订单接口

查看文档他咋玩的我们就咋玩,首先在el-table-column内编写一个模版标签相当于DIV容器给这个模版添加一个属性#default="scope"

这个属性是用来接收当前行的数据的,然后在模版内添加两个按钮,一个是取消订单,一个是退款订单,如下图所示

4cd44af3_5151444.png

修改 order.vue 页面

f7b331d9_5151444.png

修改wechatPay.jsapi文件,添加两个方法

/**
 * 取消接口
 * @param orderNo 订单号
 * @returns {*}
 */
cancelInterface(orderNo) {
    return request({
        url: '/api/wx-pay/native/cancel/' + orderNo,
        method: 'post'
    });
},
/**
 * 退款接口
 * @param orderNo 订单号
 * @param reason 退款理由
 * @param refundNo 支付成功后的交易单号
 * @returns {*}
 */
refundInterface(orderNo, reason, refundNo) {
    return request({
        url: '/api/wx-pay/native/refunds/' + orderNo + '/' + refundNo + '/' + reason,
        method: 'post'
    });
}

1aa33e9e_5151444.png

取消订单

这个接口很简单,只需要传入订单号就可以了,然后在点击取消订单的时候调用这个接口,那么这个接口请求同学们自己去实现吧~

思路:

  1. 点击取消订单按钮,可以弹出提示框提示是否取消订单
  2. 获取当前行的订单号,然后调用取消订单接口,然后调用查询列表接口刷新

48eb89ff_5151444.png

退款订单

可以看到我们的设计图,首先点击需要退款的订单弹出一个退款核实窗口验证你是否是本人,然后在输入退款理由,点击确定退款.

d3e0cb39_5151444.png

Dialog 对话框

在保留当前页面状态的情况下,告知用户并承载相关操作。

783ec270_5151444.png

弹出层代码编写

<!-- 退款对话框 -->
      <el-dialog title="退款" v-model="refundDialogVisible" @close="closeDialog" width="350px" center>
        <el-form label-width="90px">
          <el-form-item label="交易订单号">
            <el-input style="width: 100%" v-model="refundNo" placeholder="请输入交易单号后四位"></el-input>
          </el-form-item>
          <el-form-item label="退款原因">
            <el-select style="width: 100%" v-model="reason" placeholder="请选择退款原因">
              <el-option label="不喜欢" value="不喜欢"></el-option>
              <el-option label="买错了" value="买错了"></el-option>
            </el-select>
          </el-form-item>
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button type="primary" @click="refundInterface()" :disabled="refundSubmitBtnDisabled">确 定 </el-button>
        </div>
      </el-dialog>

解释 v-model / close 作用

API#

属性名 说明 类型 默认

model-value / v-model 是否显示 Dialog boolean —

事件#

事件名 说明 Type

@close Dialog 关闭的回调 弹出层的 X Function

定义变量

// ---------------------------------------------------变量---------------------------------------------------
// 退款是否显示
const refundDialogVisible = ref(false)
// 退款按钮限制
const refundSubmitBtnDisabled = ref(false)
// 退款备注
const reason = ref("")
// 退款订单号
const orderNo = ref("")
// 交易单号
const refundNo = ref("")

编写关闭退款弹出并且清空数据

// 关闭退款弹出并且清空数据
const closeDialog = () => {
  refundDialogVisible.value = false
  refundSubmitBtnDisabled.value = false
  reason.value = ""
  orderNo.value = ""
  refundNo.value = ""
}

编写打开退款对话框方法 并且传入订单号用于退款接口使用

// 打开退款弹窗
const refundDialog = (orderNo) => {
  refundDialogVisible.value = true;
  orderNo.value = orderNo;
}

发送退款请求

编写退款请求方法

2c585d62_5151444.png

交易订单号只需要输入后四位我们是和后端对应过的别忘记咯!

567b2ee1_5151444.png

给同学布置一个作业咯给备注和交易单号添加校验,如果为空则提示用户需要填写

测试啥都没有输入不允许请求通过

95d751c7_5151444.png

修复 " BUG "

当我们直接抛出异常没有进行处理异常的话 SpringBoot会自动将异常信息封装成一个JSON返回给前端,

这个JSON不是我们自定义的,所以我们需要自定义异常处理类,将异常信息封装成我们自定义的JSON返回给前端

3ca4c749_5151444.png

打开后端创建 exception 包,然后创建一个全局异常处理类 GlobalExceptionHandler.java

// yangbuyi Copyright (c) https://yby6.com 2023.
package com.yby6.exception;
import com.yby6.reponse.R;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
 * 全局异常处理器
 *
 * @author Yang Shuai
 * Create By 2023/08/19
 * <p>
 */
@RestControllerAdvice
public class GlobalExceptionHandler {
    private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
    /**
     * 处理异常
     *
     * @param e e
     * @return {@link R}
     */
    @ExceptionHandler(Exception.class)
    public R handleException(Exception e) {
        log.error(e.getMessage(), e);
        return R.fail(e.getMessage());
    }
}

再次测试

测试乱输入,后端检测到了~

4a0088e8_5151444.png

测试输入正确的交易单号

前往微信找到支付账单对照一下,进行退款输入交易订单号后四位

bb90f0cf_5151444.png

a7ea00b1_5151444.png

前往手机查看退款结果

af620591_5151444.jpg

691b4239_5151444.png

3377a023_5151444.png

最后

本期结束咱们下次再见 👋~

,关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

【选题思路】

“技术源于生活” 为什么写微信支付这种项目的文章呢? 因为我看到市面上的文章都不全面不细节不小白话更加没有配套 Demo!!!

从而我的从零玩转微信支付诞生啦~ 搭配 PC 端、Uniapp 端的不同实现.

【写作提纲】

一、前言

通过前言表达我每次的文章内容是什么东西和注意事项,以及本篇文章的目录和彩蛋

二、介绍

介绍设计图的样式和功能,思路,以及后端接口的编写

三、前端接入退款和取消订单接口

实现取消接口和退款接口的编写、实现搭建一个弹出层用于退款使用、编写测试用例、结合前面的知识点修复一个 伪 “BUG”

相关文章
|
4月前
|
小程序 BI Go
当“企业微信协议”遇上旧iPad:一条被遗忘的推送如何撬动千万订单
在618大促中,面对短信退订率高、触达难的问题,运营人员巧妙利用闲置iPad登录企业微信,挖掘其未公开的协议接口,实现高效用户召回,最终提升转化率,保住预算。
185 0
|
4月前
|
算法 iOS开发 CDN
“企业微信iPad协议”第 0x04 天:当朋友圈接口在凌晨 2:14 突然返回 404
新品上线紧急任务:300位经销商朋友圈同步海报。突破官方限制,利用企业微信iPad协议私有接口,自动化上传发布。凌晨遭遇404,迅速定位并修复算法版本问题,最终高效完成推送,点赞超4200。技术在文档之外,也在边界之内。
239 0
|
4月前
|
iOS开发
“企业微信iPad协议”第0x0B次编译:当朋友圈接口在凌晨悄然返回空数组
新品海报发布失败,排查发现企业微信iPad端因本地时间偏差超60秒,导致`ext_ticket`校验失败。NTP校准后恢复正常。问题根源:独立加签逻辑对时间敏感,且错误不提示。精准时间成合规关键。
272 0
|
4月前
|
缓存 小程序 前端开发
商城/点餐/家政类小程序源码合集_微信抖音小程序源码开发从入门到精通实战
本文系统讲解如何利用现有源码快速开发商城、点餐、家政类微信/抖音小程序,涵盖环境搭建、核心功能实现、多平台部署与优化,提供完整技术方案。实战导向,助力开发者高效入门与落地。
|
4月前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
11月前
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。
|
8月前
|
JSON 监控 小程序
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
831 14
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
|
11月前
|
小程序 测试技术 数据安全/隐私保护
微信公众号接口测试实战指南
微信公众号接口测试是确保系统稳定性和功能完整性的重要环节。本文详细介绍了测试全流程,包括准备、工具选择(如Postman、JMeter)、用例设计与执行,以及常见问题的解决方法。通过全面测试,可以提前发现潜在问题,优化用户体验,确保公众号上线后稳定运行。内容涵盖基础接口、高级接口、微信支付和数据统计接口的测试,强调了功能验证、性能优化、安全保护及用户体验的重要性。未来,随着微信生态的发展,接口测试将面临更多挑战和机遇,如小程序融合、AI应用和国际化拓展。
|
4月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
5月前
|
小程序 JavaScript API
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
这篇文章介绍了使用uni-halo框架进行微信小程序开发的过程,包括选择该框架的原因、开发目标以及项目配置和部署的步骤。
222 0
uni-halo + 微信小程序开发实录:我的第一个作品诞生记

热门文章

最新文章