﻿在支付成功后，支付宝通过 **From 蚂蚁消息**异步通知手机厂商，由手机厂商更新并管理整体订单状态。接收与验签方式参考[<font style="color:rgb(cmsDocQcId-linkTitleConsistence-a-CHG-72ba9729, -1, -1);">《From 蚂蚁消息服务使用》</font>](https://opendocs.alipay.com/common/02km9j)。

# 配置异步通知地址
在请求[@alipay.trade.agent.pay（智能体支付接口）](undefined/API#alipay.trade.agent.pay#api_url) 时**必须**配置请求公参：`notifyUrl` (异步通知地址) <font style="color:rgb(cmsDocQcId-sentenceFinish-p-ADD-a40946dc, -1, -1);"> </font>

```groovy
//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` 的具体值省略）：

```latex
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`<font style="color:rgb(cmsDocQcId-sentenceFinish-p-ADD-aad355f2, -1, -1);"> </font> | 通知业务数据。表单 URL 解码后为 JSON 字符串，验签通过后再解析。 |
| `msg_method`<font style="color:rgb(cmsDocQcId-sentenceFinish-p-ADD-6ae2f2e1, -1, -1);"> </font> | 消息接口标识。本场景固定为 `alipay.aipay.agentpay.renderinfo.notify`。 |
| `notify_id`<font style="color:rgb(cmsDocQcId-sentenceFinish-p-ADD-3006b6ee, -1, -1);"> </font> | 消息通知唯一标识，用于幂等处理。 |
| `charset` | 验签字符集，本示例为 `UTF-8`。 |
| `sign_type`<font style="color:rgb(cmsDocQcId-sentenceFinish-p-ADD-ecac7d43, -1, -1);"> </font> | 签名算法，本示例为 `RSA2`。 |
| `sign` | 支付宝对通知参数生成的签名。 |


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

基于上述示例请求，移除 `sign`、`sign_type` 并排序后的待验签字符串如下：

```latex
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 格式
```json
{
  "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
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8

success
```

返回 `fail`、空字符串或其他内容均会被认为处理失败，支付宝可能按照消息投递重试策略再次发送。同一条消息可能被重复投递，因此必须保证 `notify_id` 幂等；如采用异步业务处理，应在消息已可靠落库或进入可靠消息队列后再返回 `success`。