此接口支持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; }
错误码 | 错误码描述 | 解决方案 |
---|---|---|