支付宝批量付款申请接口

支付宝批量付款流程描述

街口支付的批量付款到支付宝账户是一个辅助接口,帮助商家更方便的完成从商家系统直接接入到街口支付系统,完成支付宝内部批量转账,减少人工成本。


1、 构造XML请求数据

  商户根据提供的接口规则,通过程序生成得到签名结果及要传输给街口支付的数据集合。


2、 发送请求数据(XML格式的base64转码)

  把构造完成的数据集合,通过服务端利用Http或Https请求Post提交的方式传递给街口支付。


3、街口支付对请求数据进行处理

  街口支付得到这些集合后,会先进行安全校验等验证,一系列验证通过后便会处理这次发送过来的数据请求。


4、 返回处理的结果数据(Json)


5、 商家通过本接口Json结果集获取batch_pay_url链接参数,商家通过此链接完成支付验证后即可完成批量支付。

 

支付宝批量付款请求参数说明

1、商户在服务器内部使用Post方式提交主参数 transData信息到街口支付代付接口;

2、参数transData是一个转账明细的明文XML格式,然后经过Base64转码后得到的字符串。


请求主体上送参数
参数 格式 必填 说明
transData String 提交的主体内容参数,它是支付宝批量付款明细构造XML后的Base64明文转码字符串。
支付宝批量付款明细XML构造参数描述
参数 格式 必填 说明
merchant_code String(15) 商家号,商户签约时分配给商家的唯一身份标识。
interface_version String(5) 接口版本,固定值:V1.0(大写)。
sign_type String(3) 签名类型,固定值:MD5或RSA(大写)
order_no String(30) 商家网站生成的批量付款订单号,由商户保证其唯一性,由字母、数字、下划线组成。
order_type String(5) 支付宝批量付款接口类型,固定值:PC(大写)。
order_title String(50) 转账标题,用于收银台展示标题。示例:报销付款。
order_remark String(50) 转账备注。示例:发福利。
passback_params String(100) 通知回传此自定义参数。示例:UserID=1314_UserName=支小宝。
notify_url String(300) 批量付款确认成功异步通知地址, 可设置空值不接收通知。
Post请求异步地址携带以下参数
order_no : 批量付款订单号
order_type : 固定值PC
passback_params : 回传自定义参数
batch_status : 'SUCCESS'-全部完成 |'PART_SUCCESS'-部分完成 (明细请调用批量付款详情查询接口)
batch_status_msg : 状态说明
sign String

MD5或RSA签名后字符串,不参与签名。

alipay_gateway_id String(100) 指定使用平台中某个支付宝渠道ID进行付款,不指定(轮询)默认空即可,渠道ID获取在登陆商户前台查询。
以下为多个收款方信息集合(格式参考本页XML样例)
login_id String(100) 支付宝收款方登录的账号,可以是手机号、邮箱等登录账号。 示例:[email protected]
name String(120) 收款方真实姓名,将校验收款支付宝账号与姓名的一致性。示例:黄龙国际有限公司 。
trans_amount String(20) 每个收款方需要转账的金额,单位为元(最小1元)精确到小数点后两位。示例:20.11。
trans_remark String(100) 转账备注,会展示在收款方账单里。示例:报销款202109 。

请求响应返回参数列表(Json格式)
参数 格式 必填 说明
msgcode String 状态码 : 00000000 (受理成功,等待系统财务处理)
其他: 请求有误,参考错误码对照;
msg String 请求描述 : success (受理成功)
其他错误描述
batch_pay_url String 商家批次支付转账单据的页面链接,通过此链接完成支付验证后即可完成支付。
其他错误情况为NULL。

构造XML样例(检查最终XML格式是否正确,可保存为XML。再用浏览器打开XML即知。作为开发人员的您应该知道。查看样例XML

支付宝批量付款XML样例


将构造正确的代付明细XML字符串转码成Base64 得到主体参数“transData”

//JAVA转码代码片段 
String base64_transData = new sun.misc.BASE64Encoder().encode("xml".getBytes("utf-8"));
//PHP转码代码片段 
$base64_transData = base64_encode("xml");
//.NET转码代码片段
byte[] bytes = Encoding.Default.GetBytes("xml");
string base64_transData = Convert.ToBase64String(bytes);

支付宝批量付款申请(sign)签名规则

商户在街口支付平台申请本接口,签名原始串必须遵循以下规则:

1、所有指定签名参数值按照(parmValue1+~|~+parmValue2+~|~+parmValue3+…)拼接而成,每个参数值中间采用分隔符 ~|~ 拼接。

2、签名原始串中,字段名和字段值都采用原始值,不进行URL Encode。

3、参数值区分大小写。

4、签名排列顺序必须按照指定格式排列拼接。见下文。


批量付款申请请求签名原始串

post 请求批量付款原始签名串格式如下:

批量付款公共原始串街口支付

  1. merchant_code+"~|~"+interface_version+"~|~"+sign_type+"~|~"+order_no+"~|~"+order_type+"~|~"+notify_url

商户算法签名模型设置为MD5时,采用下面签名算法样例。

MD5请求签名街口支付

  1. sign = Md5(批量付款公共原始串+"~|~"key=商户MD5密钥)

商户算法签名模型设置为RSA时,采用下面签名算法样例。

请求代付RSA签名算法街口支付

  1. Java:
  2. sign = RSAWithSign.signByPrivateKey(批量付款公共原始串,商户生成的私钥)
  3.  
  4. PHP:
  5. $privatekey = openssl_get_privatekey('商户生成的私钥');
  6. openssl_sign(请求付款原始签名串,$sign_info,$privatekey,OPENSSL_ALGO_MD5);
  7. $sign = base64_encode($sign_info);