更新时间:2023-06-21 10:56:18收藏我的文档设置返回文档场景说明周期/商家扣款异步通知是结合 notify_url 地址和应用网关进行异步通知返回,具体根据接口文档参数设置。周期/商家扣款签约以及解约都会触发异步通知,根据签约场景不同,异步发送地址不同。支持设置 notify_url 的api:接口英文名接口中文名alipay.user.agreement.page.sign支付宝个人协议页面签约接口app支付 2.0 接口alipay.user.agreement.unsign支付宝个人代扣协议解约接口alipay.trade.pay统一收单交易支付接口异步触发规则返回签约异步先签约,后代扣(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交易关闭1tradestatus.trade_finished交易完结1tradestatus.trade_success支付成功1tradestatus.wait_buyer_pay交易创建0alipay.trade.pay 异步触发条件通知类型描述默认开启tradestatus.trade_closed交易关闭0tradestatus.trade_finished交易完结0tradestatus.trade_success支付成功1tradestatus.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 两种加签方式。