移动端智能体支付成功异步消息通知
更新时间:
在支付成功后,支付宝通过 From 蚂蚁消息异步通知手机厂商,由手机厂商更新并管理整体订单状态。接收与验签方式参考《From 蚂蚁消息服务使用》。
配置异步通知地址
在请求@alipay.trade.agent.pay(智能体支付接口) 时必须配置请求公参:notifyUrl (异步通知地址)
//Java版:
request.setNotifyUrl("商户自己的notify_url地址");
//PHP版:
$request->setNotifyUrl("商户自己的notify_url地址");
//.net版:
request.SetNotifyUrl("商户自己的notify_url地址");
//node.js版:
formData.addField('notifyUrl', '商户自己的notify_url地址');
//Python版:
request.notify_url = "商户自己的notify_url地址"
接收 POST 请求
手机厂商需要提供一个可被支付宝访问的应用网关地址。支付宝以 POST 方式发送通知,请按 application/x-www-form-urlencoded 表单解析请求正文,不要直接按 JSON 请求体解析。
请求正文示例(sign 的具体值省略):
charset=UTF-8&biz_content=%7B...%7D&utc_timestamp=1786345479770&sign={URL编码后的RSA2签名值}&app_id=2021007194668012&version=1.1&sign_type=RSA2¬ify_id=2026081000262150439010154745911788&msg_method=alipay.aipay.agentpay.renderinfo.notify
本消息需要重点处理以下参数:
| 参数 | 说明 |
|---|---|
biz_content | 通知业务数据。表单 URL 解码后为 JSON 字符串,验签通过后再解析。 |
msg_method | 消息接口标识。本场景固定为 alipay.aipay.agentpay.renderinfo.notify。 |
notify_id | 消息通知唯一标识,用于幂等处理。 |
charset | 验签字符集,本示例为 UTF-8。 |
sign_type | 签名算法,本示例为 RSA2。 |
sign | 支付宝对通知参数生成的签名。 |
验签与消息处理
- 将表单参数解析为字符串键值对,保留 URL 解码后的原始参数值;在验签完成前,不要重新序列化或修改
biz_content。 - 标准 From 蚂蚁消息验签时,移除
sign和sign_type,将其余参数按参数名的字母顺序排序,并以参数名=参数值的形式使用&连接。 - 使用报文中的
charset、sign_type和支付宝公钥验证sign。Java 接入可使用支付宝服务端 SDK 的AlipaySignature#getSignCheckContentV1和AlipaySignature#rsaCheck。 - 验签通过后,确认
msg_method,解析biz_content,更新订单状态和支付结果卡片。 - 建议通过
passback_params透传平台内部订单号进行消息处理幂等控制。同一个订单已处理成功时,不要重复执行业务逻辑,直接返回success。
基于上述示例请求,移除 sign、sign_type 并排序后的待验签字符串如下:
app_id=2021007194668012&biz_content={"agent_order_dto":{"amount":"1.00","seller_name":"DEVBTCONE","discount_amount":"0.00","actual_amount":"1.00","out_shake_no":"20260810008282150358840000078279","pay_time":"2026-08-10 15:04:38"},"alipay_brand_dto":{"icon_url":"https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/ev8ySJTC13QAAAAAQKAAAAgADlahAQFr/original","title":"支付宝AI支付","content":"24h守护你的资金安全"}}&charset=UTF-8&msg_method=alipay.aipay.agentpay.renderinfo.notify¬ify_id=2026081000262150439010154745911788&utc_timestamp=1786345479770&version=1.1
biz_content 格式
{
"agent_order_dto": {
"amount": "1.00",
"seller_name": "DEVBTCONE",
"discount_amount": "0.00",
"actual_amount": "1.00",
"out_shake_no": "20260810008282150358840000078279",
"pay_time": "2026-08-10 15:04:38"
},
"alipay_brand_dto": {
"iconUrl": "https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/B-y9S6ZeSiYAAAAAQCAAAAgADlahAQFr/original",
"content": "24h守护你的资金安全",
"checkIconUrl": "https://mdn.alipayobjects.com/huamei_5fajmi/afts/img/BE3zQbkG-WAAAAAALyAAAAgADlahAQFr/original"
},
"passback_params": "agent平台自定义透传json串"
}
其中,agent_order_dto 用于更新订单金额、卖家、支付时间及订单号等订单信息;alipay_brand_dto 用于更新支付结果卡片中的支付宝品牌展示信息。
响应要求
消息验签且业务处理成功后,HTTP 同步响应正文必须返回纯文本 success,支付宝收到后停止重试:
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
success
返回 fail、空字符串或其他内容均会被认为处理失败,支付宝可能按照消息投递重试策略再次发送。同一条消息可能被重复投递,因此必须保证 notify_id 幂等;如采用异步业务处理,应在消息已可靠落库或进入可靠消息队列后再返回 success。