商户通过本接口将订单信息上送至合利宝-跨境系统,获取到跳转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) | 是 | ALIPAYSCAN | |
商户订单号 | 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) | 是 | ALIPAYSCAN | |
商户订单号 | 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 testAliScan() { 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.ALIPAYSCAN.name()); request.setMerchantNo(merchantNo); String orderNo = GenerateUtils.generateSerialNumber(ProductEnumType.valueOf(request.getProductCode()), request.getMerchantNo()); request.setOrderNo(orderNo); request.setOrderAmount(new BigDecimal("0.05")); 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("aliScanUrl"), JSONObject.toJSONString(param), HeliRequest.class); GatewayPayResponseForm appScanPayResponseForm = HandleDataUtils.decode(heliRequest, GatewayPayResponseForm.class,heliRequest.getProductCode(),heliRequest.getMerchantNo()); logger.info("#####解密后的内容为{}", appScanPayResponseForm); }
错误码 | 错误码描述 | 解决方案 |
---|---|---|