跨境汇款-上传明细-API

接口描述

此接口支持API上传明细

明细上传

基本信息

测试请求地址 https://cbtrxtest.helipay.com/cbtrx/rest/crossBorder/detail
请求地址 https://cbptrx.helipay.com/cbtrx/rest/crossBorder/detail
提交方式 采用POST方法提交,requestbody传值 Content-Type=[application/json;charset=UTF-8]
签名算法 UTF-8字符编码 SHA256签名 AES加密

请求参数

名称 参数 类型 必填 示例值 说明
商户编号 merchantNo String(10) Me10000002 合利宝-跨境系统分配的商户编号
订单号 orderNo String(64) p_20170302185347
产品编码 productCode String(20) RMBCROSS 固定值
明细币别 currency String CNY
汇款类型 crossCategory String(10) GOODS_TRADE GOODS_TRADE-货物贸易 SERVICE_TRADE-服务贸易
签名排序 detailDTOS[index].index int(100) 明细交易签名排序
交易类型 detailDTOS[index].tradeType String(100) 一定要按照《标准业务类型、贸易类型、交易编码》来填写
交易编码 detailDTOS[index].tradeNo String(100) 一定要按照《标准业务类型、贸易类型、交易编码》来填写,必须数字
支付方式 detailDTOS[index].businessType String(100) B2C 填写B2B或B2C
交易人 detailDTOS[index].name String(100) B2B的填写公司名称,B2C的填写个人姓名
交易人证件号 detailDTOS[index].idCardNo String(100) B2B的填写公司统一社会信用代码,B2C的填写个人身份证
订单号 detailDTOS[index].orderNo String(100) 121212ooppoo 交易的唯一编号,在同一支付机构范围内唯一。 1、如果由于交易标的不同有多笔相同订单号明细,请将同一订单号合并为一笔,交易标的可以写商品大类 2、如果由于付尾款出现订单号重复,请在订单号后加“-001”、“-002”等 3、可以是物流号、订单号,只要与资料能对应即可(不能自己编写与资料不对应
订单金额 detailDTOS[index].amount BigDecimal 100.00 订单金额
交易标的 detailDTOS[index].goodsName String(100) 交易标的
交易标的数量 detailDTOS[index].goodsQuantity String(100) 交易标的数量
交易日期 detailDTOS[index].tradeDate Date 2018-10-12 订单交易日期
发卡银行 detailDTOS[index].issuingBank String(100)
交易账号 detailDTOS[index].accountNo String(100) 交易账号
发货方式 detailDTOS[index].delivery String(100) 发货方式只能为 快递/物流/海运/空运/陆运
物流公司 detailDTOS[index].logisticsCompany String(100) 如开通物流单校验产品,请按照《快递简码》填写
物流单号 detailDTOS[index].logisticsNo String(100) 多个单号以","分割
交易附言 detailDTOS[index].postscript String 一定要按照《标准业务类型、贸易类型、交易编码》来填写

响应参数

名称 参数 类型 必填 示例值 说明
返回码 errorCode String(20) 0000
返回信息 errorMessage String(64) 成功
明细批次流水号 serialNumber String R123123123TRE 当前明细的批次流水号 根据当前批次流水号进行主订单的绑定

代码示例

 /**
     * 明细上传
     * @return
     */
    @RequestMapping("/toRmbCrossDetail")
    public ModelAndView toRmbCrossDetail() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("rmbcross/rmbCrossDetail");
        return modelAndView;
    }
    @RequestMapping(value = "/rmbCrossDetailSubmit" , method = RequestMethod.POST)
    public ModelAndView rmbCrossDetailSubmit(@ModelAttribute @Valid RmbCrossOrderDetailRequestDTO rmbCrossDetailRequestDTO , BindingResult bindingResult){
        ModelAndView modelAndView = new ModelAndView();
        if (bindingResult.hasErrors()) {
            throw new CommonSystemException(CommonSystemException.ILLEGAL_DATA_REQUEST[0], bindingResult.getFieldError().getDefaultMessage());
        }
        HeliRequest result = HandleDataUtils.encodeAndSign(rmbCrossDetailRequestDTO, rmbCrossDetailRequestDTO.getProductCode(), rmbCrossDetailRequestDTO.getPlatMerchantNo(), rmbCrossDetailRequestDTO.getMerchantNo());
        HeliRequest heliRequest = remoteService.postRemoteInvoke(LoadPropertiesUtils.getProperty("rmbCrossDetailUrl"), JSONObject.toJSONString(result), HeliRequest.class);
        RmbCrossDetailResponseForm rmbCrossDetailResponseForm = HandleDataUtils.decode(heliRequest, RmbCrossDetailResponseForm.class, rmbCrossDetailRequestDTO.getProductCode(), rmbCrossDetailRequestDTO.getPlatMerchantNo(), rmbCrossDetailRequestDTO.getMerchantNo());
        if (!CbDemoConstants.SUCCESS_CODE.equals(rmbCrossDetailResponseForm.getErrorCode())) {
            throw new CommonSystemException(rmbCrossDetailResponseForm.getErrorCode(),rmbCrossDetailResponseForm.getErrorMessage());
        }
        logger.info("跨境汇款明细上传返回详细信息------------{}",rmbCrossDetailResponseForm.toString());

        modelAndView.addObject("responseForm", rmbCrossDetailResponseForm);
        modelAndView.setViewName("rmbcross/rmbCrossDetailResult");
        return modelAndView;
    }



                                

                                

                                

明细查询

基本信息

测试请求地址 https://cbtrxtest.helipay.com/cbtrx/rest/crossBorder/detailQuery
请求地址 https://cbptrx.helipay.com/cbtrx/rest/crossBorder/detailQuery
提交方式 采用POST方法提交,requestbody传值 Content-Type=[application/json;charset=UTF-8]
签名算法 UTF-8字符编码 SHA256签名 AES加密

请求参数

名称 参数 类型 必填 示例值 说明
产品编码 productCode String(20) RMBCROSS 固定值
单条明细请求流水号 orderNo String(64) p_20170302185347 单条请求流水号
商户编号 merchantNo String(10) Me10000002 合利宝-跨境系统分配的商户编号
明细批次流水号 serialNo String R1244232UHIUIHI 上传明细返回明细批次流水号

响应参数

名称 参数 类型 必填 示例值 说明
返回码 errorCode String(10) 0000 0000 代表请求成功
返回信息 errorMessage String(200) 成功 响应信息 错误信息
平台流水号 serialNumber String(200) RO1232HGUYMe100000018 当前明细平台流水号
跨境汇款订单号 rmbCrossOrderNo String 若明细已关联跨境汇款交易,则返回对应跨境汇款订单号
创建时间 createDate Date 明细创建日期
完成时间 lastUpdateDate Date 交易状态变更的时间
状态 orderStatus String DOING INIT 待验证 VALID 校验通过 NOVALID 校验不通过 CANCEL 取消 UPDATE 已修改 DOING 认证中 SAME 重复校验
汇款类型 crossCategory String SERVICE_TRADE SERVICE_TRADE-服务贸易 GOODS_TRADE-货物贸易
明细币别 currency String CNY 三位货币编码,币别代码详见“开放平台=》附录=》币种编码
明细批次流水号 detailBatchNo String) 同一批次号的明细可统一关联一笔跨境汇款订单
请求流水号 requestNo String 2019072500001 商户请求合利宝的唯一流水号
支付方式 payType String B2C B2C:对私 B2B:对公
交易人 tradePayer String 对私:填写付款人姓名 对公:填写付款企业全称
交易人身份证件类型 tradePayCardType String 01 01:身份证 02:护照 03:统一社会信用代码
交易人身份证件号码 tradePayCardNo String 420000200808088888 对私:个人身份证号码或护照 对公:企业统一社会信用代码
单条明细订单号 detailOrderNo String 121212 单条明细订单号
订单金额 orderAmout BigDecimal 12 金额,最多保留小数点后两位
交易类型 tradeType String
交易编码 tradeNo String
交易标的 tradeGoodName String 韩国Ryoe吕 黑吕洗发水 400ml 商品名称
交易标的数量 tradeGoodNo String 1 商品数量
交易标的数量单位 tradeGoodNoUnits String 商品数量单位
交易日期 tradeDate Date 2018-10-12 订单交易日期
支付单号 payOrderNo String J190712175912 支付订单号
发卡银行 cardBank String 中国农业银行 对私:填写个人付款银行全称 对公:填写企业付款银行全称
交易账号 tradeCardNo String 6228480031588888888 付款方账号
发货方式 sendGoodType String 快递,物流,海运,空运,陆运
物流公司名称 logisticsCompany String
快递单号 logisticsOrderNo String 8888
票号 ticketNo String
酒店名称 hotelName String W酒店
房间号 roomNo String 001
交易附言 remark String lslslsls

代码示例


    /**
     * 明细查询
     * @return
     */
    @RequestMapping("/toRmbCrossDetailQuery")
    public ModelAndView toRmbCrossDetailQuery() {
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("rmbcross/rmbCrossDetailQuery");
        return modelAndView;
    }
    @RequestMapping(value = "/rmbCrossDetailQuery" , method = RequestMethod.POST)
    public ModelAndView rmbCrossDetailQuery(@ModelAttribute @Valid RmbCrossDetailQueryDTO queryForm, BindingResult bindingResult) throws UnsupportedEncodingException {
        ModelAndView modelAndView = new ModelAndView();
        if (bindingResult.hasErrors()) {
            throw new CommonSystemException(CommonSystemException.ILLEGAL_DATA_REQUEST[0], bindingResult.getFieldError().getDefaultMessage());
        }
        HeliRequest result = HandleDataUtils.encodeAndSign(queryForm, queryForm.getProductCode(), queryForm.getPlatMerchantNo(), queryForm.getMerchantNo());
        HeliRequest heliRequest = remoteService.postRemoteInvoke(LoadPropertiesUtils.getProperty("rmbCrossDetaiQuerylUrl"), JSONObject.toJSONString(result), HeliRequest.class);
        RmbCrossDetailQueryResponseForm responseForm = HandleDataUtils.decode(heliRequest, RmbCrossDetailQueryResponseForm.class, queryForm.getProductCode(), queryForm.getPlatMerchantNo(), queryForm.getMerchantNo());
        if (!CbDemoConstants.SUCCESS_CODE.equals(responseForm.getErrorCode())) {
            throw new CommonSystemException(responseForm.getErrorCode(),responseForm.getErrorMessage());
        }
        logger.info("返回详细信息------------{}",responseForm.toString());

        modelAndView.addObject("responseForm", responseForm);
        modelAndView.setViewName("rmbcross/rmbCrossDetailQueryResult");
        return modelAndView;
    }
                                

                                

                                

错误码

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