接收通知
了解 Alipay 所支持的通知接口及如何集成 Alipay 的通知接口。
功能
各通知接口的功能及所支持的产品如下表所示:
通知接口 | 收银台 | 代扣 | 反扫支付 | 订单码支付 | 聚合码支付 | 说明 |
❌ | ✔️ | ❌ | ❌ | ❌ | 在授权成功或授权取消时,Alipay 使用该接口向您发送授权结果信息。authorizationNotifyType 字段表明授权通知的类型:
| |
✔️ | ✔️ | ✔️ | ✔️ | ✔️ | 在支付或卡授权支付处理达到成功或失败终态时,Alipay 使用该接口向您发送支付结果信息。result.resultStatus 字段表明支付或卡授权支付的结果:
| |
✔️ | ❌ | ❌ | ❌ | ❌ | 在请款处理达到成功或失败终态时,Alipay 使用该接口向您发送请款结果信息。result.resultStatus 字段表明请款的结果:
| |
✔️ | ✔️ | ❌ | ❌ | ❌ | Alipay 使用该接口向您发送拒付信息。disputeNotificationType字段表明拒付通知的类型:
| |
✔️ | ✔️ | ❌ | ❌ | ❌ | 在退款处理达到成功或失败终态时,Alipay 使用该接口向您发送退款结果信息。refundStatus 字段表明退款的结果:
|
表 1. 通知接口功能及支持产品
配置通知地址
您可以通过接口或开发者中心来配置通知地址。如果您同时使用了这两种方式进行配置,通知地址以 API 配置的为准。
表 2. 通知地址配置方法
处理通知结果
1. 验签
Alipay 发送的通知结果由 Alipay 加签,故建议您验证签名以确认通知由 Alipay 发送。您可以自行验签或使用 Alipay SDK 验签。
如您选择自行验签,请参考 加验签。如您使用 Alipay SDK, 请在 SignatureTool.verify
方法中为对应参数赋值:
boolean isSuccess = SignatureTool.verify(httpMethod, path, clientId, rspTimeStr, rspBody, signature, alipayPublicKey);
signature 的值来自通知头,如下例所示:
"Content-Type": "application/json", "Request-Time": "2019-07-12T12:08:56+05:30", "client-id": "T_111222333", "Signature": "algorithm=RSA256,keyVersion=1,signature=jTOHqknjk%2fnDjEn8lfg%2beNODdoh2eHGJV%2blvrKaDwP782WxJ7ro49giqUu23MUM8sFVVNvhg32qHS3sd4O6uf5kAVLqztqNOPJFZcjw141EVi1vrs%2bIB4vU0%2fK%2f8z2GyWUByh2lHOWFsp%2b5QKCclXp%2bjacYqWYUur5IVbuebR1LoD5IiJ7u7J9qYriFxodkxmIAJYJyJs7mks2FWHh2YePLj3K%2f4B65idy7RBKqY1NN1XcvqnbQmlfCH8CIv75bg%2fr9sGmPE5a%2bYgL8N9Q41buGwMSq1IcNsbceMbyPhw5Z5HnJ7tPz12fvdSi0cEicPikDthQ2EQFmtpntXcAc%2fHA%3d%3d"
2. 返回收到确认信息
在您验签确认通知由 Alipay 发送后,您需要向 Alipay 返回一条收到确认信息以告知 Alipay 您收到了通知。收到确认信息无需数字签名。
您发送给 Alipay 的消息头如下例所示:
"Content-Type": "application/json", "response-time": "2019-07-12T12:08:56+05:30", "client-id": "T_111222333",
您发送给 Alipay 的消息体如下例所示:
{
"result": {
"resultCode": "SUCCESS",
"resultStatus": "S",
"resultMessage": "Success"
}
}
如您未向 Alipay 发送收到确认信息或因网络原因 Alipay 未收到此信息,Alipay 会在 24 小时内自动重发通知,最多重发7次或直至收到正确响应。发送间隔时间为:0 秒、2 分钟、10 分钟、10 分钟、1 小时、2 小时、6 小时和 15 小时。
注意:对于重复收到的 Alipay 通知,记录下已处理的通知并做好幂等,防止同一请求多次处理。