转账/退款/解冻接口¶
203 转账接口¶
请求参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
版本号 | version | 定长2位String | 必须 | 默认为10,可扩展 |
消息类型 | cmd_id | 定长String | 必须 | 固定203 |
商户客户号 | mer_cust_id | 定长16位String | 必须 | 汇付生成,唯一 |
订单号 | order_id | 定长20位String | 必须 | 商户系统生成,商户下唯一 |
订单日期 | order_date | 定长8 位String | 必须 | YYYYMMDD |
出账客户号 | out_cust_id | 变长16位的String | 必须 | 汇付生成,用户的唯一性标识 |
出账子账户号 | out_acct_id | 变长9位的String | 必须 | |
入账客户号 | in_cust_id | 变长16位的String | 必须 | 入账客户号,由汇付生成,用户的唯一性标识 |
入账子账户号 | in_acct_id | 变长9位的String | 必须 | |
转账金额 | transfer_amt | 变长14位的String | 必须 | 金额格式必须是###.00 |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户转账结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
商户私有域 | mer_priv | 变长120 位的String | 必须 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
入参扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数 |
设备信息 | dev_info_json | 变长1024位的String | 必须 | 参见 设备静态信息 。 |
返回参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
消息类型 | cmd_id | 变长String | 必须 | 固定203 |
应答返回码 | resp_code | 定长6位的String | 必须 | |
应答描述 | resp_desc | 变长String | 必须 | |
商户客户号 | mer_cust_id | 定长16位String | 必须 | 汇付生成,唯一 |
订单号 | order_id | 定长20位String | 必须 | 商户系统生成,商户下唯一 |
订单日期 | order_date | 定长8 位String | 必须 | YYYYMMDD |
出账客户号 | out_cust_id | 变长16位的String | 必须 | |
出账子账户号 | out_ acct _id | 变长9位的String | 必须 | |
入账客户号 | in_cust_id | 变长16位的String | 必须 | |
入账子账户号 | in_ acct _id | 变长9位的String | 必须 | |
转账金额 | transfer_amt | 变长14位的String | 必须 | 金额格式必须是###.00 |
手续费金额 | fee_amt | 变长14位的String | 必须 | 金额格式必须是###.00 |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户转账结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
返参扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数 |
返回码¶
返回码 | 返回描述 |
203000 | 交易成功 |
203099 | 系统异常 |
203100 | 请求参数非法 |
203101 | 商户无此接口权限 |
203102 | 验证签名失败 |
203103 | 商户状态异常 |
203104 | 用户状态异常 |
203107 | 消息类型与签名内容不一致 |
203108 | 商户客户号与签名内容不一致 |
203109 | 版本号与签名内容不一致 |
203110 | 商户号不存在 |
203202 | 交易订单号重复 |
203301 | 转出方用户信息不存在 |
203302 | 转入方用户信息不存在 |
203303 | 转出方用户状态异常 |
203304 | 转入方用户状态异常 |
203307 | 转出方帐户号不存在 |
203308 | 转入方账号不存在 |
203309 | 转出方帐户状态异常 |
203310 | 转入方帐户状态异常 |
203311 | 转账失败 |
203317 | 个人用户账户不能出账 |
203318 | 转出方帐户不能为过渡账户 |
203319 | 转入方帐户不能为过渡账户 |
203320 | 转出方和转入方不能相同 |
203803 | 支付交易受限,限额限次或其他 |
203804 | 商户超限额或限次 |
203805 | 商户未开通该功能权限 |
203806 | 商户交易限制 |
代码示例¶
java
String valueObj = "{
"version": "10",
"cmd_id": "203",
"mer_cust_id": "6666000000026086",
"order_id": "20171913212022",
"order_date": "20170824",
"transfer_type": "02040004",
"out_cust_id": "6666000000026303",
"out_acct_id": "79913",
"in_cust_id": "6666000000026086",
"in_acct_id": "79506",
"transfer_amt": "11.02",
"bg_ret_url": "http://192.168.25.79:8081/zeus-callback/asyncHandle.json",
"mer_priv": ""
}";
String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "203";
String merCustId = "6666000000026086";
String version = "10";
String contentType = "application/x-www-form-urlencoded";
String charset = "UTF-8";
String postStr = "cmd_id=" + cmdId + "&version=" + version + "&mer_cust_id=" + merCustId + "&check_value=" + checkValue;
jodd.http.HttpRequest httpRequest = jodd.http.HttpRequest.post(testUrl).charset(charset);
jodd.http.HttpResponse httpResponse = httpRequest.contentType(contentType).body(postStr).send();
String body = httpResponse.bodyText();
String resultObj = parseResult(body);//解密
成功响应:
200
{
"cmd_id": "203",
"resp_code": "203000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应:
200
{
"cmd_id": "203",
"resp_code": "203099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
205 退款接口¶
请求参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
版本号 | version | 定长2位的String | 必须 | 固定为10,如版本升级,能向前兼容 |
消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为205 |
商户客户号 | mer_cust_id | 定长16位的String | 必须 | 商户的唯一标识 |
用户客户号 | user_cust_id | 定长16位的String | 可选 | 由汇付生成,用户的唯一性标识 对原交易为网银支付,代扣支付,快捷支付,必须 对原交易为扫码支付,可选 |
订单日期 | order_date | 定长8位String | 必须 | 格式为“yyyyMMdd” |
订单号 | order_id | 变长20位的String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 |
退款金额 | trans_amt | 变长14位的String | 必须 | 退款金额,金额格式必须是###.00,比如2.00,2.01 |
原交易平台流水id | orginal_platform_seq_id | 定长18位String | 必须 | 原交易流水号 |
快捷支付页面版标识 | quickpay_page_flag | 定长1位String | 可选 | 默认为否 否:0 是:1 原交易为快捷支付WEB版或快捷支付APP版时,设为是 |
分账账户串 | div_detail | 变长String | 必须 | 出账账户串,json格式:[{“divCustId”:”60010001”,” divAcctId”:”000001”,”divAmt”:”1.00”}] |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户退款结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
扩展域 | extension | 变长512位的String | 可选 | |
设备信息 | dev_info_json | 变长1024位的String | 必须 | 参见 设备静态信息 。 |
分账账户串(div_detail )内容:
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
分账客户号 | divCustId | 变长16位String | 必须 | div_detail参数下的二级参数 分账客户号 |
分账账户号 | divAcctId | 变长9位String | 必须 | div_detail参数下的二级参数 分账账户号 |
分账金额 | divAmt | 变长14位String | 必须 | div_detail参数下的二级参数 分账金额,保留两位小数 |
返回参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
消息类型 | cmd_id | 变长String | 必须 | 每一种消息类型代表一种交易,此处为205 |
返回码 | resp_code | 变长String | 必须 | 205000–调用成功,其他见返回码 |
结果描述 | resp_desc | 变长String | 必须 | 返回描述 |
商户客户号 | mer_cust_id | 变长16位的String | 必须 | |
用户客户号 | user_cust_id | 变长16位的String | 可选 | |
订单日期 | order_date | 定长8位 | 必须 | |
订单号 | order_id | 变长20位的String | 必须 | |
平台流水id | platform_seq_id | 定长18位String | 必须 | 交易流水号 |
交易金额 | trans_amt | 变长14位的String | 必须 | |
交易状态 | trans_stat | 变长8位的String | 必须 | |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户退款结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
扩展域 | extension | 变长512位的String | 可选 |
返回码¶
返回码 | 返回描述 |
205000 | 交易成功 |
205002 | 请求已受理 |
205003 | 交易失败 |
205098 | 系统超时 |
205099 | 系统异常 |
205100 | 请求参数非法 |
205101 | 商户无此接口权限 |
205102 | 验证签名失败 |
205103 | 商户状态异常 |
205104 | 用户状态异常 |
205105 | 账户状态异常 |
205107 | 消息类型与签名内容不一致 |
205108 | 商户客户号与签名内容不一致 |
205109 | 版本号与签名内容不一致 |
205110 | 商户号不存在 |
205111 | 用户客户号不存在 |
205112 | 账号不存在 |
205113 | 过渡账户不能出账 |
205202 | 交易订单号重复 |
205300 | 原支付交易不存在 |
205301 | 该订单状态不可退款 |
205302 | 订单已退款 |
205303 | 用户客户号与支付交易不一致 |
205305 | 可退金额不足 |
205306 | 调用PA批量转账接口失败 |
205721 | 分账串内容不能超过五个 |
205722 | 分账串部分字段为空 |
205723 | 分账串金额格式错误 |
205724 | 分账串累计金额不等于订单金额 |
205727 | 分账信息异常 |
205728 | 分账串账户信息格式错误 |
205729 | 分账串账户异常 |
代码示例¶
java
String valueObj = "{
"version": "10",
"cmd_id": "205",
"mer_cust_id": "6666000000002619",
"user_cust_id": "6666000000005942",
"order_date": "20170830",
"order_id": "2000501",
"quickpay_page_flag": "1",
"trans_amt": "0.03",
"orginal_platform_seq_id": "201708300000004663",
"div_detail": "[{\"divCustId\":\"6666000000002962\",\"divAcctId\":\"3133\",\"divAmt\":\"0.01\",\"divFreezeFg\":\"00\"},{\"divCustId\":\"6666000000002619\",\"divAcctId\":\"2744\",\"divAmt\":\"0.02\",\"divFreezeFg\":\"00\"}]",
"bg_ret_url": "http://192.168.25.79:8081/zeus-callback/asyncHandle.json",
"mer_priv": "1",
"extension": "1"
}";
String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "205";
String merCustId = "6666000000002619";
String version = "10";
String contentType = "application/x-www-form-urlencoded";
String charset = "UTF-8";
String postStr = "cmd_id=" + cmdId + "&version=" + version + "&mer_cust_id=" + merCustId + "&check_value=" + checkValue;
jodd.http.HttpRequest httpRequest = jodd.http.HttpRequest.post(testUrl).charset(charset);
jodd.http.HttpResponse httpResponse = httpRequest.contentType(contentType).body(postStr).send();
String body = httpResponse.bodyText();
String resultObj = parseResult(body);//解密
成功响应:
200
{
"cmd_id": "205",
"resp_code": "205000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000002619",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应:
200
{
"cmd_id": "205",
"resp_code": "205099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000002619",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
212 订单解冻接口¶
请求参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
版本号 | version | 定长2位的String | 必须 | 固定为10,如版本升级,能向前兼容 |
消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为212 |
商户客户号 | mer_cust_id | 定长16位的String | 必须 | 商户的唯一标识 |
用户客户号 | user_cust_id | 定长16位的String | 必须 | 由汇付生成,用户的唯一性标识 |
订单日期 | order_date | 定长8位String | 必须 | 格式为“yyyyMMdd” |
订单号 | order_id | 变长20位的String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 |
快捷支付页面版标识 | quickpay_page_flag | 变长1位的String | 可选 | 默认为否; 否:0 ;是:1 ;原交易为快捷支付WEB版或快捷支付APP版时,设为是 |
原交易平台流水id | orginal_platform_seq_id | 定长18位String | 必须 | 原支付交易流水号 |
解冻分账账户串 | div_detail | 变长String | 必须 | 数据格式:json格式: [{‘divCustId’:‘6666000000026193’,’divAcctId’:‘79720’,’divFreezeFg’:‘00’}] |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户解冻结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
扩展域 | extension | 变长512位的String | 可选 |
返回参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
消息类型 | cmd_id | 变长String | 必须 | 每一种消息类型代表一种交易,此处为212 |
返回码 | resp_code | 变长String | 必须 | 212000–调用成功,其他见返回码 |
结果描述 | resp_desc | 变长String | 必须 | 返回描述 |
商户客户号 | mer_cust_id | 变长16位的String | 必须 | |
用户客户号 | user_cust_id | 变长16位的String | 必须 | |
订单日期 | order_date | 定长8位String | 必须 | |
订单号 | order_id | 变长20位的String | 必须 | |
快捷支付页面版标识 | quickpay_page_flag | 变长1位的String | 可选 | 默认为否; 否:0 ;是:1 ;原交易为快捷支付WEB版或快捷支付APP版时,设为是 |
平台流水id | platform_seq_id | 定长18位String | 必须 | 交易流水号 |
成功件数 | success_cnt | 变长2位的String | 必须 | |
成功金额 | success_amt | 变长14位的String | 必须 | |
失败件数 | fail_cnt | 变长2位的String | 必须 | |
失败金额 | fail_amt | 变长14位的String | 必须 | |
失败账户串 | fail_div_detail | 变长String | 必须 | [{“divCustId”:”60010001”,”divAcctId”:”000001”}] |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户解冻结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
扩展域 | extension | 变长512位的String | 可选 |
返回码¶
返回码 | 返回描述 |
212000 | 交易成功 |
212098 | 系统超时 |
212099 | 系统异常 |
212100 | 请求参数非法 |
212101 | 商户无此接口权限 |
212102 | 验证签名失败 |
212103 | 商户状态异常 |
212104 | 用户状态异常 |
212105 | 账户状态异常 |
212107 | 消息类型与签名内容不一致 |
212108 | 商户客户号与签名内容不一致 |
212109 | 版本号与签名内容不一致 |
212110 | 商户号不存在 |
212111 | 用户客户号不存在 |
212112 | 账号不存在 |
212202 | 交易订单号重复 |
212301 | 原支付交易不存在 |
212302 | 该订单状态不可解冻 |
212303 | 分账账户串数据异常 |
代码示例¶
java
String valueObj = "{
"version": "10",
"cmd_id": "212",
"mer_cust_id": "6666000000002619",
"user_cust_id": "6666000000005942",
"order_date": "20170830",
"order_id": "324002007",
"orginal_platform_seq_id": "201708300000004667",
"div_detail": "[{'divCustId':'6666000000002962','divAcctId':'3133','divFreezeFg':'01'},{'divCustId':'6666000000002619','divAcctId':'2744','divFreezeFg':'01'}]",
"bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
"mer_priv": "mer001",
"extension": "extension"
}";
String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "212";
String merCustId = "6666000000026086";
String version = "10";
String contentType = "application/x-www-form-urlencoded";
String charset = "UTF-8";
String postStr = "cmd_id=" + cmdId + "&version=" + version + "&mer_cust_id=" + merCustId + "&check_value=" + checkValue;
jodd.http.HttpRequest httpRequest = jodd.http.HttpRequest.post(testUrl).charset(charset);
jodd.http.HttpResponse httpResponse = httpRequest.contentType(contentType).body(postStr).send();
String body = httpResponse.bodyText();
String resultObj = parseResult(body);//解密
成功响应:
200
{
"cmd_id": "212",
"resp_code": "212000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应:
200
{
"cmd_id": "212",
"resp_code": "212099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}