支付宝支付回调的坑点
梳理一下对接支付宝支付时回调踩过的一个坑。
问题
时间过了一年再次收到一条来自支付宝的回调信息,结果被处理成支付成功的回调(还好后面的逻辑有对订单状态进行校验,所以没有流程上的漏洞)。
支付宝支付的回调
通知触发条件
触发条件名 | 触发条件描述 | 触发条件默认值 |
---|---|---|
TRADE_FINISHED | 交易完成 | true(触发通知) |
TRADE_SUCCESS | 支付成功 | true(触发通知) |
TRADE_CLOSED | 交易关闭 | true(触发通知) |
WAIT_BUYER_PAY | 交易创建 | false(不触发通知) |
从上表可得出,当支付宝交易单的状态被设为 TRADE_FINISHED/TRADE_SUCCESS/TRADE_CLOSED 时,都会触发一次回调通知
- TRADE_SUCCESS
TRADE_SUCCESS 的通知触发条件是商户签约的产品支持退款功能的前提下,买家付款成功 TRADE_FINISHED
TRADE_FINISHED 的通知触发条件是:- 一、商户签约的产品不支持退款功能的前提下,买家付款成功;
- 二、商户签约的产品支持退款功能的前提下,交易已经成功并且已经超过可退款期限。
- TRADE_CLOSED
未付款交易超时关闭,或支付完成后全额退款
通知的地址
通知的地址是调用 alipay.trade.create
(统一收单交易创建接口)时指定的回调地址 notify_url
问题剖析
一年之后又收到一条通知,剖析日志我们发现:
- 订单刚好是通知消息日期的一年前
- 通知里有两个参数
trade_status=TRADE_FINISHED&refund_fee=0.00
,也就是这个通知是由TRADE_FINISHED
状态触发的 - 查验后台设置的可退款期限:一年
- 实证结论——这个问题是
TRADE_FINISHED
通知触发条件的第二种情况导致的
支付宝方面的问题:
alipay.trade.refund
统一收单交易退款接口 没有提及退款存在回调的情况。而事实上退款之后(无论是全额还是部分),都会触发一次异步通知- 支付宝的回调通知数据结构非常像,如果这次我们不是在自身的订单状态上预先做判断,可能这次我们遇到的问题会导致财务风险
总结
综上所述,支付宝支付的文档虽然很全,但是写得很乱,很多重要的点经常不再重要的地方重点说明。对接的时候还是要仔细且多考虑几个方面,尽量编写健壮的有一定程度容灾能力的代码。
参考
https://opendocs.alipay.com/a...
https://opendocs.alipay.com/o...
4 声望
0 粉丝
推荐阅读
终于卷完了!Redis 打怪升级进阶成神之路(2023 最新版)!
是一种非关系型数据库服务,它能解决常规数据库的并发能力,比如传统的数据库的IO与性能的瓶颈,同样它是关系型数据库的一个补充,有着比较好的高效率与高性能。专注于key-value查询的redis、memcached、ttserver。
民工哥赞 13阅读 1.3k
花了几个月时间把 MySQL 重新巩固了一遍,梳理了一篇几万字 “超硬核” 的保姆式学习教程!(持续更新中~)
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
民工哥赞 14阅读 2.1k
算法可视化:一文弄懂 10 大排序算法
在本文中,我们将通过动图可视化加文字的形式,循序渐进全面介绍不同类型的算法及其用途(包括原理、优缺点及使用场景)并提供 Python 和 JavaScript 两种语言的示例代码。除此之外,每个算法都会附有一些技术说...
破晓L赞 8阅读 1.1k
硬卷完了!MongoDB 打怪升级进阶成神之路( 2023 最新版 )!
前面我们学习:MySQL 打怪升级进阶成神之路、Redis 打怪升级进阶成神之路,然后我们还在继续 NoSQL 的卷王之路。从第一篇文章开始,我们逐步详细介绍了 MogoDB 基础概念、安装和最基本的CURD操作、索引和聚合、工...
民工哥赞 7阅读 776
「刷起来」Go必看的进阶面试题详解
逃逸分析是Go语言中的一项重要优化技术,可以帮助程序减少内存分配和垃圾回收的开销,从而提高程序的性能。下面是一道涉及逃逸分析的面试题及其详解。
王中阳Go赞 4阅读 2k评论 1
架构设计-高性能篇
大家好,我是易安!今天我们谈一谈架构设计中的高性能架构涉及到的底层思想。本文分为缓存架构,单服务器高性能模型,集群下的高性能模型三个部分,内容很干,希望你仔细阅读。
架构狂人赞 4阅读 843
Nginx常用配置及和基本功能讲解 | 京东云技术团队
作者:京东物流 殷世杰Nginx已经广泛应用于J-one和Jdos的环境部署上,本文对Nginx的常用的配置和基本功能进行讲解,适合Nginx入门学习。1 核心配置找到Nginx安装目录下的conf目录下nginx.conf文件,Nginx的基本功...
京东云开发者赞 6阅读 648
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。