支付宝批量付款流程描述
街口支付的批量付款到支付宝账户是一个辅助接口,帮助商家更方便的完成从商家系统直接接入到街口支付系统,完成支付宝内部批量转账,减少人工成本。
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明文转码字符串。 |
参数 | 格式 | 必填 | 说明 |
---|---|---|---|
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 。 |
参数 | 格式 | 必填 | 说明 |
---|---|---|---|
msgcode | String | | 状态码 : 00000000 (受理成功,等待系统财务处理) 其他: 请求有误,参考错误码对照; |
msg | String | | 请求描述 : success (受理成功) 其他错误描述 |
batch_pay_url | String | ဆ | 商家批次支付转账单据的页面链接,通过此链接完成支付验证后即可完成支付。 其他错误情况为NULL。 |
构造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 请求批量付款原始签名串格式如下:
批量付款公共原始串街口支付
- merchant_code+"~|~"+interface_version+"~|~"+sign_type+"~|~"+order_no+"~|~"+order_type+"~|~"+notify_url
商户算法签名模型设置为MD5时,采用下面签名算法样例。
MD5请求签名街口支付
- sign = Md5(批量付款公共原始串+"~|~"key=商户MD5密钥)
商户算法签名模型设置为RSA时,采用下面签名算法样例。
请求代付RSA签名算法街口支付
- Java:
- sign = RSAWithSign.signByPrivateKey(批量付款公共原始串,商户生成的私钥)
- PHP:
- $privatekey = openssl_get_privatekey('商户生成的私钥');
- openssl_sign(请求付款原始签名串,$sign_info,$privatekey,OPENSSL_ALGO_MD5);
- $sign = base64_encode($sign_info);