跳到主要内容
版本:Next

SasS 公共请求及响应参数

1. 简介

提供Server To Server无人自助售货柜交易接口 给服务商(下述描述机构均为服务商) 调用。

注:涉及金额字段,单位均为元

1.1 接入信息准备

请在对接群中提供以下对接信息(包含测试与生产环境两套):

  1. 接入方公钥信息(平台用于验证请求签名)
  2. 接入方接收回调地址(交易终态结果通知,仅支持统一配置接口回调地址,不支持单次请求配置回调地址)
  3. IP(接入方调用API的公网IP,平台用于配置白名单)

1.2 接入参数

1.1 接入信息提供之后,由平台进行相关配置,并提供接入参数,主要包含:机构编号、机构密钥证书序列号、商户编号、平台公钥(见 6. 接口签名机制说明)

1.3 Java SDK接入示例

您可以下载我们提供的Java版本接入demo示例:Java SDK Demo

2. 接口地址

名称信息
测试环境地址https://payment-test-gw.cogolinks.com
生产环境地址https://payment-sg-gw.cogolinks.com
请求方式HTTPS
接口公共前缀/saas/

3. 请求公共参数信息

介绍:包括请求头公共参数(如版本号、语言、接口名称、业务类型、机构编号、机构密钥证书序列号、机构签名、签名方法等)和请求公共参数信息(如请求 ID、请求时间、随机字符串、请求数据等)。

3.1 请求头公共参数信息

字段名类型是否必传字段名称说明
interfaceVersionString版本号默认值:1.0.0
languageString语言语言(zh_CN,zh_TW,en_US)默认取值:zh_CN
interfaceNameString接口名称,接口地址中的一级之后内容示例:/pos/auth/capture接口填写:auth/capture
businessTypeString业务类型,接口地址中的一级内容示例:/pos/auth/capture接口填写:pos
orgNoString机构编号
orgCertIdString机构密钥证书序列号
signatureString机构签名
signMethodString机构签名方法 取值范围:RSA-SHA256,ECDSA-SHA256,HMAC-SHA256

3.2 请求公共参数信息

字段名类型是否必传字段名称说明
requestIdString请求ID请求唯一标识,调用方生成,用于唯一标识某次具体请求 建议1-36位(例如:机构编号_时间戳_UUID,如ORG001_20231001123000123_9a8b7c6d5e4f)
requestTimeTimestamp请求时间ISO 8601标准格式(如yyyy-MM-dd'T'HH:mm:ss.SSSXXX),明确时区信息
nonceStrString随机字符串短时防重放,调用方生成,服务端校验短时间内唯一 建议1-32位 可使用SecureRandom生成高强度随机数
dataObject请求数据

4. 响应公共参数信息

介绍:涵盖响应头公共参数(机构密钥证书序列号、机构签名、签名方法)和响应公共参数信息(请求 UUID、请求时间、响应时间、响应码、响应描述、业务主应码、业务主应答信息、业务子应答码、业务子应答信息、响应数据等)

4.1 响应头公共参数信息

字段名类型是否必传字段名称说明
orgCertIdString机构密钥证书序列号
signatureString机构签名
signMethodString机构签名方法 取值范围:RSA-SHA256,ECDSA-SHA256,HMAC-SHA256默认使用RSA-SHA256

4.2 响应公共参数信息

字段名类型是否必传字段名称说明
requestIdString请求UUID
requestTimeTimestamp请求时间
responseTimeTimestamp响应时间
respCodeInteger响应码
respMsgString响应描述
busCodeInteger业务主应码业务失败时存在
busMsgString业务主应答信息业务失败时存在
busSubCodeString业务子应答码业务失败时存在
busSubMsgString业务子应答信息业务失败时存在
dataObject响应数据成功业务信息

5. 公共响应信息码

5.1 响应码
code响应码(RespCode)响应描述(RespMsg)
200success
400fail
500System error
504timeout
5.2 响应业务码

仅异常场景

业务主码(busCode)主码描述(busMsg)业务子码(busSubCode)业务子码描述(busSubMsg)
30000请求入口验证错误30000请求入口验证错误
30000请求入口验证错误30001请求ID为空
30000请求入口验证错误30002请求接口重复
31000请求参数错误31000请求参数错误
34000验签信息有误34000验签信息有误
610验签信息有误610验签信息有误
610验签信息有误34500数据验签失败
610验签信息有误34501验签密钥不存在
620验签信息有误46202批次流水号重复
34000验签信息有误34011密码输入错误,无法加载主密钥!
34000验签信息有误34015没有获取到有效卡信息
34000验签信息有误34013运营经理卡不可用
34000验签信息有误34014运营经理卡配置错误,不能使用 !
34000验签信息有误34503未查找到有效的KSN信息
34000验签信息有误34504终端异常,KSN被替换
36000验签信息有误36000POS系统参数错误
40000商户信息有误34504终端异常,KSN被替换
40000商户信息有误40013商户业务开关配置不存在
42000验签信息有误42000客户信息有误
44000终端信息有误44000终端信息有误
44000终端信息有误44006终端交易设置异常
44000终端信息有误44008终端交易配置信息不存在
45000机构信息有误45000机构信息有误
45000产品信息有误45500产品信息有误
46000交易处理信息有误46000交易处理信息有误
46000交易处理信息有误46016订单不存在
46000交易处理信息有误46201订单重复交易
50000计费处理信息有误50000订单重复交易
51000清算处理信息有误51000清算处理信息有误
51003对账文件有误51003对账文件未生成或对账日有误
52000风控处理信息有误52000风控处理信息有误
52000风控处理信息有误RCS-SYS-0002风控系统参数有误
53000账务处理信息有误53000账务处理信息有误
53000账务处理信息有误AMS0003账户系统没有数据
54000渠道处理信息有误01渠道处理信息有误
54000渠道处理信息有误03无效商户
80000文件信息有误80000文件信息有误
400参数列表错误400001参数列表错误

6. 接口签名机制说明

签名算法:RSA-SHA256

签名规则:按照接口要求的请求参数,转换为 JSON 字符串,使用平台方提供的签名密钥生成签名,并放入头信息中(签名密钥联系平台方技术提供)

代码示例:

​ 加签:

            String content = JSON.toJSONString(requestBean);// requestBean为请求对象
SignatureValidator orgSignatureValidator = SignatureValidatorFactory.getValidator(SignMethod.RSA_SHA256.getCode());// 指定签名算法
String signature = orgSignatureValidator.generateSignature(content, PropertiesUtils.getPrivateKey());//PropertiesUtils.getPrivateKey() 为私钥

​ 验签:

            SignatureValidator orgSignatureValidator = SignatureValidatorFactory.getValidator(SignMethod.RSA_SHA256.getCode());// 指定签名算法
orgSignatureValidator.verifySignature(jsonString, signature, PropertiesUtils.getPublicKey())
//jsonString为需要验签的字符串,signature为签名,PropertiesUtils.getPublicKey()为公钥

​ 生成公私钥对:

以RSA为例,调用RSASignatureValidator.generateKey()方法生成公私钥对
public String generateKey() {
try {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
System.out.println(Base64.getEncoder().encodeToString(keyPair.getPrivate().getEncoded()));// 私钥
System.out.println(Base64.getEncoder().encodeToString(keyPair.getPublic().getEncoded()));// 公钥
return Base64.getEncoder().encodeToString(keyPair.getPrivate().getEncoded());
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("Error generating RSA key", e);
}
}

平台方测试环境公钥:

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtEUVfqe6KcSiYvwwhkEZEfr6GA/3nYVtR5CmvRMojP/o5J5k14xFyYL+3WRGr/a/vUbwK3HM3xh09Nsmcv09qY9La8B87t+1ZulHVvnrDmbsPlJkqqNH+Iy8cmhKPN41nHiXq0KbLTsfnIxvwtX5VyppptSBMxZek0Cc0ikfopfimldqZ2EBfmofS0tRjwgzajhQ7CZU0TdfjRUzs9vqLt0aHUWisxEyFTIxwF9QJJqYUJRrwmJP/QMZY050fXqOjO1fEHKSorDWCW3onPQbVwazADWzr9k8pK7hDBFGmFOJfN5GflZGRwmT5H9AJGMnZuPaq+Fw6oNsQMqdFUT/KwIDAQAB

平台方测试环境机构密钥证书序列号:

4B5330BB58120A860F696E90988C4059C9A5486E

平台方生产环境公钥:

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkebsfISXmDjCHX6qJIAhdujsNhMKi08RODLp51Pl9nogaSonPdpcORXWJwaWeETZxFmIE7zwBMlVBADdUTJmvSqJ4Rj69toWzv/VSKxA57h7xNfqHNmXjmhO/KmVWKUGbjWjIWwpS8JTPC9BIRv9X4CudfTw7gjAuSO6cHIHISYc0ovlebTdrJ8M1PouXoXJLMfZbhPlXAT7qxCel7lwT2R6gN4Hux0X2jP7SaDrxZ1dBq8Hbwk+g6JScmF7XCltOZ5pLP/kTJiJApdaNAtfTjnFCqkprw3pyE+9b4RJPIW4OmEr8+uc3Au0sljRguE5+wjdcF9pBMa6E9I6JZsD6wIDAQAB

平台方生产环境机构密钥证书序列号:

E193A01ECF8D30AD0AFFEFD332CE934E32FFCE72