跨境汇款-支付宝主扫下单-(API接口)

接口描述

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

                                

                                

                                

错误码

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