代付流程描述
街口支付的代付转账到银行卡是一个辅助接口,帮助商家更方便的完成从商家系统直接接入到街口支付系统,完成转账,减少人工成本。
1、 构造XML请求数据
商户根据提供的接口规则,通过程序生成得到签名结果及要传输给街口支付的数据集合。
2、 发送请求数据(XML格式的base64转码)
把构造完成的数据集合,通过服务端利用Http或Https请求Post提交的方式传递给街口支付。
3、街口支付对请求数据进行处理
街口支付得到这些集合后,会先进行安全校验等验证,一系列验证通过后便会处理这次发送过来的数据请求。
4、 返回处理的结果数据(Json)
5、 商户可选择根据街口支付商户中心代付记录 或者 调用-单笔代付查询接口-获取订单处理结果(注:代付申请不是实时代付)。
代付申请请求参数说明
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) | | 商家网站生成的代付订单号,由商户保证其唯一性,由字母、数字、下划线组成。 |
bankCode | String(10) | | 代付银行名称,参数为本平台规定银行编码。编码列表请参考 银行编码。 |
provice | String(10) | | 开户省份(例如:山东省)。请选择参考 省份。 |
city | String(10) | | 开户市(例如:济南市)。请选择参考 城市。 |
district | String(10) | | 开户区或县(例如:历城区或济阳县)。请选择参考 区或县。 |
branchName | String(50) | | 支行名称, 仅填写支行信息 ,如:太平路支行, 仅需填写支行名称不需要银行名称。 |
accountName | String(50) | | 银行卡开户名称或收款人姓名(确保正确) |
cardNo | String(30) | | 转账银行卡号 |
amount | Number | | 代付转账金额,以元为单位,精确到小数点后两位.例如:12.01 |
phone | String(11) | | 代付银行卡绑定的手机号码 |
transferType | String(7) | | 对公、对私转账类型,固定值: public (对公)、private (对私) |
sign | String | | 代付明细 MD5或RSA签名认证后的字符串,代付申请接口签名使用说明请参考下文介绍。 |
remark | String(50) | ဆ | 代付转账备注 |
参数 | 格式 | 必填 | 说明 |
---|---|---|---|
msgcode | String | | 状态码 : 00000000 (受理成功,等待系统财务处理) 其他: 请求有误,参考错误码对照; |
msg | String | | 请求描述 : success (受理成功) 其他错误描述 |
构造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"~|~"+bankCode"~|~"+cardNo"~|~"+amount"~|~"+phone"~|~"+
transferType
商户算法签名模型设置为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);