|
@@ -252,14 +252,22 @@ public class HeliPayServiceImpl implements HeliPayService {
|
|
|
shopOrderId = Integer.valueOf(split[2]);
|
|
|
} else {
|
|
|
QuickPayConfirmPayResponseVo res = (QuickPayConfirmPayResponseVo) o;
|
|
|
- payType = "28";
|
|
|
orderRequestNo = res.getRt5_orderId();
|
|
|
mbOrderId = res.getRt6_serialNumber();
|
|
|
amount = Double.valueOf(res.getRt8_orderAmount());
|
|
|
String[] s = orderRequestNo.split("_");
|
|
|
- // orderId = order.getOrderNo() + "_" + order.getOrderId() + "_" + heliDto.getShopOrderId();
|
|
|
+ // orderId = order.getOrderNo() + "_" + order.getOrderId() + "_" + heliDto.getShopOrderId() + "_" + infoId;
|
|
|
orderId = Integer.valueOf(s[1]);
|
|
|
shopOrderId = Integer.valueOf(s[2]);
|
|
|
+ //infoId
|
|
|
+ Integer infoId = Integer.valueOf(s[3]);
|
|
|
+ String bankCode = res.getRt11_bankId();
|
|
|
+ Integer bankType = "DEBIT".equals(res.getRt12_onlineCardType()) ? 1 : 2;
|
|
|
+ payOrderMapper.updateQuickInfo(bankCode, bankType, infoId);
|
|
|
+ String userId = res.getRt14_userId().substring(1);
|
|
|
+ // 快捷支付借记卡支付28,快捷支付贷记卡支付29
|
|
|
+ payType = 1 == bankType ? "28" : "29";
|
|
|
+ payOrderMapper.insertBindId(res.getRt10_bindId(), res.getRt4_customerNumber(), userId, infoId);
|
|
|
}
|
|
|
// 订单信息
|
|
|
OrderVo order = orderCommonMapper.getOrderByOrderId(orderId);
|
|
@@ -1317,9 +1325,11 @@ public class HeliPayServiceImpl implements HeliPayService {
|
|
|
}
|
|
|
} else {
|
|
|
log.info("快捷支付付款状态异常============================> res:" + res);
|
|
|
+ delQuickInfo(res);
|
|
|
}
|
|
|
} else {
|
|
|
log.info("快捷支付回调验签失败=========================> res:" + res);
|
|
|
+ delQuickInfo(res);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
@@ -1327,6 +1337,137 @@ public class HeliPayServiceImpl implements HeliPayService {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+ public void delQuickInfo(QuickPayConfirmPayResponseVo res) {
|
|
|
+ // 未成功删除cm_quickpay_info中预存的userInfo信息
|
|
|
+ String[] s = res.getRt5_orderId().split("_");
|
|
|
+ String infoId = s[3];
|
|
|
+ payOrderMapper.delQuickInfo(infoId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResponseJson bindBankCard(HeliDto heliDto) {
|
|
|
+ QuickPayBindCardPreOrderVo confirmBindCardVo = new QuickPayBindCardPreOrderVo();
|
|
|
+ String time = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
|
|
|
+ String orderId = "bd_" + heliDto.getUserId() + "_" + time;
|
|
|
+ confirmBindCardVo.setP1_bizType("QuickPayBindCardPreOrder");
|
|
|
+ //todo 一次请求只能绑定一个e商户,暂定绑定网络,有支付请求走预下单直接绑定
|
|
|
+ confirmBindCardVo.setP2_customerNumber(CUSTOMERNUM2);
|
|
|
+ confirmBindCardVo.setP3_userId("U" + heliDto.getUserId());
|
|
|
+ confirmBindCardVo.setP4_orderId(orderId);
|
|
|
+ confirmBindCardVo.setP5_timestamp(time);
|
|
|
+ confirmBindCardVo.setP6_payerName(heliDto.getQuickPayUserName());
|
|
|
+ confirmBindCardVo.setP7_idCardType("IDCARD");
|
|
|
+ confirmBindCardVo.setP8_idCardNo(heliDto.getIdCard());
|
|
|
+ confirmBindCardVo.setP9_cardNo(heliDto.getQuickPayBankNumber());
|
|
|
+ confirmBindCardVo.setP13_phone(heliDto.getQuickPayMobile());
|
|
|
+ confirmBindCardVo.setProtocolType("protocol");
|
|
|
+ confirmBindCardVo.setSendValidateCode("true");
|
|
|
+ confirmBindCardVo.setSignatureType("SM3WITHSM2");
|
|
|
+ Map reqestMap = null;
|
|
|
+ try {
|
|
|
+ reqestMap = MessageHandle.getReqestMap(confirmBindCardVo);
|
|
|
+ Map<String, Object> resultMap = HttpClientService.getHttpResp(reqestMap, Constant.REQUEST_URL_QUICKPAY);
|
|
|
+ log.info("响应结果:" + resultMap);
|
|
|
+ if ((Integer) resultMap.get("statusCode") != org.apache.commons.httpclient.HttpStatus.SC_OK) {
|
|
|
+ log.info("请求失败--------------------");
|
|
|
+ return ResponseJson.error("请求失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ String resultMsg = (String) resultMap.get("response");
|
|
|
+ BindCardPreOrderResponseVo responseVo = JSONObject.parseObject(resultMsg, BindCardPreOrderResponseVo.class);
|
|
|
+ if (!MessageHandle.checkSign(responseVo)) {
|
|
|
+ log.info("验签失败");
|
|
|
+ return ResponseJson.error("验签失败!");
|
|
|
+ }
|
|
|
+ if (!"SUCCESS".equals(responseVo.getSmsMsg())) {
|
|
|
+ log.info("短信发送失败------------------------");
|
|
|
+ return ResponseJson.error("短信发送失败!");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return ResponseJson.success(orderId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResponseJson bindByCode(String bindCode, String orderId) {
|
|
|
+ ConfirmBindCardVo confirmBindCardVo = new ConfirmBindCardVo();
|
|
|
+ confirmBindCardVo.setP1_bizType("ConfirmBindCard");
|
|
|
+ confirmBindCardVo.setP2_customerNumber(Constant.CUSTOMERNUM2);
|
|
|
+ confirmBindCardVo.setP3_orderId(orderId);
|
|
|
+ String[] s = orderId.split("_");
|
|
|
+ confirmBindCardVo.setP4_timestamp(s[2]);
|
|
|
+ confirmBindCardVo.setP5_validateCode(bindCode);
|
|
|
+ confirmBindCardVo.setSignatureType("SM3WITHSM2");
|
|
|
+ Map reqestMap = null;
|
|
|
+ try {
|
|
|
+ reqestMap = MessageHandle.getReqestMap(confirmBindCardVo);
|
|
|
+ Map<String, Object> resultMap = HttpClientService.getHttpResp(reqestMap, Constant.REQUEST_URL_QUICKPAY);
|
|
|
+ log.info("响应结果:" + resultMap);
|
|
|
+ if ((Integer) resultMap.get("statusCode") != org.apache.commons.httpclient.HttpStatus.SC_OK) {
|
|
|
+ log.info("请求失败");
|
|
|
+ return ResponseJson.error("请求失败");
|
|
|
+ }
|
|
|
+ String resultMsg = (String) resultMap.get("response");
|
|
|
+ ConfirmBindCardResponseVo responseVo = JSONObject.parseObject(resultMsg, ConfirmBindCardResponseVo.class);
|
|
|
+ if (!MessageHandle.checkSign(responseVo)) {
|
|
|
+ return ResponseJson.error("验签失败!");
|
|
|
+ }
|
|
|
+ if (!"SUCCESS".equals(responseVo.getRt7_bindStatus())) {
|
|
|
+ return ResponseJson.error("绑定失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return ResponseJson.success();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResponseJson<List<QuickBankVo>> bankInfos(Integer cardType) {
|
|
|
+ return ResponseJson.success(payOrderMapper.findQuickBank(cardType));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResponseJson unBoundCard(Integer cardId) {
|
|
|
+ BankCardUnbindVo unbind = new BankCardUnbindVo();
|
|
|
+ QuickInfoVo info = payOrderMapper.getQuickInfoById(cardId);
|
|
|
+ String time = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
|
|
|
+ unbind.setP1_bizType("BankCardUnbind");
|
|
|
+ unbind.setP2_customerNumber(info.getCustomer());
|
|
|
+ unbind.setP3_userId(info.getQuickPayUserId());
|
|
|
+ unbind.setP4_bindId(info.getQuickPaybindId());
|
|
|
+ unbind.setP5_orderId("ub_" + time + cardId);
|
|
|
+ unbind.setP6_timestamp(time);
|
|
|
+ unbind.setSignatureType("SM3WITHSM2");
|
|
|
+ try {
|
|
|
+ Map reqestMap = MessageHandle.getReqestMap(unbind);
|
|
|
+ Map<String, Object> resultMap = HttpClientService.getHttpResp(reqestMap, REQUEST_URL_QUICKPAY);
|
|
|
+ log.info("响应结果:" + resultMap);
|
|
|
+ if ((Integer) resultMap.get("statusCode") != org.apache.commons.httpclient.HttpStatus.SC_OK) {
|
|
|
+ log.info("----------------解绑银行卡请求失败-----------------");
|
|
|
+ return ResponseJson.error("请求失败!");
|
|
|
+ }
|
|
|
+ String resultMsg = (String) resultMap.get("response");
|
|
|
+ ConfirmBindCardResponseVo responseVo = JSONObject.parseObject(resultMsg, ConfirmBindCardResponseVo.class);
|
|
|
+ if (!MessageHandle.checkSign(responseVo)) {
|
|
|
+ log.info("------------------------解绑银行卡验签失败-------------------");
|
|
|
+ return ResponseJson.error("解绑银行卡验签失败!");
|
|
|
+ }
|
|
|
+ if (!"0000".equals(responseVo.getRt2_retCode())) {
|
|
|
+ log.info("-----------------银行卡解绑失败---------------------");
|
|
|
+ return ResponseJson.error("银行卡解绑失败!");
|
|
|
+ }
|
|
|
+ // 解绑成功 cm_quickpay_info置为删除
|
|
|
+ payOrderMapper.delQuickInfo(cardId.toString());
|
|
|
+ payOrderMapper.delQuickBindId(info.getQuickPaybindId());
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ log.info("交易异常:" + e.getMessage());
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
public static <T> T postForm(Map<String, String> params, String url, String sign, Class<T> clazz) {
|
|
|
FormBody.Builder builder = new FormBody.Builder();
|
|
|
for (Map.Entry<String, String> entry : params.entrySet()) {
|