跨境汇款-支付宝主扫下单

接口描述

商户通过本接口将订单信息上送至合利宝-跨境系统,获取到跳转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);
    }

                                

                                

                                

错误码

错误码 错误码描述 解决方案