电商平台 子商户注册(个体工商户注册)
| 测试请求地址 | https://cbtrxtest.helipay.com/cbtrx/rest/platMerchant/registSubMerchantForIndividual |
| 请求地址 | https://cbptrx.helipay.com/cbtrx/rest/platMerchant/registSubMerchantForIndividual |
| 提交方式 | 采用POST方法提交,requestbody传值 Content-Type=[application/json;charset=UTF-8] |
| 签名算法 | UTF-8字符编码 SHA256签名 AES加密 |
| 名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
| 商户编号 | merchantNo | String(10) | 是 | 商户编号 | |
| 平台商编号 | platMerchantNo | String(10) | 否 | 商户对应的平台商,不填写默认为商户编号 | 商户对应的平台商,不填写默认为商户编号 |
| 订单号 | orderNo | String(64) | 是 | 请求订单号,商户唯一 | 商户唯一 |
| 产品编码 | productCode | String(50) | 是 | PLATMERCHANTREGIST | PLATMERCHANTREGIST |
| 法人姓名 | legalPerson | String(50) | 是 | 小商户法人姓名 | 小商户法人姓名 |
| 法人身份证号 | legalPersonID | String(30) | 是 | ||
| 身份证有效期 | validatePerson | String(12) | 是 | yyyy-MM-dd | yyyy-MM-dd |
| 身份证有效期结束 | validatePersonEnd | String(12) | 是 | yyyy-MM-dd | yyyy-MM-dd |
| 通讯地址 | address | String(256) | 是 | 法人通讯地址 | 法人通讯地址 |
| 商户所在省 | province | String(15) | 是 | 小商户省份:北京市、山东省等 | 小商户省份 |
| 商户所在市 | city | String(50) | 是 | 小商户市:北京市、济南市 | 小商户市 |
| 邮箱 | String(50) | 是 | |||
| 企业名称 | merchantShowName | String(50) | 是 | 企业名称 | 企业名称 |
| 营业执照号 | businessLicense | String(20) | 是 | 营业执照号 | 营业执照号 |
| 联系人 | linkman | String(50) | 是 | 企业联系人 | 企业联系人 |
| 手机 | linkPhone | String(11) | 是 | 手机 | 手机 |
| 营业执照有效期 | validateLicense | String(12) | 是 | yyyy-MM-dd | |
| 营业执照有效期结束日期 | validateLicenseEnd | String(12) | 是 | yyyy-MM-dd | |
| 结算卡户名 | settleBankInfo.accountName | String(50) | 是 | 结算卡户名 | 结算卡户名 |
| 结算卡号 | settleBankInfo.accountNo | String(50) | 是 | 结算卡号 | 结算卡号 |
| 结算卡主行 | settleBankInfo.bankName | String(50) | 是 | 中国农业银行、中国工商银行 | 中国农业银行、中国工商银行 |
| 结算卡主行编码 | settleBankInfo.bankCode | String(10) | 是 | ABC、ICBC | ABC、ICBC |
| 支行联行号 | settleBankInfo.bankSymbol | String(50) | 是 | 支行联行号 | 支行联行号 |
| 卡类型 | settleBankInfo.bankType | String(10) | 是 | B2B B2C | 结算卡类型:对公、对私 |
| 开户行省 | settleBankInfo.bankProv | String(15) | 是 | 开户省:北京市、山东省 | 开户省:北京市、山东省 |
| 开户市 | settleBankInfo.bankCity | String(50) | 是 | 开户市:北京市、济南市 | 开户市:北京市、济南市 |
| 卡类型 | settleBankInfo.settlementType | String(20) | 是 | SELFHELP | 固定值:SELFHELP |
| 结算主体 | settleBankInfo.settleOwnerType | String(15) | 是 | MERCHANT | 固定值:MERCHANT |
| 开通产品签名排序 | openProduct[index].index | int | 是 | 1、2、3 | 按照产品开通签名顺序排序 |
| 开通产品产品编码 | openProduct[index].productCode | String(15) | 是 | ONLINEB2B | 产品编码 |
| 产品百分比费率 | openProduct[index].percentageCost | double | 是 | 2.00 | 产品百分比费率 |
| 单笔费率 | openProduct[index].singleCost | double | 是 | 3.00 | 产品单笔手续费 |
| 最低手续费 | openProduct[index].minCost | double | 是 | 1.00 | 最低手续费 |
| 最高手续费 | openProduct[index].maxCost | double | 是 | 10.00 | 最高手续费 |
| 借贷记类型 | openProduct[index].ruleId | String | 否 | DEBIT | 支持借贷记的产品必须上送 不支持可以不上送 |
| 名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
| 产品编码 | productCode | String(20) | 是 | PLATMERCHANTREGIST | 订单对应的实际业务对应的产品编码 |
| 商户订单号 | orderNo | String(64) | 是 | p_20170302185347 | 请求订单号 |
| 商户编号 | merchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的商户编号 |
| 平台商户编号 | platMerchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的平台商户编号 |
| 平台流水号 | serialNumber | String(32) | 否 | 201702241400010002 | 合利宝-跨境系统生成的唯一交易流水号 |
| 响应码 | errorCode | String(10) | 是 | 0000 | 0000 代表请求成功 |
| 响应信息 | errorMessage | String(200) | 否 | 成功 | 响应信息 错误信息 |
| 响应时间 | current | String(20) | 是 | 2018-04-01 12:00:00 | 格式yyyy-MM-dd HH:mm:ss |
| 新生成子商户编号 | subMerchantNo | String(10) | 是 | 新创建子商户编号 | |
| 电子合同 | authElecContractUrl | String | 是 | 电子合同上传地址 | |
| 营业执照正面 | authBusinessLicenseFrontUrl | String | 是 | 营业执照正面上传地址 | |
| 营业执照背面 | authBusinessLicenseBackUrl | String | 是 | 营业执照背面上传地址 | |
| 法人身份证正面 | authLegalPersonIDCardFrontUrl | String | 是 | 法人身份证正面上传地址 | |
| 法人身份证背面 | authLegalPersonIDCardBackUrl | String | 是 | 法人身份证背面上传地址 | |
| 结算卡正面 | settleBankCardFrontUrl | String | 是 | 结算卡正面上传地址 | |
| 结算卡背面 | settleBankCardBackUrl | String | 是 | 结算卡背面上传地址 |
/**
* 个体工商户
*
* @param request
* @param result
* @return
*/
public ModelAndView registSubMerchantForIndividual(@ModelAttribute @Valid PlatMerchantForIndividualRegistRequestForm request, BindingResult result) {
ModelAndView mav = new ModelAndView();
if (result.hasErrors()) {
throw new CommonSystemException(CommonSystemException.ILLEGAL_DATA_REQUEST[0], result.getFieldError().getDefaultMessage());
}
HeliRequest heliRequest = remoteService.postRemoteInvoke(LoadPropertiesUtils.getProperty("registSubMerchantForIndividual"), JSONObject.toJSONString(encodeAndSign(request, request.getProductCode(), request.getPlatMerchantNo(), request.getMerchantNo())), HeliRequest.class);
PlatMerchantRegistResponseForm responseForm = decode(heliRequest, PlatMerchantRegistResponseForm.class, request.getProductCode(), request.getPlatMerchantNo(), request.getMerchantNo());
if (!CbDemoConstants.SUCCESS_CODE.equals(responseForm.getErrorCode())) {
throw new CommonSystemException(responseForm.getErrorCode(), responseForm.getErrorMessage());
}
mav.setViewName("/plat/subMerchantRegistResult");
mav.addObject("responseForm", responseForm);
return mav;
}
| 错误码 | 错误码描述 | 解决方案 |
|---|---|---|
电商平台-子商户注册(小微商户注册)
| 测试请求地址 | https://cbtrxtest.helipay.com/cbtrx/rest/platMerchant/registSubMerchantForPersonal |
| 请求地址 | https://cbptrx.helipay.com/cbtrx/rest/platMerchant/registSubMerchantForPersonal |
| 提交方式 | 采用POST方法提交,requestbody传值 Content-Type=[application/json;charset=UTF-8] |
| 签名算法 | UTF-8字符编码 SHA256签名 AES加密 |
| 名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
| 商户编号 | merchantNo | String(10) | 是 | 商户编号 | |
| 平台商编号 | platMerchantNo | String(10) | 否 | 商户对应的平台商,不填写默认为商户编号 | 商户对应的平台商,不填写默认为商户编号 |
| 订单号 | orderNo | String(64) | 是 | 请求订单号,商户唯一 | 商户唯一 |
| 产品编码 | productCode | String(50) | 是 | PLATMERCHANTREGIST | PLATMERCHANTREGIST |
| 法人姓名 | legalPerson | String(50) | 是 | 小商户法人姓名 | 小商户法人姓名 |
| 手机 | linkPhone | String(11) | 是 | 手机 | 手机 |
| 法人身份证号 | legalPersonID | String(30) | 是 | ||
| 身份证有效期 | validatePerson | String(12) | 是 | yyyy-MM-dd | yyyy-MM-dd |
| 身份证有效期结束 | validatePersonEnd | String(12) | 是 | yyyy-MM-dd | yyyy-MM-dd |
| 通讯地址 | address | String(256) | 是 | 法人通讯地址 | 法人通讯地址 |
| 商户所在省 | province | String(15) | 是 | 小商户省份:北京市、山东省等 | 小商户省份 |
| 商户所在市 | city | String(50) | 是 | 小商户市:北京市、济南市 | 小商户市 |
| 邮箱 | String(50) | 是 | |||
| 结算卡户名 | settleBankInfo.accountName | String(50) | 是 | 结算卡户名 | 结算卡户名 |
| 结算卡号 | settleBankInfo.accountNo | String(50) | 是 | 结算卡号 | 结算卡号 |
| 结算卡主行 | settleBankInfo.bankName | String(50) | 是 | 中国农业银行、中国工商银行 | 中国农业银行、中国工商银行 |
| 结算卡主行编码 | settleBankInfo.bankCode | String(10) | 是 | ABC、ICBC | ABC、ICBC |
| 支行联行号 | settleBankInfo.bankSymbol | String(50) | 是 | 支行联行号 | 支行联行号 |
| 卡类型 | settleBankInfo.bankType | String(10) | 是 | B2B B2C | 结算卡类型:对公、对私 |
| 开户行省 | settleBankInfo.bankProv | String(15) | 是 | 开户省:北京市、山东省 | 开户省:北京市、山东省 |
| 开户市 | settleBankInfo.bankCity | String(50) | 是 | 开户市:北京市、济南市 | 开户市:北京市、济南市 |
| 卡类型 | settleBankInfo.settlementType | String(20) | 是 | SELFHELP | 固定值:SELFHELP |
| 结算主体 | settleBankInfo.settleOwnerType | String(15) | 是 | MERCHANT | 固定值:MERCHANT |
| 开通产品签名排序 | openProduct[index].index | int | 是 | 1、2、3 | 按照产品开通签名顺序排序 |
| 开通产品产品编码 | openProduct[index].productCode | String(15) | 是 | ONLINEB2B | 产品编码 |
| 产品百分比费率 | openProduct[index].percentageCost | double | 是 | 2.00 | 产品百分比费率 |
| 单笔费率 | openProduct[index].singleCost | double | 是 | 3.00 | 产品单笔手续费 |
| 最低手续费 | openProduct[index].minCost | double | 是 | 1.00 | 最低手续费 |
| 最高手续费 | openProduct[index].maxCost | double | 是 | 10.00 | 最高手续费 |
| 借贷记类型 | openProduct[index].ruleId | String | 否 | DEBIT | 支持借贷记的产品必须上送 不支持可以不上送 |
| 名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
| 产品编码 | productCode | String(20) | 是 | PLATMERCHANTREGIST | 订单对应的实际业务对应的产品编码 |
| 商户订单号 | orderNo | String(64) | 是 | p_20170302185347 | 请求订单号 |
| 商户编号 | merchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的商户编号 |
| 平台商户编号 | platMerchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的平台商户编号 |
| 平台流水号 | serialNumber | String(32) | 否 | 201702241400010002 | 合利宝-跨境系统生成的唯一交易流水号 |
| 响应码 | errorCode | String(10) | 是 | 0000 | 0000 代表请求成功 |
| 响应信息 | errorMessage | String(200) | 否 | 成功 | 响应信息 错误信息 |
| 响应时间 | current | String(20) | 是 | 2018-04-01 12:00:00 | 格式yyyy-MM-dd HH:mm:ss |
| 新生成子商户编号 | subMerchantNo | String(10) | 是 | 新创建子商户编号 | |
| 电子合同 | authElecContractUrl | String | 是 | 电子合同上传地址 | |
| 营业执照正面 | authBusinessLicenseFrontUrl | String | 是 | 营业执照正面上传地址 | |
| 营业执照背面 | authBusinessLicenseBackUrl | String | 是 | 营业执照背面上传地址 | |
| 法人身份证正面 | authLegalPersonIDCardFrontUrl | String | 是 | 法人身份证正面上传地址 | |
| 法人身份证背面 | authLegalPersonIDCardBackUrl | String | 是 | 法人身份证背面上传地址 | |
| 结算卡正面 | settleBankCardFrontUrl | String | 是 | 结算卡正面上传地址 | |
| 结算卡背面 | settleBankCardBackUrl | String | 是 | 结算卡背面上传地址 |
/**
* 小微商户
*
* @param request
* @param result
* @return
*/
@RequestMapping(value = "/registSubMerchantForPersonal")
public ModelAndView registSubMerchantForPersonal(@ModelAttribute @Valid PlatMerchantForPersonalRegistRequestForm request, BindingResult result) {
ModelAndView mav = new ModelAndView();
if (result.hasErrors()) {
throw new CommonSystemException(CommonSystemException.ILLEGAL_DATA_REQUEST[0], result.getFieldError().getDefaultMessage());
}
HeliRequest heliRequest = remoteService.postRemoteInvoke(LoadPropertiesUtils.getProperty("registSubMerchantForPersonal"), JSONObject.toJSONString(encodeAndSign(request, request.getProductCode(), request.getPlatMerchantNo(), request.getMerchantNo())), HeliRequest.class);
PlatMerchantRegistResponseForm responseForm = decode(heliRequest, PlatMerchantRegistResponseForm.class, request.getProductCode(), request.getPlatMerchantNo(), request.getMerchantNo());
if (!CbDemoConstants.SUCCESS_CODE.equals(responseForm.getErrorCode())) {
throw new CommonSystemException(responseForm.getErrorCode(), responseForm.getErrorMessage());
}
mav.setViewName("/plat/subMerchantRegistResult");
mav.addObject("responseForm", responseForm);
return mav;
}
| 错误码 | 错误码描述 | 解决方案 |
|---|---|---|
子商户上传链接重置,如果原链接失效,可通过此接口进行重置
| 测试请求地址 | https://cbtrxtest.helipay.com/cbtrx/rest/platMerchant/reLoadUploadUrl |
| 请求地址 | https://cbptrx.helipay.com/cbtrx/rest/platMerchant/reLoadUploadUrl |
| 提交方式 | 采用POST方法提交,requestbody传值 Content-Type=[application/json;charset=UTF-8] |
| 签名算法 | UTF-8字符编码 SHA256签名 AES加密 |
| 名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
| 商户编号 | merchantNo | String(10) | 是 | 商户编号 | |
| 平台商编号 | platMerchantNo | String(10) | 否 | 商户对应的平台商,不填写默认为商户编号 | 商户对应的平台商,不填写默认为商户编号 |
| 订单号 | orderNo | String(64) | 是 | 注册子商户时候的唯一订单号 | 注册子商户时候的唯一订单号 |
| 产品编码 | productCode | String(50) | 是 | PLATMERCHANTREGIST | PLATMERCHANTREGIST |
| 名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
| 产品编码 | productCode | String(20) | 是 | PLATMERCHANTREGIST | 订单对应的实际业务对应的产品编码 |
| 商户订单号 | orderNo | String(64) | 是 | p_20170302185347 | 请求订单号 |
| 商户编号 | merchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的商户编号 |
| 平台商户编号 | platMerchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的平台商户编号 |
| 平台流水号 | serialNumber | String(32) | 否 | 201702241400010002 | 合利宝-跨境系统生成的唯一交易流水号 |
| 响应码 | errorCode | String(10) | 是 | 0000 | 0000 代表请求成功 |
| 响应信息 | errorMessage | String(200) | 否 | 成功 | 响应信息 错误信息 |
| 响应时间 | current | String(20) | 是 | 2018-04-01 12:00:00 | 格式yyyy-MM-dd HH:mm:ss |
| 新生成子商户编号 | subMerchantNo | String(10) | 是 | 新创建子商户编号 | |
| 电子合同 | authElecContractUrl | String | 是 | 电子合同上传地址 | |
| 营业执照正面 | authBusinessLicenseFrontUrl | String | 是 | 营业执照正面上传地址 | |
| 营业执照背面 | authBusinessLicenseBackUrl | String | 是 | 营业执照背面上传地址 | |
| 法人身份证正面 | authLegalPersonIDCardFrontUrl | String | 是 | 法人身份证正面上传地址 | |
| 法人身份证背面 | authLegalPersonIDCardBackUrl | String | 是 | 法人身份证背面上传地址 | |
| 结算卡正面 | settleBankCardFrontUrl | String | 是 | 结算卡正面上传地址 | |
| 结算卡背面 | settleBankCardBackUrl | String | 是 | 结算卡背面上传地址 |
@RequestMapping(value = "/reLoadUploadUrl")
public ModelAndView reLoadUploadUrl(@ModelAttribute @Valid BaseDTO request, BindingResult result) {
ModelAndView mav = new ModelAndView();
if (result.hasErrors()) {
throw new CommonSystemException(CommonSystemException.ILLEGAL_DATA_REQUEST[0], result.getFieldError().getDefaultMessage());
}
HeliRequest heliRequest = remoteService.postRemoteInvoke(LoadPropertiesUtils.getProperty("reLoadUploadUrl"), JSONObject.toJSONString(encodeAndSign(request, request.getProductCode(), request.getPlatMerchantNo(), request.getMerchantNo())), HeliRequest.class);
PlatMerchantRegistResponseForm responseForm = decode(heliRequest, PlatMerchantRegistResponseForm.class, request.getProductCode(), request.getPlatMerchantNo(), request.getMerchantNo());
if (!CbDemoConstants.SUCCESS_CODE.equals(responseForm.getErrorCode())) {
throw new CommonSystemException(responseForm.getErrorCode(), responseForm.getErrorMessage());
}
mav.setViewName("/plat/subMerchantRegistResult");
mav.addObject("responseForm", responseForm);
return mav;
}
| 错误码 | 错误码描述 | 解决方案 |
|---|---|---|
子商户查询账户信息等
| 测试请求地址 | https://cbtrxtest.helipay.com/cbtrx/rest/platMerchant/queryMerchantInfo |
| 请求地址 | https://cbptrx.helipay.com/cbtrx/rest/platMerchant/queryMerchantInfo |
| 提交方式 | 采用POST方法提交,requestbody传值 Content-Type=[application/json;charset=UTF-8] |
| 签名算法 | UTF-8字符编码 SHA256签名 AES加密 |
| 名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
| 商户编号 | merchantNo | String(10) | 是 | 商户编号 | |
| 平台商编号 | platMerchantNo | String(10) | 否 | 商户对应的平台商,不填写默认为商户编号 | 商户对应的平台商,不填写默认为商户编号 |
| 订单号 | orderNo | String(64) | 是 | 注册子商户时候的唯一订单号 | 注册子商户时候的唯一订单号 |
| 产品编码 | productCode | String(50) | 是 | PLATMERCHANTREGIST | PLATMERCHANTREGIST |
| 需要查询的子商户编号 | subMerchantNo | String | 是 | ||
| 币种 | currency | String | 是 | CNY | |
| 账户类型 | accountType | String | 是 | CASHACCOUNT |
| 名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
| 产品编码 | productCode | String(20) | 是 | PLATMERCHANTREGIST | 订单对应的实际业务对应的产品编码 |
| 商户订单号 | orderNo | String(64) | 是 | p_20170302185347 | 请求订单号 |
| 商户编号 | merchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的商户编号 |
| 平台商户编号 | platMerchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的平台商户编号 |
| 平台流水号 | serialNumber | String(32) | 否 | 201702241400010002 | 合利宝-跨境系统生成的唯一交易流水号 |
| 响应码 | errorCode | String(10) | 是 | 0000 | 0000 代表请求成功 |
| 响应信息 | errorMessage | String(200) | 否 | 成功 | 响应信息 错误信息 |
| 响应时间 | current | String(20) | 是 | 2018-04-01 12:00:00 | 格式yyyy-MM-dd HH:mm:ss |
| 新生成子商户编号 | subMerchantNo | String(10) | 是 | 新创建子商户编号 | |
| 账户类型 | accountType | String | 是 | ||
| 账户状态 | accountStatus | String | 是 | ||
| 账户余额 | balance | double | 是 | ||
| 币种 | currency | String | 是 | ||
| 充值保护金额 | rechargeFixAmount | double | 是 | ||
| 资金入境保护金额 | crossFundFixAmount | double | 是 | ||
| 签章状态 | signStatus | String(20) | 是 | true(签章完成) false(未签章) |
@RequestMapping(value = "/queryMerchantInfo")
public ModelAndView queryMerchantInfo(@ModelAttribute @Valid MerchantInfosRequestForm request, BindingResult result) {
ModelAndView mav = new ModelAndView();
if (result.hasErrors()) {
throw new CommonSystemException(CommonSystemException.ILLEGAL_DATA_REQUEST[0], result.getFieldError().getDefaultMessage());
}
HeliRequest heliRequest = remoteService.postRemoteInvoke(LoadPropertiesUtils.getProperty("queryMerchantInfo"), JSONObject.toJSONString(encodeAndSign(request, request.getProductCode(), request.getPlatMerchantNo(), request.getMerchantNo())), HeliRequest.class);
MerchantInfosResponseForm responseForm = decode(heliRequest, MerchantInfosResponseForm.class, request.getProductCode(), request.getPlatMerchantNo(), request.getMerchantNo());
if (!CbDemoConstants.SUCCESS_CODE.equals(responseForm.getErrorCode())) {
throw new CommonSystemException(responseForm.getErrorCode(), responseForm.getErrorMessage());
}
mav.setViewName("/plat/querySubMerchantInfoResult");
mav.addObject("responseForm", responseForm);
return mav;
}
| 错误码 | 错误码描述 | 解决方案 |
|---|---|---|