参数规定

  • 交易金额

交易金额默认为人民币交易,接口中参数支付金额单位为【元】,参数值保留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_datadata 两种情况

  • 支付交易类接口异步通知返回的参数名为 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);
    }

通用接口调用实例

通用接口 - 「调用实例」