一、前提

本方案是基于 「微信非付款码支付」 进行设计的。

二、业务场景

首先,大家先大概了解下「预约」和「取消预约」两个流程。

  1. 预约
  2. 取消预约

三、遇到的问题

试想如下场景:

用户预约,拉起微信支付后选择支付,但是在支付回调通知前,用户又发起了取消。此时该如何实现取消逻辑呢?

此时,订单的状态处于 “待支付”,是允许取消还是不允许取消呢?首先,说下 “不允许取消” 这种情况在业务上是不可能成立的,为什么这么说呢?因为,只有那些处于 “支付中” 状态的订单不允许取消才合理,而我们只有 “待支付”、“支付成功” 状态,我们无法得到 “支付中” 这个状态。

所以,只能允许取消!!!!

如果允许取消的话,是退款还是不退款呢?通过当前订单状态 “待支付”,我们也没办法判断用户是取消支付了(未发生真正的支付不需要进行退款),还是支付了但我方系统还未得到支付回调通知(发生了真正的支付需要进行退款)。

分别在 “取消支付”、“支付了我方系统还未得到支付回调通知” 两个场景下分别进行 退款、不退款 都会出现那些问题呢?

操作 订单状态 取消支付 支付了我方系统还未得到支付回调通知
不退款 待支付 => 取消 因为根本没发生实际的支付,所以不退款是合理的 订单虽然成功取消了,但由于不退款,造成用户无法得到退款的钱
退款 待支付 => 取消 因为根本没发生实际的支付,所以所有退款都会失败 1、退款失败(那些在微信端还在支付中的订单);2、退款成功(刚好支付完成且成功)

四、方案设计

  1. 用户在前端触发「取消」

  2. 支付回调通知

    判断 “支付成功” 的交易是否有对应的「由于取消产生的待退款任务」,如果存在,则需要进行退库退款。

    至此,通过以上 2 步,我们来看看可能会出现的所有场景,如下:

    这里需要重点说明的是 场景四。由于并发的情况,会造成一个本该被处理的「由于取消产生的待退款任务」可能永远都无法被处理的情况产生。

  3. 定时任务

    为了解决 场景四 的问题,我们还需要一个定时任务来进行最后的兜底处理。

基于微信支付、退款的一个取消预约的方案相关推荐

  1. 基于微信小程序的充电桩预约管理系统的设计与实现(论文+源码)_kaic

    摘要 微信小程序的充电桩预约管理系统是一个复杂的系统,需要遵循不同的设计原则和方法,在实现高可用性.高性能.高安全性和高稳定性等特点的同时,还要注重用户体验和易用性,不断改进和迭代优化,以提高系统性能 ...

  2. 基于微信小程序的图书馆座位预约系统的设计与实现

    1. 系统开发背景 图书馆因有良好的学习氛围.大量的学习资源吸引大家前来学习,图书馆还未开馆就有大量的同学在门口排队等待,有限的座位与日益增加的自主学习者之间形成了供不应求的现象,再加上不了解图书馆的 ...

  3. 基于微信小程序的校园体育馆预约系统.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 ...

  4. 计算机毕业设计-基于微信小程序的大学生心理预约咨询系统-心理测试小程序

    注意:该项目只展示部分功能,如需了解,评论区咨询即可. 本文目录 1.开发环境 2.系统的设计背景 3 各角色功能模块 3.1 学生用户 3.2 心理老师 3.3 管理员 4 系统页面展示 4.1 用 ...

  5. 微信小程序开发实战11_4 微信支付退款流程

    当交易发生之后一年内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付金额退还给买家,微信支付将收到退款请求并且验证成功之后,将支付款按原路退还至买家账号上.使用该接口时的一些注意事项如下 ...

  6. java 微信转账 ca_error_java,微信支付退款_微信支付退款接口调用证书出现错误,java,微信支付退款,ssl - phpStudy...

    微信支付退款接口调用证书出现错误 PS:代码是copy腾讯提供的demo,但运行有问题,望大拿能够帮忙解决 加载证书时间出现如下错误: java.io.IOException: DER input, ...

  7. 基于微信小程序的医院挂号预约系统

    末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA ...

  8. java 中实现微信支付退款功能案例

    微信支付功能做了太多,今天又做了支付.退款.查询.提现等等,顺便把支付和退款代码贴出来,希望对初学者有点帮助. 首先调用微信支付退款 API 地址 https://pay.weixin.qq.com/ ...

  9. Java 微信小程序笔记 二、 微信支付退款案例

    一.前期准备工作: 上篇博客配置的一些参数和文件Jar包 都要用到 微信支付需要小程序和商户绑定 APP绑定微信商户平台获取商户id(mchID). 证书(商户后台下载). 支付签名密钥(商户后台设置 ...

最新文章

  1. Sciences:Knight组发表尸体降解过程中的微生物组
  2. 3D点云论文汇总-实时更新
  3. Java标识符与命名规则
  4. React开发(182):ant design table中 带线框的列表
  5. Written English-书面-句型学习
  6. 触发事件_SAP 通过事件触发后台JOB
  7. 全局变量,静态局部变量,局部变量空间的堆分配和栈分配问题
  8. git删除远程提交记录
  9. 一个基于.NET Core3.1的开源项目帮你彻底搞懂WPF框架Prism
  10. 职场菜鸟捕食指北【相亲篇】
  11. dell计算机在桌面不显示,你好,在吗?我的戴尔笔记本电脑桌面图标不显示为什么?...
  12. archlinux安装kde常见的问题(无法登录,黑屏,无法调节亮度等)
  13. 智能时代为什么需要区块链技术?
  14. 鼠标停在按钮上 按钮变大
  15. 电力自动化服务器的原理,EMCS电力自动化系统
  16. 2021年N1叉车司机考试及N1叉车司机模拟试题
  17. 激活win10管理员身份
  18. 人工智能领域最佳5种编程语言
  19. 阿里巴巴笔试 算法 9.21
  20. vue-pdf不显示电子签章

热门文章

  1. 50 OHM阻抗线设计
  2. 计算机中公式提取用什么函数,技巧:Excel快速从文本中提取单元格中的数字函数公式...
  3. 如何安装最新igraph 现在已经无坑了
  4. DRM驱动(三)之CREATE_DUMB
  5. alios下载_AliOS Studio(阿里编程工具)
  6. 计算机网络常见面试题(计算机考研必备)
  7. 什么是React为什么使用React什么时候使用React
  8. 【9102年】考研还是找工作?分享看完心得体会(如果你错过了月亮,那就不要错过星星了)
  9. Hud检测之图像点数计算
  10. 计算机毕业设计 SSM+Vue消防管理系统 智慧消防系统 消防设备管理系统 消防知识宣传网站Java Vue MySQL数据库 远程调试 代码讲解