跨境汇款-上传明细-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;
    }
                                

                                

                                

错误码

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