绑卡以及交易. 首绑支付需要使用短验接口.下单未选择同步下发短信,发起交易时需要调用"首绑支付短信"接口进行短信验证
测试请求地址 | https://cbtrxtest.helipay.com/cbtrx/rest/pay/firstApply |
请求地址 | https://cbptrx.helipay.com/cbtrx/rest/pay/firstApply |
提交方式 | 采用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) | 是 | QUICKPAY | 固定值 |
用户编号 | memberNo | String | 是 | ID9527 | |
用户姓名 | memberName | String(10) | 是 | 张三 | |
证件类型 | idCardType | String(18) | 是 | IDCARD | |
证件号码 | memberID | String(18) | 是 | 110101200001012999 | |
用户手机号 | memberMobile | String(20) | 是 | 13701234567 | |
卡号 | cardNo | String(19) | 是 | 622******9890707 | |
交易金额 | orderAmount | String(40) | 是 | 1.0 | |
交易币种 | currency(10) | String | 是 | CNY | |
商品数量 | goodsQuantity | String(20) | 是 | 1 | |
商品名称 | goodsName | String(40) | 是 | Mac | |
用户注册账号 | userAccount | String(40) | 是 | 18900000001 | |
应用类型 | appType | String(20) | 是 | IOS | IOS、AND(安卓客户端)、H5、WX、OTHER |
应用名 | appName | String(20) | 是 | 某宝 | |
业务场景 | dealSceneType | String(20) | 是 | QUICKPAY | |
终端类型 | terminalType | String(10) | 是 | IMEI | IMEI、 MAC、 UUID(针对 IOS 系统)、 OTHER |
终端标识 | terminalId | String(50) | 是 | 122121212121 | |
服务器通知回调地址 | serverCallbackUrl | String(40) | 是 | www.baidu.com | |
下单IP | orderIp | String(40) | 是 | 127.0.0.1 | |
是否同步下发短信 | sendValidateCode | String(10) | 是 | 是/否 | |
信用卡有效期年份 | expireYear | String(10) | 否 | 21 | |
信用卡有效期月份 | expireMonth | String(10) | 否 | 03 | |
cvv2 | cvv2 | String(10) | 否 | ||
交易定位地址 | lbs | String(40) | 否 | ||
场景参数 | dealSceneParams | String(40) | 否 | ||
有效期单位 | periodUnit | String(20) | 否 | MINUTE | |
有效期 | period | String(20) | 否 | 30 |
名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
---|---|---|---|---|---|
产品编码 | productCode | String(20) | 是 | QUICKPAY | |
订单号 | orderNo | String(64) | 是 | p_20170302185347 | |
商户编号 | merchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的商户编号 |
返回码 | errorCode | String(10) | 是 | 0000 | 0000 代表请求成功 |
返回信息 | errorMessage | String(200) | 否 | 成功 | 响应信息 错误信息 |
响应日期 | current | String(50) | 否 |
@RequestMapping(value = "/firstQuickPay", method = RequestMethod.POST) public ModelAndView quickPay(@ModelAttribute @Valid FirstQuickPayRequestForm firstQuickPayRequestForm, 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(firstQuickPayRequestForm,firstQuickPayRequestForm.getProductCode(),firstQuickPayRequestForm.getMerchantNo()); HeliRequest heliRequest = remoteService.postRemoteInvoke(LoadPropertiesUtils.getProperty("firstQuickURL"), JSONObject.toJSONString(result), HeliRequest.class); FirstQuickPayOrderResponseForm responseForm = HandleDataUtils.decode(heliRequest, FirstQuickPayOrderResponseForm.class,firstQuickPayRequestForm.getProductCode(),firstQuickPayRequestForm.getMerchantNo()); if (!CbDemoConstants.SUCCESS_CODE.equals(responseForm.getErrorCode())) { throw new CommonSystemException(responseForm.getErrorCode(),responseForm.getErrorMessage()); } logger.info(responseForm.getOrderNo()); modelAndView.addObject("responseForm", responseForm); modelAndView.setViewName("firstpay/firstQuickPayResult"); return modelAndView; }
测试请求地址 | https://cbtrxtest.helipay.com/cbtrx/rest/pay/firstApplyConfirmSMS |
请求地址 | https://cbptrx.helipay.com/cbtrx/rest/pay/firstApplyConfirmSMS |
提交方式 | 采用POST方法提交,requestbody传值 Content-Type=[application/json;charset=UTF-8] |
签名算法 | UTF-8字符编码 SHA256签名 AES加密 |
名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
---|---|---|---|---|---|
产品编码 | productCode | String(20) | 是 | QUICKPAY | |
原申请订单号 | orderNo | String(64) | 是 | p_20170302185347 | 原绑卡申请订单号 |
商户编号 | merchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的商户编号 |
名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
---|---|---|---|---|---|
产品编码 | productCode | String(20) | 是 | QUICKPAY | |
原申请订单号 | orderNo | String(64) | 是 | p_20170302185347 | 原绑卡申请订单号 |
商户编号 | merchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的商户编号 |
返回码 | errorCode | String(10) | 是 | 0000 | 0000 代表请求成功 |
返回信息 | errorMessage | String(200) | 否 | 成功 | 响应信息 错误信息 |
@RequestMapping(value = "/firstQuickPayConfirmSms", method = RequestMethod.POST) public ModelAndView quickPayConfirmSMS(@ModelAttribute @Valid NewQuickPayConfirmSMSRequestForm requestForm, 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(requestForm,requestForm.getProductCode(),requestForm.getMerchantNo()); HeliRequest heliRequest = remoteService.postRemoteInvoke(LoadPropertiesUtils.getProperty("firstQUickURLSMS"), JSONObject.toJSONString(result), HeliRequest.class); NewQuickPayConfirmSMSResponseForm responseForm = HandleDataUtils.decode(heliRequest, NewQuickPayConfirmSMSResponseForm.class,requestForm.getProductCode(),requestForm.getMerchantNo()); if (!CbDemoConstants.SUCCESS_CODE.equals(responseForm.getErrorCode())) { throw new CommonSystemException(responseForm.getErrorCode(),responseForm.getErrorMessage()); } logger.info(responseForm.getOrderNo()); modelAndView.addObject("responseForm", responseForm); modelAndView.setViewName("firstpay/firstReSendMsgResult"); return modelAndView; }
测试请求地址 | https://cbtrxtest.helipay.com/cbtrx/rest/pay/firstApplyConfirm |
请求地址 | https://cbptrx.helipay.com/cbtrx/rest/pay/firstApplyConfirm |
提交方式 | 采用POST方法提交,requestbody传值 Content-Type=[application/json;charset=UTF-8] |
签名算法 | UTF-8字符编码 SHA256签名 AES加密 |
名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
---|---|---|---|---|---|
产品编码 | productCode | String(20) | 是 | QUICKPAY | |
商户订单号 | orderNo | String(64) | 是 | p_20170302185347 | |
商户编号 | merchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的商户编号 |
短信验证码 | smsCode | String(10) | 是 | 123456 | 短信验证码 |
名称 | 参数 | 类型 | 必填 | 示例值 | 说明 |
---|---|---|---|---|---|
产品编码 | productCode | String(20) | 是 | QUICKPAY | |
商户订单号 | orderNo | String(64) | 是 | p_20170302185347 | |
商户编号 | merchantNo | String(10) | 是 | Me10000002 | 合利宝-跨境系统分配的商户编号 |
响应码 | retCode | String(10) | 否 | 0000 | 0000 代表请求成功 |
响应信息 | retMsg | String(200) | 否 | 成功 | 响应信息 错误信息 |
绑卡ID | bindId | String(40) | 否 |
@RequestMapping(value = "/firstQuickPayConfirm", method = RequestMethod.POST) public ModelAndView quickPayConfirm(@ModelAttribute @Valid FirstQuickPayConfirmRequestForm requestForm, 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(requestForm,requestForm.getProductCode(),requestForm.getMerchantNo()); HeliRequest heliRequest = remoteService.postRemoteInvoke(LoadPropertiesUtils.getProperty("firstQuickConfirm"), JSONObject.toJSONString(result), HeliRequest.class); FirstQuickPayConfirmResponseForm responseForm = HandleDataUtils.decode(heliRequest, FirstQuickPayConfirmResponseForm.class,requestForm.getProductCode(),requestForm.getMerchantNo()); if (!CbDemoConstants.SUCCESS_CODE.equals(responseForm.getErrorCode())){ throw new CommonSystemException(responseForm.getErrorCode(),responseForm.getErrorMessage()); } logger.info(responseForm.getOrderNo()); modelAndView.addObject("responseForm", responseForm); modelAndView.setViewName("firstpay/firstQuickPayConfirmResult"); return modelAndView; }
错误码 | 错误码描述 | 解决方案 |
---|---|---|