三、测试
内网穿透
开启花生壳或者其他产品 用于接收支付成功回调更新订单
执行下单
生成二维码
复制codeUrl参数打开草料 https://cli.im/url 进行扫码支付!
支付成功后去微信支付通知里面查看我们的交易订单号
调用申请退款接口
RestFul风格接口讲解
/api/wx-pay/native/refunds/{orderNo}/{refundsNo}/{reason}
orderNo 订单号
refundsNo 交易订单号 目前我们程序当中只需要后四位即可
reason 退款理由(可不填写)
退款成功
还没完~ 前面我们提到了退款的回调此时退款已经到达了用户的账户当中我们自己的数据库对应的订单数据还没更新呢
四、退款结果通知API
退款状态改变后,微信会把相关退款结果发送给商户。
注意:
对后台通知交互时,如果微信收到应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功
• 同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。 推荐的做法是,当商户系统收到通知进行处理时,先检查对应业务数据的状态,并判断该通知是否已经处理。如果未处理,则再进行处理;如果已处理,则直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。
• 如果在所有通知频率后没有收到微信侧回调。商户应调用查询订单接口确认订单状态。
**特别提醒:**商户系统对于开启结果通知的内容一定要做签名验证,并校验通知的信息是否与商户侧的信息一致,防止数据泄露导致出现“假通知”,造成资金损失。
接口说明
**请求方式:**POST
**请求URL:**该链接是通过[申请退款接口]指定的notify_url,必须为https协议。如果链接无法访问,商户将无法接收到微信通知。 通知url必须为直接可访问的url,不能携带参数。示例:“https://pay.weixin.qq.com/wxpay/pay.action”
以上是官方文档的原话简单来说就是和支付成功的回调一样就行啦
修改 WechatNativeController 新建refundsNotify 回调方法
⚠️ 和支付通知一样的逻辑只是处理的对象不同直接上代码就懂得明明白白
同学们动手打打代码
修改wxPayService 创建 processRefund方法 退款通知 处理退款单数据
此处逻辑和支付成功回调一样如果忘记了快去补习 第五章从零玩转系列之微信支付实战PC端支付微信回调接口搭建
- 解密返回的参数为明文
- 获取订单号用于查询或更新信息
- 启用锁防止重复提交
- 更新订单状态和退款单
- 释放锁
同学们手动打打代码吧~
五、测试退款回调
步骤和上面的测试一样哦
- 打开内网穿透工具
- 创建订单
- 草料生成二维码支付成功
- 调用申请退款接口
- 观察控制台的打印是否退款回调成功
⚠️ 如果3秒后退款回调没有到达那么请检查你设置的退款回调地址是否正确
退款回调完成
最后
本期结束咱们下次再见👋~ ,关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗
【选题思路】
“技术源于生活” 为什么写微信支付这种项目的文章呢? 因为我看到市面上的文章都不全面不细节不小白话更加没有配套Demo!!! 从而我的从零玩转微信支付诞生啦~ 搭配PC端、Uniapp端的不同实现.
【写作提纲】
I. 前言
A. 通过前言表达我每次的文章内容是什么东西
II. 订单退款接口实现
A. 集结生活之中的场景来解析他的逻辑
III. 步入正题
A. 集合前面的理论知识点编写出功能代码
IV. 测试
A. 通过测试用例一步步排查编写是否存在BUG