开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
文档中心
凯发app官方网站的技术支持 & 案例 faq 
资金能力 > 周期/商家扣款 > 案例分析 > 周期/商家扣款如何设置异步通知
收藏
我的文档
设置
场景说明
周期/商家扣款异步通知是结合 notify_url 地址和应用网关进行异步通知返回,具体根据接口文档参数设置。
周期/商家扣款签约以及解约都会触发异步通知,根据签约场景不同,异步发送地址不同。
支持设置 notify_url 的api:
接口英文名
接口中文名
支付宝个人协议页面签约接口

app支付 2.0 接口
支付宝个人代扣协议解约接口
统一收单交易支付接口
异步触发规则
返回签约异步
先签约,后代扣(alipay.user.agreement.page.sign)
签约异步地址优先级:notify_url参数 > 应用网关地址。
签约异步通知发送到支付宝个人协议页面签约接口设置的 notify_url 异步地址,若是没有设置 notify_url,则发送到应用中设置的应用网关地址。
支付后签约(alipay.trade.app.pay )
签约异步地址优先级:sign_notify_url 参数 > notify_url 参数 > 应用网关地址。
支付异步地址优先级:只支持 notify_url 参数。
签约异步通知发送到app支付接口设置的 sign_notify_url(签约异步地址),若是没有设置 sign_notify_url,则发送到notify_url地址中,若是 sign_notify_url 和 notify_url 都没有设置,则发送到应用中设置的应用网关地址。
支付异步通知只发送到app支付接口设置的 notify_url 地址中,若是未设置 notify_url,则不触发支付异步。
返回解约异步
商家解约(alipay.user.agreement.unsign)
解约异步地址优先级:notify_url参数 > 应用网关地址。
解约异步通知发送到支付宝个人代扣协议解约接口设置 notify_url 地址中,若是 notify_url 都没有设置,则发送到应用中设置的应用网关地址。
自动解约
解约异步地址优先级:不触发异步。
签约时设置 sign_validity_period(签约有效期):签约到期,协议自动过期失效,不会触发异步。
用户解约
解约异步地址优先级:只发送到应用网关中。
无论是什么场景中签约的周期/商家扣款,用户客户端内或pc端解约触发的异步通知,是发送到appid下的应用网关地址中。
返回支付异步
alipay.trade.pay
先签约,后代扣 场景和 支付后签约 场景签约成功后,在后续的扣款中都需要使用统一收单交易支付接口。
支付异步地址优先级:只支持 notify_url 参数。
支付异步通知只发送到统一收单交易支付接口设置的 notify_url 地址中,若是未设置 notify_url,则不触发支付异步。
支付异步说明可查看 当面付的支付异步通知
异步地址设置
周期/商家扣款签约以及解约都会触发异步通知,根据签约场景不同,异步发送地址不同。
异步设置方式
notify_url传参示例
接口调用 sdk 设置 notify_url 传参方式如下:
sign_notify_url传参示例
应用网关设置位置
应用网关详见 应用网关和授权回调地址如何配置

异步地址设置要求
异步地址必须为:外网 post 访问为 http200 的状态,详情可查看 支付宝异步通知说明
异步说明
异步参数说明
异步通知大部分参数说明可查看 alipay.user.agreement.query支付宝个人代扣协议查询接口)的参数说明。
注意:协议查询接口中不含有部分异步返回的参数信息,如 notify_type 等。
异步示例
异步触发条件
签约触发条件
根据 status 触发条件,只有签约成功和解约成功才会返回异步,签约失败和解约失败都是不会触发异步。
注意:unsign(解约)是只有解约(解约接口或者客户端解约)才会触发返回的状态,当用户解约后调用 alipay.user.agreement.query支付宝个人代扣协议查询接口)查询协议,会提示 用户协议不存在(user_agreement_not_exist),不会返回 status=unsign 的状态。
触发条件名
触发条件描述
触发条件默认值
状态说明
normal
正常
true(触发通知)
签约成功
unsign
解约
true(触发通知)
解约成功
temp
暂存,协议未生效过
false(不触发通知)
周期/商家扣款不含该状态,可忽略
stop
暂停
false(不触发通知)
周期/商家扣款不含该状态,可忽略
支付触发条件
alipay.trade.app.pay 异步触发条件
通知类型
描述
默认开启
tradestatus.trade_closed
交易关闭
1
tradestatus.trade_finished
交易完结
1
tradestatus.trade_success
支付成功
1
tradestatus.wait_buyer_pay
交易创建
0
alipay.trade.pay 异步触发条件
通知类型
描述
默认开启
tradestatus.trade_closed
交易关闭
0
tradestatus.trade_finished
交易完结
0
tradestatus.trade_success
支付成功
1
tradestatus.wait_buyer_pay
交易创建
0
如何区分异步数据
周期/商家扣款签约、接口解约、客户端内解约都会触发异步。
区分支付返回异步和签约返回异步
支付接口返回的异步参数和签约返回的异步参数是不一样的。
支付返回异步含有 out_trade_no、trade_no。
签约返回异步含有 external_agreement_no、agreement_no。
注意:请求时设置 external_agreement_no,异步必传。
区分签约返回异步和解约返回异步
签约返回异步和解约返回异步可以根据 status 判断
签约返回异步含有status=normal,notify_type=dut_user_sign。
解约返回异步含有status=unsign,notify_type=dut_user_unsign。
区分接口解约异步和客户端解约异步
周期/商家扣款无论是协议解约接口,还是用户通过客户端内解约,返回的异步通知数据都是一致的,无法通过参数信息进行判断是通过哪个渠道进行解约。
通过接口解约,异步发送到支付宝个人代扣协议解约接口的 notify_url。
通过客户端解约,异步发送到应用的应用网关地址。
对 notify_url 和应用网关通过接收地址进行区分,如果 notify_url 和应用网关地址设置一致,则无法区分。
支付并签约签约异步对应哪笔交易
周期/商家扣款“支付并签约”场景(alipay.trade.app.pay)支付并且签约成功会触发2条异步通知,商家收到签约返回的异步想要了解其对应的哪笔支付的交易。
建议 alipay.trade.app.pay 必传 external_agreement_no 和 sign_scene。
out_trade_no 和 external_agreement_no 保持唯一性,并自行设置其关联性,如 out_trade_no=12345,external_agreement_no=a12345。
签约异步必返 external_agreement_no,接收到异步 external_agreement_no=a12345,即可了解对应的支付交易为 out_trade_no=12345。
异步验签
根据签名方式可分为公钥证书验签和rsa2验签。
rsa2普通公钥签名验签方法可查看 如何使用rsa2签名验签
公钥证书验签签名验签方法可查看 如何使用证书签名验签
注意事项
若是 alipay.trade.app.pay 中没有设置 sign_notify_url,只是设置了 notify_url,在 notify_url 地址中会接收到支付和签约的2种类型异步通知,需要商家自己在app支付异步地址中进行区分通知是签约返回还是支付返回。
周期/商家扣款 支付并签约 场景没有收到签约异步通知可查看
异步通知返回 sign_type 格式。
签约和接口解约,异步的 sign_type 与签名时设置的 sign_type 一致。
客户端内解约,异步的 sign_type 根据应用网关设置的 加签方式 决定。
注意:目前应用网关的加签方式默认为 rsa2 格式,即rsa(sha256),只有2018年1月5日之前创建的应用才有可能存在 rsa2 和 rsa 两种加签方式。

内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图