商户通过本接口将订单信息上送至合利宝-跨境系统,获取到跳转url,直接在浏览器请求此地址,展示用户信息录入界面。
用户录入信息后,系统直接跳转到银行,用户可以继续操作网银付款
支付完成后,系统自动完成购汇,付汇业务
测试请求地址 | https://cbtrxtest.helipay.com/cbgateway/rest/pay/online |
请求地址 | https://cbptrx.helipay.com/cbgateway/rest/pay/online |
提交方式 | 采用POST方法提交,requestbody传值 Content-Type=[application/json;charset=UTF-8] |
签名算法 | UTF-8字符编码 SHA256签名 AES加密 |
名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
---|---|---|---|---|---|
产品编码 | productCode | String(20) | 是 | ONLINEB2B | ONLINEB2B 或 ONLINEB2C |
商户订单号 | orderNo | String(64) | 是 | p_20170302185347 | 商户系统内部订单号,同一商户号下订单号唯一 |
商户编号 | merchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的商户编号 |
订单金额 | orderAmount | Number(10.2) | 是 | 0.01 | 单位:元 |
银行编码 | bankCode | String(20) | 是 | ICBC/CCB | 银行编码,详细信息参见附录 |
业务类型 | business | String(5) | 是 | B2C/B2B | 对公/对私 |
下单ip | orderIp | String(15) | 否 | 1.1.1.1 | |
商户描述 | goodsName | String(150) | 否 | Iphone7 | |
有效期 | period | String(6) | 否 | 1 | 默认为7 |
有效期单位 | periodUnit | String(10) | 否 | HOUR | YEAR/MONTH/DAY/HOUR/MINUTE/SECOND;默认为DAY |
服务器回调地址 | serverCallbackUrl | String(300) | 否 | http://www.456.com | |
页面回调地址 | pageCallbackUrl | String(300) | 否 | http://www.123.com | |
借贷类型 | onlineCardType | String(15) | 否 | DEBIT/CREDIT | 借/贷 |
购汇币种 | purchaseCurrency | String(15) | 是 | USD/CAD | 详细信息参见附录 |
购汇金额 | purchaseAmount | Number(10.2) | 是 | 0.01 | |
购汇用途 | purchaseCategory | String(24) | 是 | STUDYABROAD | 留学 其他详细参见附录 |
国家/地区代码 | receiptionCountry | String(20) | 是 | ALB | 阿尔巴尼亚Albania 详细参见附录 |
银行 | bankName | String(250) | 是 | ||
路由编码 | routeNo | String(20) | 是 | SWIFT\ABN\IBAN | 三选一 |
收款人开户银行代码 | payeeBankCode | String(20) | 是 | 参考 | 路由编码对应银行编码 |
收款人开户银行地址 | payeeBankAdd | String(250) | 是 | ||
收款人姓名 | payeeName | String(250) | 是 | ||
收款人账号 | payeeAccountNo | String(50) | 是 | ||
收款人地址 | payeeAddress | String(250) | 是 | ||
收款人邮编 | postcode | String(20) | 是 | ||
付汇附言 | remitMessage | String(250) | 是 | 仅支持字母 | |
购付汇服务器回调地址 | purchaseServerCallbackUrl | String(300) | 否 | http://www.456.com | |
保税商品标识 | protectFlag | String(300) | 否 |
名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
---|---|---|---|---|---|
产品编码 | productCode | String(20) | 是 | ONLINEB2B | ONLINEB2B 或 ONLINEB2C |
商户订单号 | orderNo | String(64) | 是 | p_20170302185347 | |
商户编号 | merchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的商户编号 |
平台流水号 | serialNumber | String(32) | 否 | 201702241400010002 | 合利宝-跨境系统生成的唯一交易流水号 |
当前牌价加点 | orderPrice | Number(10.2) | 是 | ||
响应码 | errorCode | String(10) | 是 | 0000 | 0000 代表请求成功 |
响应信息 | errorMessage | String(200) | 否 | 成功 | 响应信息 错误信息 |
响应时间 | current | String(20) | 是 | 2018-04-01 12:00:00 | 格式yyyy-MM-dd HH:mm:ss |
用户信息录入URL地址 | redirectUrl | String | 是 | 直接在浏览器打开此地址,引导用户录入个人信心 | |
订单状态 | orderStatus | String | 否 |
INIT:初始化 WAITING:待支付 SUCCESS:用户支付成功,等待购付汇处理(系统自动发起) PURCHASING:购汇处理中 REMITTING:购汇完成,付汇处理中 REMITTED:付汇处理完成 FAILED:失败 |
@Test public void onlinePay() { RemoteServiceImpl remoteService = new RemoteServiceImpl(); HeliRequest heliRequest = remoteService.postRemoteInvoke(LoadPropertiesUtils.getProperty("onlinePayUrl"), installDto(), HeliRequest.class); OnlinePayResponseForm form = decode(heliRequest, GatewayPayResponseForm.class,heliRequest.getProductCode(),heliRequest.getMerchantNo()); logger.info("#####解密后的内容为{}", form.toString()); } public static String installDto() { GatewayOnlinePayRequestFrom request = new GatewayOnlinePayRequestFrom(); request.setPurchaseAmount(new BigDecimal("12")); request.setPurchaseCategory(CrossCategory.STUDYABROAD.name()); request.setPurchaseCurrency(Currency.USD.name()); request.setPurchaseServerCallbackUrl("http://wwww.corn.com/a/b"); request.setReceiptionCountry(ReceiptionCountry.USA.name()); request.setRemitMessage("null"); request.setBankName("我怎么知道是什么银行"); request.setRouteNo(BankCodeType.SWIFT.name()); request.setPayeeAccountNo("124fhk"); request.setPayeeAddress("usa xx 00 bank"); request.setPayeeName("corn"); request.setPayeeBankCode("ABC"); request.setPayeeBankAdd("usa xx 00 bank"); request.setBankCode("CMBCHINA"); request.setBusiness("B2C"); request.setOrderAmount(new BigDecimal("22.83")); request.setMerchantNo(merchantNo); request.setProductCode("ONLINEB2C"); request.setOrderNo("ONLINE" + System.currentTimeMillis()); return JSONObject.toJSONString(encodeAndSign(onlinePayRequestFrom,onlinePayRequestFrom.getProductCode(),onlinePayRequestFrom.getMerchantNo())); }
错误码 | 错误码描述 | 解决方案 |
---|---|---|