﻿## 接口说明

该接口是 **签名数据准备接口**，用于生成可信签名字符串（`orderStr`）。可信签名串中包含业务参数及商户身份信息，可防止数据被篡改，一般用于打开支付宝客户端。请在服务端执行支付宝SDK中`sdkExecute`方法，读取响应中的`body()`结果。

## 公共请求参数

| 参数 | 类型 | 是否必选 | 最大长度 | 描述 | 示例值 |
| --- | --- | --- | --- | --- | --- |
| app_id | String | 必选 | 32 | 支付宝分配给开发者的应用ID | 2014072300007148 |
| method | String | 必选 | 128 | 接口名称 | alipay.trade.agent.pay |
| format | String | 可选 | 40 | 仅支持JSON | JSON |
| charset | String | 必选 | 10 | 请求使用的编码格式，如utf-8,gbk,gb2312等 | utf-8 |
| sign_type | String | 必选 | 10 | 商户生成签名字符串所使用的签名算法类型，目前支持RSA2和RSA，推荐使用RSA2 | RSA2 |
| sign | String | 必选 | 344 | 商户请求参数的签名串，详见签名 | 详见示例 |
| timestamp | String | 必选 | 19 | 发送请求的时间，格式"yyyy-MM-dd HH:mm:ss" | 2014-07-24 03:07:50 |
| version | String | 必选 | 3 | 调用的接口版本，固定为：1.0 | 1.0 |
| notify_url | String | 可选 | 256 | 支付宝服务器主动通知商户服务器里指定的页面http/https路径。 | http://api.test.alipay.net/atinterface/receive_notify.htm |
| app_auth_token | String | 可选 | 40 | 详见应用授权概述 |  |
| biz_content | String | 必选 |  | 请求参数的集合，最大长度不限，除公共参数外所有请求参数都必须放在这个参数中传递，具体参照各产品快速接入文档 |  |

## 业务请求参数

| 参数 | 名称 | 是否必选 | 类型 | 描述 | 示例值 |
| --- | --- | --- | --- | --- | --- |
| prepay_id | 预下单ID | 必选 | string[1,512] | 预下单ID，通过请求alipay.trade.order.prepay接口获取预下单ID | `MV91dHAucHJlb3JkZXJfMjAyNTA2MDRfMjA4ODg0MTAzMzUzMTQ0OF9YUDE1MjUwNjA0MDU1MDA2MDQzNTAyOTQwMDY5OTJfMzMwNzg2XzQyLTIwNzYxJDgq` |
| agent_id | 智能体唯一标识 | 可选 | string[1,512] | 联系对应BD进行KYA申请后下发的智能体id | `2026000000010000` |
| cashier_scene | 收银台场景 | 可选 | string[1,64] | 收银台场景，在Agent支付标准版场景下固定填"appPay" | `appPay` |

## 常见请求示例

::::aipay-tabs{defaultActiveKey="Java"}
:::aipay-tab{key="Java" title="Java"}
```
package com.java.sdk.demo;

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.AlipayConfig;
import com.alipay.api.response.AlipayTradeAgentPayResponse;
import com.alipay.api.request.AlipayTradeAgentPayRequest;
import com.alipay.api.domain.AlipayTradeAgentPayModel;

import com.alipay.api.FileItem;
import java.util.Base64;
import java.util.ArrayList;
import java.util.List;

public class AlipayTradeAgentPay {

    public static void main(String[] args) throws AlipayApiException {
        // 初始化SDK
        AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());

        // 构造请求参数以调用接口
        AlipayTradeAgentPayRequest request = new AlipayTradeAgentPayRequest();
        AlipayTradeAgentPayModel model = new AlipayTradeAgentPayModel();
        
        // 设置预下单ID
        model.setPrepayId("MV91dHAucHJlb3JkZXJfMjAyNTA2MDRfMjA4ODg0MTAzMzUzMTQ0OF9YUDE1MjUwNjA0MDU1MDA2MDQzNTAyOTQwMDY5OTJfMzMwNzg2XzQyLTIwNzYxJDgq");
        
        // 设置智能体唯一标识
        model.setAgentId("2026000000010000");
        
        // 设置收银台场景
        model.setCashierScene("appPay");
        
        request.setBizModel(model);
        // 第三方代调用模式下请设置app_auth_token
        // request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");

        AlipayTradeAgentPayResponse response = alipayClient.sdkExecute(request);
        String orderStr = response.getBody();
        System.out.println(orderStr);

        if (response.isSuccess()) {
            System.out.println("调用成功");
        } else {
            System.out.println("调用失败");
            // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
            // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
            // System.out.println(diagnosisUrl);
        }
    }

    private static AlipayConfig getAlipayConfig() {
        String privateKey  = "<-- 请填写您的应用私钥，例如：MIIEvQIBADANB ... ... -->";
        String alipayPublicKey = "<-- 请填写您的支付宝公钥，例如：MIIBIjANBg... -->";
        AlipayConfig alipayConfig = new AlipayConfig();
        alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
        alipayConfig.setAppId("<-- 请填写您的AppId，例如：2019091767145019 -->");
        alipayConfig.setPrivateKey(privateKey);
        alipayConfig.setFormat("json");
        alipayConfig.setAlipayPublicKey(alipayPublicKey);
        alipayConfig.setCharset("UTF-8");
        alipayConfig.setSignType("RSA2");
        return alipayConfig;
    }
}
```
:::

:::aipay-tab{key="C#" title="C#"}
```
using System;
using System.Collections.Generic;
using Aop.Api;
using Aop.Api.Request;
using Aop.Api.Response;
using Aop.Api.Domain;
using Aop.Api.Util;
namespace SdkDemoTest
{
    public class AlipayTradeAgentPay
    {
        public static void Main(string[] args) 
        {
            // 初始化SDK
            IAopClient alipayClient = new DefaultAopClient(GetAlipayConfig());
            // 构造请求参数以调用接口
            AlipayTradeAgentPayRequest request = new AlipayTradeAgentPayRequest();
            AlipayTradeAgentPayModel model = new AlipayTradeAgentPayModel();
            
            // 设置预下单ID
            model.PrepayId = "MV91dHAucHJlb3JkZXJfMjAyNTA2MDRfMjA4ODg0MTAzMzUzMTQ0OF9YUDE1MjUwNjA0MDU1MDA2MDQzNTAyOTQwMDY5OTJfMzMwNzg2XzQyLTIwNzYxJDgq";
            
            // 设置智能体唯一标识
            model.AgentId = "2026000000010000";
            
            // 设置收银台场景
            model.CashierScene = "appPay";
            
            request.SetBizModel(model);
            // 第三方代调用模式下请设置app_auth_token
            // request.PutOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");

            AlipayTradeAgentPayResponse response = alipayClient.SdkExecute(request);
            string orderStr = response.Body;
            Console.WriteLine(orderStr);

            if(!response.IsError)
            {
                Console.WriteLine("调用成功");
            }
            else
            {
                Console.WriteLine("调用失败");
            }
        }

        private static AlipayConfig GetAlipayConfig()
        {
            string privateKey  = "<-- 请填写您的应用私钥，例如：MIIEvQIBADANB ... ... -->";
            string alipayPublicKey = "<-- 请填写您的支付宝公钥，例如：MIIBIjANBg... -->";
            AlipayConfig alipayConfig = new AlipayConfig();
            alipayConfig.ServerUrl = "https://openapi.alipay.com/gateway.do";
            alipayConfig.AppId = "<-- 请填写您的AppId，例如：2019091767145019 -->";
            alipayConfig.PrivateKey = privateKey;
            alipayConfig.Format = "json";
            alipayConfig.AlipayPublicKey = alipayPublicKey;
            alipayConfig.Charset = "UTF-8";
            alipayConfig.SignType = "RSA2";
            return alipayConfig;
        }
    }
}
```
:::

:::aipay-tab{key="PHP" title="PHP"}
```
<?php
require_once '../aop/AopClient.php';
require_once '../aop/AopCertClient.php';
require_once '../aop/AopCertification.php';
require_once '../aop/AlipayConfig.php';
require_once '../aop/request/AlipayTradeAgentPayRequest.php';

// 初始化SDK
$alipayClient = new AopClient(getAlipayConfig());
// 构造请求参数以调用接口
$request = new AlipayTradeAgentPayRequest();
$model = array();

// 设置预下单ID
$model['prepay_id'] = "MV91dHAucHJlb3JkZXJfMjAyNTA2MDRfMjA4ODg0MTAzMzUzMTQ0OF9YUDE1MjUwNjA0MDU1MDA2MDQzNTAyOTQwMDY5OTJfMzMwNzg2XzQyLTIwNzYxJDgq";

// 设置智能体唯一标识
$model['agent_id'] = "2026000000010000";

// 设置收银台场景
$model['cashier_scene'] = "appPay";

$request->setBizContent(json_encode($model,JSON_UNESCAPED_UNICODE));
// 如果是第三方代调用模式，请设置app_auth_token（应用授权令牌）
$orderStr = $alipayClient->sdkExecute($request, "<-- 请填写应用授权令牌 -->");
echo $orderStr;

function getAlipayConfig()
{
    $privateKey  = '<-- 请填写您的应用私钥，例如：MIIEvQIBADANB ... ... -->';
    $alipayPublicKey = '<-- 请填写您的支付宝公钥，例如：MIIBIjANBg... -->';
    $alipayConfig = new AlipayConfig();
    $alipayConfig->setServerUrl('https://openapi.alipay.com/gateway.do');
    $alipayConfig->setAppId('<-- 请填写您的AppId，例如：2019091767145019 -->');
    $alipayConfig->setPrivateKey($privateKey);
    $alipayConfig->setFormat('json');
    $alipayConfig->setAlipayPublicKey($alipayPublicKey);
    $alipayConfig->setCharset('UTF-8');
    $alipayConfig->setSignType('RSA2');
    return $alipayConfig;
}
```
:::

::::

## 公共响应参数

无公共响应参数

## 业务响应参数

| 参数 | 名称 | 是否必选 | 类型 | 描述 | 示例值 |
| --- | --- | --- | --- | --- | --- |
| orderStr | 签名字符串 | 必选 | string(16384) | 获取签名后的业务数据具体使用方法请参考[移动端智能体支付](/docs/agent-pay/mobile-agent-pay.html)| 请参考响应示例 |

## 响应示例



```text
app_id=2017060101317939&biz_content=%7B%22agent_id%22%3A%222026000000010000%22%2C%22agreement_no%22%3A%2220170322450983769228%22%2C%22user_token_type%22%3A%22encrypt_phone%22%2C%22agreement_sign_params%22%3A%22%22%2C%22user_token%22%3A%22bcb49fcWEFSDb6ed517449b6c9WDSDSDF13e9cba16b9aDGE32dd82%22%2C%22cashier_scene%22%3A%22appPay%22%2C%22prepay_id%22%3A%22MV91dHAucHJlb3JkZXJfMjAyNTA2MDRfMjA4ODg0MTAzMzUzMTQ0OF9YUDE1MjUwNjA0MDU1MDA2MDQzNTAyOTQwMDY5OTJfMzMwNzg2XzQyLTIwNzYxJDgq%22%7D&charset=UTF-8&format=json&method=alipay.trade.agent.pay&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&sign_type=RSA2&timestamp=2014-07-24+03%3A07%3A50&version=1.0
```

## 公共错误码

[前往查看](https://opendoc.alipay.com/common/02km9f)

## 业务错误码

| 错误码 | 错误描述 | 解决方案 |
| --- | --- | --- |
| SYSTEM_ERROR | 系统繁忙 | 服务器异常 可能发生了网络或者系统异常，导致服务调用失败，商户可以用同样的请求发起重试 |
| INVALID_PARAMETER | 参数有误 | 请根据接口返回的参数非法的具体错误信息，修改参数后进行重试 |

## 触发通知示例

```text
<https://www.merchant.com/receive_notify.htm?notify_type=trade_status_sync&notify_id=91722adff935e8cfa58b3aabf4dead6ibe&notify_time=2017-02-16> 21:46:15&sign_type=RSA2&sign=WcO+t3D8Kg71dTlKwN7r9PzUOXeaBJwp8/FOuSxcuSkXsoVYxBpsAidprySCjHCjmaglNcjoKJQLJ28/Asl93joTW39FX6i07lXhnbPknezAlwmvPdnQuI01HZsZF9V1i6ggZjBiAd5lG8bZtTxZOJ87ub2i9GuJ3Nr/NUc9VeY=&trade_no=2013112011001004330000121536&gmt_create=2026-03-26 13:59:54&gmt_payment=2026-03-26 13:59:55&trade_action=PAY&passback_params={"uid":"1234567890"}&prepay_id=MV91dHAucHJlb3JkZXJfMjAyNTA2MDRfMjA4ODg0MTAzMzUzMTQ0OF9YUDE1MjUwNjA0MDU1MDA2MDQzNTAyOTQwMDY5OTJfMzMwNzg2XzQyLTIwNzYxJDg=&voucher_detail_list=[{"amount":"1.80","id":"XXXXXFRHC1","name":"立减1.8元","productCode":"DISCOUNT","templateId":"XXXXXXXJZN670","type":"DISCOUNT","vccExtendInfo":{"fundProvider":"MERCHANT","fundType":"BALANCE","camp_id":"XXXX"}}]&out_trade_no=131306007260350146021752339&total_fee=订单总金额&trade_status=TRADE_SUCCESS
```
