参数规定¶
- 交易金额
交易金额默认为人民币交易,接口中参数支付金额单位为【元】,参数值保留2位小数。对账单中的交易金额单位为【元】。
- 时间
标准北京时间,时区为东八区;如果商户的系统时间为非标准北京时间。参数值必须根据商户系统所在时区先换算成标准北京时间。
请求报文头¶
接口请求报文HEADER中必需字段。
参数 | 类型 | 必填 | 最大长度 | 描述 |
---|---|---|---|---|
product_id | String(32) | Y | 32 | 产品号,由汇付生成提供 |
format | String(40) | Y | 40 | 仅支持JSON格式 |
charset | String(10) | Y | 10 | UTF-8 |
version | String(10) | Y | 10 | 版本号,固定1.0.0 |
请求报文体¶
接口请求报文体BODY中必需字段。
参数 | 类型 | 必填 | 最大长度 | 描述 |
---|---|---|---|---|
sys_id | String(40) | Y | 32 | 渠道商/代理商/商户的huifu_id (1)当主体为渠道商/代理商时,此字段填写渠道商/代理商huifu_id; (2)当主体为直连商户时,此字段填写商户huifu_id |
sign_type | String(32) | Y | 32 | 固定:RSA2 |
sign | String(40) | Y | 商户请求参数的签名串,针对data数据签名 | |
data | String | Y | 报文数据体,JSON形式字符串,详见各API接口的说明 |
- 示例如下
{
"sys_id": "test",
"data": "{\"a\":\"a\",\"b\":\"b\",\"e\":\"e\"}",
"sign": ALIDS1123,
"sign_type": "RSA2"
}
请求报文DATA必有字段
参数 | 类型 | 必填 | 最大长度 | 描述 |
---|---|---|---|---|
req_seq_id | String(32) | Y | 请求流水号,商户需保持唯一 | |
req_date | String(40) | Y | 8 | 请求时间YYYYMMDD |
响应报文体¶
参数 | 类型 | 必填 | 最大长度 | 描述 |
---|---|---|---|---|
resp_code | String(32) | Y | 5 | 网关返回码,10000 接口调用成功 |
resp_desc | String(40) | Y | 512 | 网关返回描述 |
sign | String(40) | Y | 签名,对报文整体签名 | |
data | String(10) | Y | 业务返回参数 |
上表为同步响应报文体,而异步响应报文体的业务返回参数名有 resp_data
和 data
两种情况
- 支付交易类接口异步通知返回的参数名为
resp_data
。 - 商户进件配置类接口的异步通知返回参数名为
data
。
响应报文DATA约定参数
参数 | 类型 | 必填 | 最大长度 | 描述 |
---|---|---|---|---|
sub_resp_code | String(32) | Y | 8 | 业务返回码 |
sub_resp_desc | String(40) | Y | 512 | 业务返回描述 |
req_seq_id | String(40) | Y | 128 | 业务请求流水号 |
req_date | String(40) | Y | 8 | 业务请求时间YYYYMMDD |
- 应答报文示例
{
"resp_code": "10000",
"resp_desc": "接口调用成功",
"data": {\"order_id\":\"201911013332221131334\",\"req_date\":\"20191101\",\"req_seq_id\":\"req109288291\",\"sub_resp_code\":\"00000000\",\"sub_resp_desc\":\"交易成功\"},
"sign": "TESTSIGN"
}
调用实例¶
JAVA¶
- 以Java语言代码作为样例
// 1. 设置商户参数(全局只需设置一次)
BasePay.initWithMerConfig(MerchantConfigDemo.getMerchantConfig());
// 2. 组装交易参数
AuthCodePayRequest request = new AuthCodePayRequest("20210623", "20210705170736631111111111112", "0.01", "287606928207260511", "测试商品");
// 3.拓展参数 (可选)
// 该笔交易的异步通知地址(http/https异步通知地址,必须以virgo://开头)
request.addExtendInfo("notify_url", "virgo://http://www.baidu.com");
Map<String, Object> pullPayInfo = new HashMap<>();
try {
System.out.println("聚合反扫请求参数:" + JSON.toJSONString(dataMap));
// 单商户模式
pullPayInfo = BasePayClient.request(request);
System.out.println("聚合反扫返回参数:" + JSON.toJSONString(pullPayInfo));
} catch (BasePayException e) {
e.printStackTrace();
}
String subRespCode = (String) pullPayInfo.get("sub_resp_code");
if ("00000000".equals(subRespCode)) {
// 业务处理成功
System.out.println("处理成功");
} else if ("00000100".equals(subRespCode)) {
// 聚合反扫返回处理中,等待异步通知结果
// 前台如需要交易结果展示可调用交易查询来获取后续交易状态
} else {
String subRespDesc = (String) pullPayInfo.get("sub_resp_desc");
// 业务处理失败
System.out.println("处理失败,失败信息:" + subRespDesc);
}