@Override public CCPCAccount addOrUpdateCCPCAccount(BeneficiaryAccountRequest bnyAccount) { CCPCAccount ccpcAccount = null; CCPCAccount temp = cCPCAccountService.findCCPCAccount(bnyAccount.getUsrLogin(), bnyAccount.getBnyAccNo()); if (temp != null) { temp.setBnyAccName(bnyAccount.getBnyAccName()); ccpcAccount = cCPCAccountService.updateCCPCAccount(temp); } else { ccpcAccount = bnyAccountRequestToCCPCAccount(bnyAccount); CCPCBank ccpcBank = ccpcBankService.findCCPCBankByBankName(bnyAccount.getBnyBankName()); ccpcAccount.setAbbrName(ccpcBank == null ? "DEFAULT" : ccpcBank.getAbbrName()); ccpcAccount = cCPCAccountService.addCCPCAccount(ccpcAccount); } return ccpcAccount; }
@Override public PayInfoResponse pay(PayInfoRequest request) { Long usrId = request.getUsrId(); Assert.notNull(usrId, "usrId should not be null!"); // 支付密码校验 MrchUsr mrchUsr = mrchUsrService.findById(usrId); if (mrchUsr == null || (!mrchUsr.isUsrState())) { throw new AppRTException( AppExCode.MRCH_USR_UNAVAILABLE, "mrchUsr[" + usrId + "] not exist or disable!"); } if (StringUtils.isBlank(mrchUsr.getPayPwd())) { throw new AppRTException( AppExCode.PAY_PWD_NOT_EXIST, "mrchUsr[" + usrId + "] payPwd not exitst"); } if (!mrchUsr.getPayPwd().equalsIgnoreCase(request.getPayPwd())) { throw new AppRTException(AppExCode.PAY_PWD_ERROR, "payPwd error"); } // 商户、门店校验 Merchant merchant = merchantService.findMerchantByMrchNo(request.getMrchNo()); if (merchant == null || !merchant.isAvailable()) { throw new AppRTException( AppExCode.MERCHANT_NOT_AVAILABLE, "merchant not exist!" + request.getMrchNo()); } Store store = null; if (StringUtils.isNotBlank(request.getStoreNo())) { store = storeService.findByStoreNo(request.getStoreNo()); if (store == null || !store.isAvailable()) { throw new AppRTException( AppExCode.STORE_NOT_AVAILABLE, "store not exist!" + request.getStoreNo()); } } /** 交易流水是否重复* */ String upSno = request.getTransToken(); PayCCPC tempPayCCPC = payCCPCService.findPayCCPCByUpSno(upSno); if (tempPayCCPC != null) { logger.error("payCCPC[upSno:" + upSno + "] exist!!!"); throw new AppRTException(AppExCode.TRADE_EXIST, "payCCPC[upSno:" + upSno + "] exist"); } // 设置常用联系人 如果不存在则新增 if (request.getIsFavoriteBnyAcc() != null) { if (request.getIsFavoriteBnyAcc()) { CCPCAccount temp = cCPCAccountService.findCCPCAccount(mrchUsr.getUsrLogin(), request.getBnyAccNo()); if (temp == null) { CCPCAccount ccpcAccount = new CCPCAccount(); ccpcAccount.setMrchNo(request.getMrchNo()); ccpcAccount.setUsrLogin(mrchUsr.getUsrLogin()); ccpcAccount.setRmtAccNo(request.getRmtAccNo()); ccpcAccount.setBnyAccNo(request.getBnyAccNo()); ccpcAccount.setBnyAccName(request.getBnyAccName()); ccpcAccount.setBnyBankName(request.getBnyBankName()); CCPCBank ccpcBank = ccpcBankService.findCCPCBankByBankName(request.getBnyBankName()); ccpcAccount.setAbbrName(ccpcBank == null ? "DEFAULT" : ccpcBank.getAbbrName()); cCPCAccountService.addCCPCAccount(ccpcAccount); } } } /** 构造支付流水* */ String payNo = payNoGenerator.generate(); Coordinate location = request.getLocation(); /** 保存电子签名* */ // 电子签名格式 payNo-transType.png boolean isSaveRmtEsignSuccess = false; boolean isSaveBnyEsignSuccess = false; if (request.getIsNeedBillInfo() != null && request.getIsNeedBillInfo()) { String rmtElecSignDataFileName = payNo + "-rmt" + "." + XPOSPClientUtils.ESIGNATURE_PICTURE_SUFFIX; String bnyElecSignDataFileName = payNo + "-bny" + "." + XPOSPClientUtils.ESIGNATURE_PICTURE_SUFFIX; isSaveRmtEsignSuccess = XPOSPClientUtils.saveElecsignPic( rmtElecSignDataFileName, request.getMrchNo(), request.getStoreNo(), request.getRmtElecsignData()); isSaveBnyEsignSuccess = XPOSPClientUtils.saveElecsignPic( bnyElecSignDataFileName, request.getMrchNo(), request.getStoreNo(), request.getBnyElecsignData()); request.setRmtElecsignData(null); // 由于电子签名数据量大,保存成功后清空 request.setBnyElecsignData(null); // 由于电子签名数据量大,保存成功后清空 } PayCCPC payCCPC = new PayCCPC(); payCCPC.setPayNo(payNo); payCCPC.setMrchNo(request.getMrchNo()); payCCPC.setMrchName(merchant.getMrchName()); payCCPC.setStoreNo(request.getStoreNo()); payCCPC.setStoreName(store == null ? null : store.getStoreName()); payCCPC.setOperatorName(mrchUsr.getUsrName()); payCCPC.setUpSno(upSno); payCCPC.setImei(request.getImei()); payCCPC.setLatitude(location == null ? null : location.getLatitude()); payCCPC.setLongitude(location == null ? null : location.getLongitude()); payCCPC.setRmtAccNo(request.getRmtAccNo()); payCCPC.setRmtBankName(request.getRmtBankName()); payCCPC.setBnyAccNo(request.getBnyAccNo()); payCCPC.setBnyAccName(request.getBnyAccName()); payCCPC.setBnyBankName(request.getBnyBankName()); payCCPC.setIsNeedBillInfo( request.getIsNeedBillInfo() == null ? false : request.getIsNeedBillInfo()); payCCPC.setNotifyMobile(request.getNotifyMobile()); payCCPC.setRmtElecsignStatus( isSaveRmtEsignSuccess ? Const.VLDSTATE_VALID : Const.VLDSTATE_INVALID); payCCPC.setBnyElecsignStatus( isSaveBnyEsignSuccess ? Const.VLDSTATE_VALID : Const.VLDSTATE_INVALID); payCCPC.setCnaps(request.getCnaps()); payCCPC.setBnyAmt(request.getBnyAmt()); payCCPC.setBnyRealAmt(request.getBnyAmt()); payCCPC.setRemitStatus(CCPCConfig.REMIT_STATUS_CCPC_PROCESSING); payCCPC.setUsrLogin(mrchUsr.getUsrLogin()); payCCPC.setRemark(request.getRemark()); payCCPCService.addPayCCPC(payCCPC); // 对外付款 payCCPC = remitProcess.pay(payCCPC); PayInfoResponse response = payCCPCToPayInfoResponse(payCCPC); return response; }