商户通过本接口将订单信息上送至合利宝-跨境系统,获取到跳转url,直接在浏览器请求此地址,进入支付页面。
系统展示支付宝二维码,用户使用支付宝APP扫码完成支付。
支付完成后,系统自动完成购汇,付汇业务
测试请求地址 | https://cbtrxtest.helipay.com/cbgateway/api/pay/appScan |
请求地址 | https://cbptrx.helipay.com/cbgateway/api/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) | 否 | ||
付款人姓名 | payerName | String(64) | 是 | 张三 | |
付款人身份证号 | payerIdCardNo | String(20) | 是 | 110101200001012999 | |
付款人卡号 | payerAccountNo | String(20) | 是 | 110101200001012999 | |
付款人手机号 | payerMobile | String(20) | 否 | 13701234567 | |
报备号 | 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 gatewayAliScanPay() { RemoteService remoteService = new RemoteServiceImpl(); GatewayApiScanPayRequestForm form = setScanPayRequestForm(ProductEnumType.ALIPAYSCAN.name()); HeliRequest param = HandleDataUtils.encodeAndSign(form,form.getProductCode(),form.getMerchantNo()); HeliRequest heliRequest = remoteService.postRemoteInvoke(LoadPropertiesUtils.getProperty("gatewayApiScanPurchaseUrl"), JSONObject.toJSONString(param), HeliRequest.class); GatewayPayResponseForm appScanPayResponseForm = HandleDataUtils.decode(heliRequest, GatewayPayResponseForm.class,heliRequest.getProductCode(),heliRequest.getMerchantNo()); logger.info("#####解密后的内容为{}", appScanPayResponseForm); } private GatewayApiScanPayRequestForm setScanPayRequestForm(String productCode) { GatewayApiScanPayRequestForm request = new GatewayApiScanPayRequestForm(); //必填项:涉及到的 账户名和地址,备注的,最好都不要有中文。 强制要求英文 request.setPurchaseCurrency("USD"); //外币金额需要大于50 request.setPurchaseAmount(new BigDecimal("100")); request.setPurchaseCategory("STUDYABROAD"); request.setReceiptionCountry("USA"); request.setBankName("OLDENBURGISCHE LANDESBANK AG"); request.setRouteNo("SWIFT"); request.setPayeeBankCode("DE018774"); request.setPayeeBankAdd("usa xx 00 bank"); request.setPayeeName("corn"); request.setPayeeAccountNo("124fhk"); request.setPayeeAddress("usa xx 00 bank"); request.setOrderAmount(new BigDecimal("100")); request.setMerchantNo(LoadPropertiesUtils.getProperty("merchantNo")); request.setProductCode(productCode); request.setOrderNo(productCode + System.currentTimeMillis()); //选填项:涉及到的 账户名和地址,备注的,最好都不要有中文。 强制要求英文 request.setRemitMessage("Go to a foreign school to see the beauty"); request.setPurchaseServerCallbackUrl("http://wwww.baidu.com/a/b"); request.setProtectFlag(""); request.setPeriod(""); request.setPeriodUnit(""); request.setServerCallbackUrl(""); request.setGoodsName("BMWCar"); request.setOrderIp("127.0.0.1"); request.setPayerName("张三"); request.setPayerIdCardNo("123213131232213"); request.setPayerAccountNo("12323213123213123"); request.setPayerMobile("188012345678"); return request; }
错误码 | 错误码描述 | 解决方案 |
---|---|---|