移动端智能体支付成功异步消息通知

更新时间:

在支付成功后,支付宝通过 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&notify_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支付宝对通知参数生成的签名。

验签与消息处理

  1. 将表单参数解析为字符串键值对,保留 URL 解码后的原始参数值;在验签完成前,不要重新序列化或修改 biz_content
  2. 标准 From 蚂蚁消息验签时,移除 signsign_type,将其余参数按参数名的字母顺序排序,并以 参数名=参数值 的形式使用 & 连接。
  3. 使用报文中的 charsetsign_type 和支付宝公钥验证 sign。Java 接入可使用支付宝服务端 SDK 的 AlipaySignature#getSignCheckContentV1AlipaySignature#rsaCheck
  4. 验签通过后,确认 msg_method,解析 biz_content,更新订单状态和支付结果卡片。
  5. 建议通过passback_params 透传平台内部订单号进行消息处理幂等控制。同一个订单已处理成功时,不要重复执行业务逻辑,直接返回 success

基于上述示例请求,移除 signsign_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&notify_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