此接口支持API主订单下单
| 测试请求地址 | https://cbtrxtest.helipay.com/cbtrx/rest/crossBorder/rmbCrossOrder |
| 请求地址 | https://cbptrx.helipay.com/cbtrx/rest/crossBorder/rmbCrossOrder |
| 提交方式 | 采用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 | 固定值RMBCROSS |
| 到岸币别 | currency | String | 是 | CAD | 需打款到收款人的币别,币别代码详见“开放平台=》附录=》币种编码 |
| 汇款类型 | crossCategory | String | 是 | SERVICE_TRADE | SERVICE_TRADE-服务贸易 GOODS_TRADE-货物贸易 |
| 下发类型 | swiftType | String(10) | 是 | SHARE/OUR | |
| 附言 | remark | String(18) | 是 | ewrwrqwreq | 英文或拼音 |
| 收款人ID | reciveID | String(18) | 是 | 合利宝-跨境系统分配的唯一收款人ID | |
| 关联明细批次流水号 | crossRmbDetailID | String(20) | 是 | REW152341YMe100000018,REW152341YMe100000017 | 可上传多个 用,隔开 |
| 到岸金额 | toShoreAmount | String | 否 | 10 | 外币金额 明细为外币上送此金额 订单金额留空 |
| 订单金额 | orderAmount | String | 否 | 10 | 人民币金额 明细为人民币上送 到岸金额留空 |
| 名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
| 返回码 | errorCode | String(20) | 是 | 0000 | |
| 返回信息 | errorMessage | String | 是 | 成功 | |
| 跨境汇款订单号 | orderNo | String | 是 | RWQ79527677Me10000018 | 当前订单订单号 |
/**
* 主订单
*/
@RequestMapping("/toRmbCrossOrder")
public ModelAndView toRmbCrossOrder() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("rmbcross/rmbCrossOrder");
return modelAndView;
}
@RequestMapping(value = "/rmbCrossOrderSubmit" , method = RequestMethod.POST)
public ModelAndView rmbCrossOrderSubmit(@ModelAttribute @Valid RmbCrossApiOrderDTO rmbCrossApiOrderDTO , BindingResult bindingResult){
ModelAndView modelAndView = new ModelAndView();
if (bindingResult.hasErrors()) {
throw new CommonSystemException(CommonSystemException.ILLEGAL_DATA_REQUEST[0], bindingResult.getFieldError().getDefaultMessage());
}
HeliRequest result = HandleDataUtils.encodeAndSign(rmbCrossApiOrderDTO, rmbCrossApiOrderDTO.getProductCode(), rmbCrossApiOrderDTO.getPlatMerchantNo(), rmbCrossApiOrderDTO.getMerchantNo());
HeliRequest heliRequest = remoteService.postRemoteInvoke(LoadPropertiesUtils.getProperty("rmbCrossOrderUrl"), JSONObject.toJSONString(result), HeliRequest.class);
RmbCrossOrderApiResponseForm responseForm = HandleDataUtils.decode(heliRequest, RmbCrossOrderApiResponseForm.class, rmbCrossApiOrderDTO.getProductCode(), rmbCrossApiOrderDTO.getPlatMerchantNo(), rmbCrossApiOrderDTO.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/rmbCrossOrderResult");
return modelAndView;
}
| 测试请求地址 | https://cbtrxtest.helipay.com/cbtrx/rest/crossBorder/rmbCrossOrderQuery |
| 请求地址 | https://cbptrx.helipay.com/cbtrx/rest/crossBorder/rmbCrossOrderQuery |
| 提交方式 | 采用POST方法提交,requestbody传值 Content-Type=[application/json;charset=UTF-8] |
| 签名算法 | UTF-8字符编码 SHA256签名 AES加密 |
| 名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
| 产品编码 | productCode | String(20) | 是 | ||
| 订单号 | orderNo | String(64) | 是 | p_20170302185347 | 跨境汇款订单号 |
| 商户编号 | merchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的商户编号 |
| 名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|---|
| 产品编码 | productCode | String(20) | 是 | RMBCROSS | |
| 跨境汇款订单号 | rmbCrossOrderNo | String | 是 | RE79275YMe100000018 | 跨境汇款订单号 |
| 商户编号 | merchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的商户编号 |
| 返回码 | errorCode | String(10) | 是 | 0000 | 0000 代表请求成功 |
| 返回信息 | errorMessage | String(200) | 否 | 成功 | 响应信息 错误信息 |
| 创建时间 | createDate | Date | 是 | 订单创建时间 | |
| 完成时间 | compleDate | Date | 否 | 订单完成时间 | |
| 状态 | status | String | 是 | DOING | INIT 新建 AUTHDEBI 实名认证待扣款, AUTHDEBITING 实名认证扣款中 DOING 待校验 NOVALID 校验不通过 LOGISTICSDEBIT 物流校验待扣款 LOGISTICSDEBITING 物流校验扣款中 LOGISTICS 物流校验中 VALID 校验通过 AMOUNT 金额已确认 CONFIRMED 牌价已确认 |
| 到岸币别 | currency | String | 是 | USD | 需打款到收款人的币别,币别代码详见“开放平台=》附录=》币种编码 |
| 订单金额 | orderAmount | BigDecimal | 是 | 100 | 单位为元,最多保留小数点后两位 |
| 到岸金额 | toShAmount | BigDecimal | 是 | 14.5 | |
| 手续费 | fee | BigDecimal | 是 | 单位为元 | |
| 锁汇牌价 | lockRemitPrice | BigDecimal | 是 | 689.65 | 商户锁汇牌价 |
| 汇款类型 | crossCategory | String | 是 | GOODS_TRADE | |
| 附言 | remark | String | 是 | ABC Co., Ltd. | |
| 收款人ID | receiveID | String | 是 | RE59265926YMe000000018 | 合利宝-跨境系统分配的唯一收款人ID |
| 关联明细批次号 | detailBatchNo | String | 否 | RE7895257923YMe1000000018 | 关联明细批次流水号 |
/**
* 订单查询
*/
@RequestMapping("/toRmbCrossOrderQuery")
public ModelAndView toRmbCrossOrderQuery() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("rmbcross/rmbCrossOrderQuery");
return modelAndView;
}
@RequestMapping(value = "/rmbCrossOrderQuery" , method = RequestMethod.POST)
public ModelAndView rmbCrossOrderQuery(@ModelAttribute @Valid RmbCrossApiOrderQueryDTO rmbCrossApiOrderDTO , BindingResult bindingResult){
ModelAndView modelAndView = new ModelAndView();
if (bindingResult.hasErrors()) {
throw new CommonSystemException(CommonSystemException.ILLEGAL_DATA_REQUEST[0], bindingResult.getFieldError().getDefaultMessage());
}
HeliRequest result = HandleDataUtils.encodeAndSign(rmbCrossApiOrderDTO, rmbCrossApiOrderDTO.getProductCode(), rmbCrossApiOrderDTO.getPlatMerchantNo(), rmbCrossApiOrderDTO.getMerchantNo());
HeliRequest heliRequest = remoteService.postRemoteInvoke(LoadPropertiesUtils.getProperty("rmbCrossOrderQueryUrl"), JSONObject.toJSONString(result), HeliRequest.class);
RmbCrossOrderApiQueryResponseForm responseForm = HandleDataUtils.decode(heliRequest, RmbCrossOrderApiQueryResponseForm.class, rmbCrossApiOrderDTO.getProductCode(), rmbCrossApiOrderDTO.getPlatMerchantNo(), rmbCrossApiOrderDTO.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/rmbCrossOrderQueryResult");
return modelAndView;
}
| 错误码 | 错误码描述 | 解决方案 |
|---|---|---|