基于微信支付、退款的一个取消预约的方案
一、前提
本方案是基于 「微信非付款码支付」 进行设计的。
二、业务场景
首先,大家先大概了解下「预约」和「取消预约」两个流程。
- 预约
- 取消预约
三、遇到的问题
试想如下场景:
用户预约,拉起微信支付后选择支付,但是在支付回调通知前,用户又发起了取消。此时该如何实现取消逻辑呢?
此时,订单的状态处于 “待支付”,是允许取消还是不允许取消呢?首先,说下 “不允许取消” 这种情况在业务上是不可能成立的,为什么这么说呢?因为,只有那些处于 “支付中” 状态的订单不允许取消才合理,而我们只有 “待支付”、“支付成功” 状态,我们无法得到 “支付中” 这个状态。
所以,只能允许取消!!!!
如果允许取消的话,是退款还是不退款呢?通过当前订单状态 “待支付”,我们也没办法判断用户是取消支付了(未发生真正的支付不需要进行退款),还是支付了但我方系统还未得到支付回调通知(发生了真正的支付需要进行退款)。
分别在 “取消支付”、“支付了我方系统还未得到支付回调通知” 两个场景下分别进行 退款、不退款 都会出现那些问题呢?
操作 | 订单状态 | 取消支付 | 支付了我方系统还未得到支付回调通知 |
---|---|---|---|
不退款 | 待支付 => 取消 | 因为根本没发生实际的支付,所以不退款是合理的 | 订单虽然成功取消了,但由于不退款,造成用户无法得到退款的钱 |
退款 | 待支付 => 取消 | 因为根本没发生实际的支付,所以所有退款都会失败 | 1、退款失败(那些在微信端还在支付中的订单);2、退款成功(刚好支付完成且成功) |
四、方案设计
用户在前端触发「取消」
支付回调通知
判断 “支付成功” 的交易是否有对应的「由于取消产生的待退款任务」,如果存在,则需要进行退库退款。至此,通过以上 2 步,我们来看看可能会出现的所有场景,如下:
这里需要重点说明的是 场景四。由于并发的情况,会造成一个本该被处理的「由于取消产生的待退款任务」可能永远都无法被处理的情况产生。定时任务
为了解决 场景四 的问题,我们还需要一个定时任务来进行最后的兜底处理。
基于微信支付、退款的一个取消预约的方案相关推荐
- 基于微信小程序的充电桩预约管理系统的设计与实现(论文+源码)_kaic
摘要 微信小程序的充电桩预约管理系统是一个复杂的系统,需要遵循不同的设计原则和方法,在实现高可用性.高性能.高安全性和高稳定性等特点的同时,还要注重用户体验和易用性,不断改进和迭代优化,以提高系统性能 ...
- 基于微信小程序的图书馆座位预约系统的设计与实现
1. 系统开发背景 图书馆因有良好的学习氛围.大量的学习资源吸引大家前来学习,图书馆还未开馆就有大量的同学在门口排队等待,有限的座位与日益增加的自主学习者之间形成了供不应求的现象,再加上不了解图书馆的 ...
- 基于微信小程序的校园体育馆预约系统.docx
摘要 1 1 引言 1 2 系统分析 1 2.1 可行性分析 1 2.1.1技术可行性 1 2.1.2操作可行性 1 2.1.3经济可行性 2 2.2 用户需求分析 2 3 系统总体设计 2 3.1 ...
- 计算机毕业设计-基于微信小程序的大学生心理预约咨询系统-心理测试小程序
注意:该项目只展示部分功能,如需了解,评论区咨询即可. 本文目录 1.开发环境 2.系统的设计背景 3 各角色功能模块 3.1 学生用户 3.2 心理老师 3.3 管理员 4 系统页面展示 4.1 用 ...
- 微信小程序开发实战11_4 微信支付退款流程
当交易发生之后一年内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付金额退还给买家,微信支付将收到退款请求并且验证成功之后,将支付款按原路退还至买家账号上.使用该接口时的一些注意事项如下 ...
- java 微信转账 ca_error_java,微信支付退款_微信支付退款接口调用证书出现错误,java,微信支付退款,ssl - phpStudy...
微信支付退款接口调用证书出现错误 PS:代码是copy腾讯提供的demo,但运行有问题,望大拿能够帮忙解决 加载证书时间出现如下错误: java.io.IOException: DER input, ...
- 基于微信小程序的医院挂号预约系统
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA ...
- java 中实现微信支付退款功能案例
微信支付功能做了太多,今天又做了支付.退款.查询.提现等等,顺便把支付和退款代码贴出来,希望对初学者有点帮助. 首先调用微信支付退款 API 地址 https://pay.weixin.qq.com/ ...
- Java 微信小程序笔记 二、 微信支付退款案例
一.前期准备工作: 上篇博客配置的一些参数和文件Jar包 都要用到 微信支付需要小程序和商户绑定 APP绑定微信商户平台获取商户id(mchID). 证书(商户后台下载). 支付签名密钥(商户后台设置 ...
最新文章
- Sciences:Knight组发表尸体降解过程中的微生物组
- 3D点云论文汇总-实时更新
- Java标识符与命名规则
- React开发(182):ant design table中 带线框的列表
- Written English-书面-句型学习
- 触发事件_SAP 通过事件触发后台JOB
- 全局变量,静态局部变量,局部变量空间的堆分配和栈分配问题
- git删除远程提交记录
- 一个基于.NET Core3.1的开源项目帮你彻底搞懂WPF框架Prism
- 职场菜鸟捕食指北【相亲篇】
- dell计算机在桌面不显示,你好,在吗?我的戴尔笔记本电脑桌面图标不显示为什么?...
- archlinux安装kde常见的问题(无法登录,黑屏,无法调节亮度等)
- 智能时代为什么需要区块链技术?
- 鼠标停在按钮上 按钮变大
- 电力自动化服务器的原理,EMCS电力自动化系统
- 2021年N1叉车司机考试及N1叉车司机模拟试题
- 激活win10管理员身份
- 人工智能领域最佳5种编程语言
- 阿里巴巴笔试 算法 9.21
- vue-pdf不显示电子签章
热门文章
- 50 OHM阻抗线设计
- 计算机中公式提取用什么函数,技巧:Excel快速从文本中提取单元格中的数字函数公式...
- 如何安装最新igraph 现在已经无坑了
- DRM驱动(三)之CREATE_DUMB
- alios下载_AliOS Studio(阿里编程工具)
- 计算机网络常见面试题(计算机考研必备)
- 什么是React为什么使用React什么时候使用React
- 【9102年】考研还是找工作?分享看完心得体会(如果你错过了月亮,那就不要错过星星了)
- Hud检测之图像点数计算
- 计算机毕业设计 SSM+Vue消防管理系统 智慧消防系统 消防设备管理系统 消防知识宣传网站Java Vue MySQL数据库 远程调试 代码讲解