运维.售后
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
博客
Blog
ToB门户
了解全球最新的ToB事件
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
手把手|支付宝异步通知如何使用
手把手|支付宝异步通知如何使用
渣渣兔
金牌会员
|
2023-11-14 18:21:03
|
显示全部楼层
|
阅读模式
楼主
主题
875
|
帖子
875
|
积分
2625
最近在接支付宝的支付相关功能,用到异步通知比较多,也比较容易出现问题。
这里总结了一下支付宝
异步通知
的相关内容,希望能对大家有所帮助。
一、什么是异步通知
异步通知是指支付宝通过主动向开发者发送消息通知的方式来告知商家目前交易变更的情况。
支付宝建议主要通过这种方式来
确定实际的交易状态
,实际是通过 POST 的方式去发送通知的。
二、如何设置异步通知地址
既然是支付宝主动通知,需要预先给到支付宝提供一个通知的地址,而根据不同的产品,异步通知的地址设置的也不同,主要分为以下两个情况:
通过接口参数配置的异步通知地址
通过平台配置的异步通知地址
通过接口参数配置的异步通知地址
使用场景:
交易类收单产品,例如当面付、手机网站支付等
配置方式:
在接口的 notify_url 参数中设置接收的地址 [
如何设置notify_url
]
地址要求:
能正常访问(http 状态为 200)
接口是否支持异步通知就看对应的接口文档参数里面是否有 notify_url 参数。
通过平台配置的异步通知地址
使用场景:
资金营销类产品
,
例如转账到支付宝账号、商家券、蚂蚁门店等
配置方式:
在开发应用下的应用网关里进行地址配置 [
如何设置应用网关
]
地址要求:
能正常访问(http 状态为 200)
⚠️ 特别说明:
需要先对消息通知进行订阅操作,不订阅不发哦 [
如何订阅蚂蚁消息
]
三、异步通知如何触发
支付宝的异步通知也不是你想要就能给你发的,他发送的逻辑主要是按照
该事件是否达到了某个【状态】
。
对于交易类的产品,支付宝统一设定了交易状态,针对不同产品的状态有基本是否发送配置,下面将对各类交易状态进行逐一介绍。
支付宝交易状态说明
支付宝给订单设置了四个交易状态,分别为:
WAIT_BUYER_PAY(交易创建,等待买家付款)
TRADE_SUCCESS(交易支付成功,可退款)
TRADE_FINISHED(交易结束,不可退款)
TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)
经验分享:
交易成功(
TRADE_SUCCESS
)和交易结束(
TRADE_FINISHED
)的区别在于是否可以退款,这个怎么理解呢?
关键点在于这笔交易
是否允许退款
或者是
允许多久时间内可以退款
。
如果交易是不允许退款的交易,订单的交易状态会直接变为交易结束(
TRADE_FINISHED
),并不会经过交易成功(
TRADE_SUCCESS
);
如果是允许6个月内退款的,在交易成功之后的6个月后才会由交易成功(
TRADE_SUCCESS
)变为交易结束(
TRADE_FINISHED
)。
因为这个逻辑,就会出现一些奇奇怪怪的问题 (。_ 。) 例如:
[
交易成功后一年又收到异步通知
]
[
交易成功后 3 个月又收到异步通知
]
支付宝交易状态触发条件
那么,是所有的状态都会发送吗?可不可以不发送?
当然不是所有状态都发送的,比如交易创建,等待买家付款(
WAIT_BUYER_PAY
)这个状态对于我们来说就没什么用。
对于不同的产品,交易状态是否触发都不一样,例如手机网站支付:
除了交易创建之外,其他都是默认会发送的。参考:[
各支付产品异步通知触发说明
]
订阅消息的触发条件
上面介绍支付宝交易的触发条件,下面来简单说明下订阅消息是如何触发状态的。
订阅消息的触发状态就有很多了,不同的产品有不同的触发状态。下面以商家券产品为例:
目前有创建、修改、停止、追加四种通知,需要哪个状态触发通知,就订阅哪个通知。
目前的订阅方式有两种:WebSocket 和 HTTP。
如果是 HTTP 的方式,接收的地址直接配置在应用网关上;
WebSocket 的方式无需配置应用网关,按照文档进行接入即可。
四、获取到异步通知之后要做什么
上面说过,支付宝的异步通知是以 post 方式获取的,用来判断交易的状态,那么接收到异步通知之后除了进行交易状态的判断之外我们还需要做什么呢?直接进行逻辑处理?数据落库?
都不是,重要的是
安全! 安全! 安全!
(▼ヘ▼#) 严肃强调
收到异步通知消息之后一定要判断清楚这条消息是不是真的是支付宝发出的,现在外面不法分子很多,大家要小心。
为了判断消息的真伪,我们需要
先对接收到的数据进行验签。
验签的方式这边就不做较多的叙述了,放在这里大家自己看 [
SDK 如何实现签名验签
]。
验证成功之后需要直接在页面上打印出 success 七个字符给支付宝,告诉支付宝你已经成功收到这个消息了。
如果你不想打印也行,只不过就是接下来的 24 个小时以内,支付宝会一直给你发这笔消息
[
重复收到异步通知
]
验签处理完成之后,你想干嘛就可以干嘛啦~
以上就是关于支付宝异步通知基本逻辑啦,欢迎大家一起补充订正,✿✿ヽ(°▽°)ノ✿ 一起交流进步~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
渣渣兔
金牌会员
这个人很懒什么都没写!
楼主热帖
SqlServer2012升级到SqlServer2016
事务的ACID特性
深度干货!一篇Paper带您读懂HTAP | St ...
iOS事件传递链与响应链
DCM: 中间件家族迎来新成员
SaaS软件工程师成长路径
(内附源码)Node.js小试——使用Node ...
还在纠结报表工具的选型么?来看看这个 ...
.NET for Apache Spark 入门演练
arthas使用介绍
标签云
存储
服务器
快速回复
返回顶部
返回列表