商户通过本接口将订单信息上送至合利宝-跨境系统,获取到跳转url,直接在浏览器请求此地址,展示用户信息录入界面。
用户录入信息后,系统展示微信二维码,用户使用微信APP扫码完成支付。
支付完成后,系统自动完成购汇,付汇业务
| 测试请求地址 | https://cbtrxtest.helipay.com/cbgateway/rest/pay/appScan |
| 请求地址 | https://cbptrx.helipay.com/cbgateway/rest/pay/appScan |
| 提交方式 | 采用POST方法提交,requestbody传值 Content-Type=[application/json;charset=UTF-8] |
| 签名算法 | UTF-8字符编码 SHA256签名 AES加密 |
| 名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
| 产品编码 | productCode | String(20) | 是 | WXPAYSCAN | |
| 商户订单号 | orderNo | String(64) | 是 | p_20170302185347 | |
| 商户编号 | merchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的商户编号 |
| 订单金额 | orderAmount | Number(10.2) | 是 | 0.01 | 单位:元 |
| 商品名称 | goodsName | String(150) | 是 | Iphone7 | |
| 下单ip | orderIp | String(15) | 否 | 1.1.1.1 | |
| 有效期 | period | String(6) | 否 | 1 | 默认为7 |
| 有效期单位 | periodUnit | String(10) | 否 | HOUR | YEAR/MONTH/DAY/HOUR/MINUTE/SECOND;默认为DAY |
| 服务器回调地址 | serverCallbackUrl | String(300) | 否 | http://www.456.com | |
| 购汇币种 | 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 | |
| 页面回调地址 | pageCallbackUrl | String(300) | 否 | http://www.456.com | |
| 保税商品标识 | protectFlag | String(300) | 否 | ||
| 报备号 | reportId | String(20) | 否 | 123123 | 产品开通后,此值会发送到商户侧,商户可选择性上送 |
| 名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
| 产品编码 | productCode | String(20) | 是 | WXPAYSCAN | |
| 商户订单号 | 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 | 是 | 直接在浏览器打开此地址,引导用户录入个人信心 |
@Test
public void testWxScan() {
RemoteService remoteService = new RemoteServiceImpl();
GatewayScanPayRequestForm request = new GatewayScanPayRequestForm();
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.setProductCode(ProductEnumType.WXPAYSCAN.name());
request.setMerchantNo(merchantNo);
String orderNo = GenerateUtils.generateSerialNumber(ProductEnumType.valueOf(request.getProductCode()), request.getMerchantNo());
request.setOrderNo(orderNo);
request.setOrderAmount(new BigDecimal("2.01"));
request.setPeriod("1");
request.setPeriodUnit("day");
request.setServerCallbackUrl("https://www.baidu.com");
request.setPageCallbackUrl("https://www.baidu.com");
request.setGoodsName("测试商品");
request.setOrderIp("192.168.1.17");
HeliRequest param = HandleDataUtils.encodeAndSign(appScanPayRequestForm,appScanPayRequestForm.getProductCode(),appScanPayRequestForm.getMerchantNo());
HeliRequest heliRequest = remoteService.postRemoteInvoke(LoadPropertiesUtils.getProperty("wxScanUrl"), JSONObject.toJSONString(param), HeliRequest.class);
GatewayPayResponseForm appScanPayResponseForm = HandleDataUtils.decode(heliRequest, GatewayPayResponseForm.class,heliRequest.getProductCode(),heliRequest.getMerchantNo());
logger.info("#####解密后的内容为{}", appScanPayResponseForm);
}
| 错误码 | 错误码描述 | 解决方案 |
|---|---|---|