/** * 签约状态统计(查询银信、基金账户、黄金、信用卡自助还款 签约状态) * * @param map * @return */ @SuppressWarnings("unchecked") private void signState(Context ctx) { ctx.setData("messageState", "0"); ctx.setData("msgChannel", "0"); ctx.setData("fundState", "0"); ctx.setData("fundChannel", "0"); ctx.setData("goldState", "0"); ctx.setData("goldChannel", "0"); ctx.setData("cardState", "0"); // 信用卡自助还款 ctx.setData("cardChannel", "0"); // CusAgreeList if (ctx.getData("CusAgreeList") != null && ((ArrayList<Map<String, Object>>) ctx.getData("CusAgreeList")).size() > 0) { List lst = ((ArrayList<Map<String, Object>>) ctx.getData("CusAgreeList")); for (int k = 0; k < lst.size(); k++) { Map<String, Object> obj1 = ((ArrayList<Map<String, Object>>) ctx.getData("CusAgreeList")).get(k); if (obj1 != null) { ArrayList<Map<String, Object>> listObj = (ArrayList<Map<String, Object>>) (obj1.get("AgreeInfoList")); if (listObj != null && listObj.size() > 0) { for (int i = 0; i < listObj.size(); i++) { if (listObj.get(i).get("AgreementBussTpCd") != null && listObj.get(i).get("AgreementBussTpCd").toString().trim().equals("010AA025")) { Object sts1 = listObj.get(i).get("Sts"); if (sts1 != null && sts1.toString().trim().equals("0")) { ctx.setData("fundState", "1"); ctx.setData("fundChannel", "1"); } } else if (listObj.get(i).get("AgreementBussTpCd") != null && listObj.get(i).get("AgreementBussTpCd").toString().trim().equals("010AC043")) { Object sts2 = listObj.get(i).get("Sts"); if (sts2 != null && sts2.toString().trim().equals("0")) { ctx.setData("messageState", "1"); ctx.setData("msgChannel", "1"); } } else if (listObj.get(i).get("AgreementBussTpCd") != null && listObj.get(i).get("AgreementBussTpCd").toString().trim().equals("010AA058")) { Object sts3 = listObj.get(i).get("Sts"); if (sts3 != null && sts3.toString().trim().equals("0")) { ctx.setData("goldState", "1"); ctx.setData("goldChannel", "1"); } } else if (listObj.get(i).get("AgreementBussTpCd") != null && listObj.get(i).get("AgreementBussTpCd").toString().trim().equals("010AA070")) { Object sts3 = listObj.get(i).get("Sts"); if (sts3 != null && sts3.toString().trim().equals("0")) { ctx.setData("cardState", "1"); ctx.setData("cardChannel", "1"); } } } } } } } }
public void storeSumBlcTrans(Context context) { if (context.getData("accUsableBalance") == null || context.getData("accUsableBalance").equals("")) { context.setData("storeSumBlc", ""); } else { context.setData("storeSumBlc", context.getData("accUsableBalance")); } }
private void setCancelMsgBody(Context context) { Map<String, Object> data = new HashMap<String, Object>(); data.put(ItmFields.TXNCODE, "ECUPTR0721"); data.put("AgrNo", context.getData("protocolNo")); data.put("FcnCde", context.getData("funcNo")); // 删除 data.put("TfoCusAc", context.getData("cardNo")); data.put("VldDte", context.getData("validDate")); data.put("ExpDte", context.getData("endDate")); context.setDataMap(data); }
private void handleSuccessCase(Context ctx, List<Map<String, Object>> list) { ctx.setData("queryTp", "0"); if (ItmConstants.RESFLAG_SUCCESS.equals(ctx.getData(ItmFields.RESFLAG))) { if (list != null) { // 设置返回码 ctx.setData("accList", list); ctx.setData(ItmFields.RESFLAG, ItmConstants.RESFLAG_SUCCESS); ctx.setData(ItmFields.RESCODE, ctx.getData(ItmFields.RESCODE)); ctx.setState("Y"); } } else { ctx.setData(ItmFields.RESFLAG, ItmConstants.RESFLAG_ERROR); ctx.setData(ItmFields.RESCODE, ctx.getData(ItmFields.RESCODE)); ctx.setState("N"); } }
@Override protected void handleSuccessCase(Context ctx) { // TODO Auto-generated method stub @SuppressWarnings("unchecked") Map<String, Object> ecupResponse = (Map<String, Object>) ctx.getData(ItmFields.ECUPRESPONSE); ctx.setDataMap(ecupResponse); ctx.setData("resMsg", "查询自动还款状态成功"); }
/** * * 核心成功情况处理 * * @param ctx */ @SuppressWarnings("unchecked") protected void handleSuccessCase(Context ctx) { logger.info("-----> CardStsQueryAction handleSuccessCase begin <---"); Map<String, Object> ecupResponse = (Map<String, Object>) ctx.getData(ItmFields.ECUPRESPONSE); String cardSts = (String) ecupResponse.get("CardSttWord1"); // 卡状态字1 logger.info("the card's status information:" + cardSts); /* 根据卡状态字的不同位数含义判断卡是否异常状态 */ // 1--正式挂失 2--应急挂失 3--密码挂失 4--集中挂失暂封 if (ItmConstants.STS_EXCEPTION.equals(cardSts.substring(0, 1)) || ItmConstants.STS_EXCEPTION.equals(cardSts.substring(1, 2)) || ItmConstants.STS_EXCEPTION.equals(cardSts.substring(2, 3)) || ItmConstants.STS_EXCEPTION.equals(cardSts.substring(3, 4))) { cardSts = ItmConstants.STS_EXCEPTION; // 异常 } else { cardSts = ItmConstants.STS_NORMAL; // 正常 } /* 卡状态正常需再查询卡的账户状态 */ /* 根据卡的客户账户状态字的不同位数含义判断账户是否异常状态 */ if (ItmConstants.STS_NORMAL.equals(cardSts)) { String accountSts = (String) ecupResponse.get("AccSttWord"); // 账户状态字 logger.info("the card of account's status information:" + accountSts); // 当获取有效的账户状态字时(长度大于21位),根据账户状态字的不同位数含义判断卡是否异常状态 // 02-全部法律冻结 03-全部内部止付 05-冻结暂封 09-存款证明止付 21-保全冻结 if (accountSts.length() >= 21) { if (ItmConstants.STS_EXCEPTION.equals(accountSts.substring(1, 2)) || ItmConstants.STS_EXCEPTION.equals(accountSts.substring(2, 3)) || ItmConstants.STS_EXCEPTION.equals(accountSts.substring(4, 5)) || ItmConstants.STS_EXCEPTION.equals(accountSts.substring(8, 9)) || ItmConstants.STS_EXCEPTION.equals(accountSts.substring(20, 21))) { cardSts = ItmConstants.STS_EXCEPTION; // 异常 } else { cardSts = ItmConstants.STS_NORMAL; // 正常 } } } ctx.setData(ItmFields.CRDSTS, cardSts); ctx.setData("mpFlg", ecupResponse.get("MainCardFlg")); // 主附卡标志: 0-主卡 1-附属卡 logger.info("the acNo[" + ctx.getData(ItmFields.CARDNO) + "] card status:" + cardSts); logger.info("-----> CardStsQueryAction handleSuccessCase end <---"); }
private void setQuerySingInfoMsgBody(Context context) { Map<String, Object> data = new HashMap<String, Object>(); // data.put("transferType", context.getData("transferType")); // data.put("certType", context.getData("certType")); //查询类型 // data.put("cardNo", context.getData("cardNo")); //卡号 // data.put("passVerifyFlag", context.getData("passVerifyFlag")); // //密码校验标志2 // data.put("currType", context.getData("currType")); //卡号 // data.put("currNum", context.getData("currNum")); //起始记录Key值 data.put("FcnCde", "01"); // 功能吗 data.put("TfoCusAc", context.getData("cardNo")); // 卡号 data.put("AgrNo", context.getData("protocolNo")); // 协议号 data.put("AgrKnd", context.getData("transferType")); // 协议种类 data.put("CCY", context.getData("currType")); // 币种 context.setData(ItmFields.TXNCODE, "ECUPTR0722"); data.put("TranCode", "ECUPTR0722"); context.setDataMap(data); }
/** * 双利理财帐户查询报文体组装 * * @param context * @author sujie */ private void setAccountMsgBody(Context ctx) { logger.info("-----> QueryAccBalance setAccountMsgBody begin ---------"); Map<String, Object> data = new HashMap<String, Object>(); data.put(ItmFields.TXNCODE, "ECUPQY0067"); data.put("Function", "3"); // 功能:0-卡信息查询 1-卡客户信息查询2-卡账户信息查询3-卡记账账号及客户信息查询 data.put("CardBehavior", "00000"); // 卡行为:默认00000 data.put("CardNo", ctx.getData("cardNo")); // 卡号 data.put( "AccNoInputModel", "01"); // 账号输入方式:02-磁条读入01-手工方式 05-IC卡,且磁条信息可靠08-芯片卡fallback交易07-qPBOC快速支付交易 // data.put("AccKind", "0"); // 账户种类:功能码2时必输 data.put("CurrTyp", "CNY"); // 币种:功能码2时必输 data.put("TallyAccTyp", ctx.getData("tallyAccTyp")); // 记账账户类型:功能码2时必输 // data.put("CashFlg", "0"); // 钞汇标志 ctx.setDataMap(data); logger.info("-----> QueryAccBalance setReqMsgInfo end ---------"); }
@Override protected void doTransport(Context context) throws Exception { String resFlag = context.getData(ItmFields.RESFLAG); // 根据返回码设置返回终端的参数 if (ItmConstants.RESFLAG_SUCCESS.equals(resFlag)) { signState(context); context.setState("Y"); } else if (ItmConstants.RESFLAG_ERROR.equals(resFlag)) { context.setState("N"); } }
public void doQueryCheck(Context ctx) { logger.info("-----> CardStsQueryAction doQueryCheck begin <---"); // TODO 通过前置方法,先屏蔽本行准贷记卡的卡状态查询(待改造) // 01:本行借记卡;02:本行准贷记卡;03:本行贷记卡;04:本行双币种贷记卡 String cardType = (String) ctx.getData(ItmFields.CARDTYPE); // 非本行借记卡不能发送206270交易 if (!"01".equalsIgnoreCase(cardType)) { logger.info("-----> CardType " + cardType + " is invaild for 206270 <---"); } else { doQuery(ctx); } logger.info("-----> CardStsQueryAction doQueryCheck end <---"); }
/** * 组主机需要的报文 * * @param ctx */ protected void setReqMsgInfo(Context ctx) { logger.info("-----> CardStsQueryAction setReqMsgInfo begin <-----"); ctx.setData("Function", "0"); // 功能:0-不返回卡产品和主附卡信息 1-返回卡产品和主附卡信息 ctx.setData("CardBehavior", "00000"); // 卡行为:默认00000 ctx.setData("CardNo", ctx.getData(ItmFields.CARDNO)); // 卡号 ctx.setData( "AccNoInputModel", "01"); // 账号输入方式:02-磁条读入01-手工方式 05-IC卡,且磁条信息可靠08-芯片卡fallback交易07-qPBOC快速支付交易 // 91-非接触式磁条读入(MSD)98-标准PBOC 借贷记IC 卡读入(非接触式)开即办IC卡时需要 ctx.setData("AccKind", "0"); // 账户种类: 0-记账账户 1-电子现金账户 2-卡储账户 3-B股账号 4-保证金 5-专用款项虚拟户 logger.info("-----> CardStsQueryAction setReqMsgInfo end <-----"); }
/** * 重复发送交易 * * @param ctx */ @SuppressWarnings("unchecked") private void multiSubmit(Context ctx, List<Map<String, Object>> list) { esbpEcupSender.sendAndReceive(ctx); if (ItmConstants.RESFLAG_SUCCESS.equals(ctx.getData(ItmFields.RESFLAG))) { Map<String, Object> ecupResponse = (Map<String, Object>) ctx.getData(ItmFields.ECUPRESPONSE); ArrayList<Map<String, Object>> result = new ArrayList<Map<String, Object>>(); int count = 0; if (("ECUPQY0067").equals(ecupResponse.get("ServiceId").toString())) { result = (ArrayList<Map<String, Object>>) ecupResponse.get("CardInfResult"); count = Integer.parseInt((String) ecupResponse.get("AccCount")); for (int i = 0; i < count; i++) { Map<String, Object> map = result.get(i); Map<String, Object> data = new HashMap<String, Object>(); data.put("accCstNo", map.get("TallyAccNo")); data.put("serialNo", map.get("AccSerial")); // 小序号 data.put("corpus", map.get("AvaBal")); // 账户可用余额 data.put("openAccDate", map.get("CreateDate")); // 开户日期 data.put("startDate", map.get("IntstBeginDate")); // 起息日期 data.put("currType", map.get("CurrTyp")); // 币种 data.put("depositTerm", map.get("DepPer")); // 通知类型 /*data.put("interest", map.get(""));//利息 data.put("interestTax", map.get(""));//利息税 data.put("corpusIntrsTotSum", map.get(""));// */ // data.put("storeSumBlc", map.get("AvaBal"));////账户可用余额 list.add(data); } if ("0".equals(ecupResponse.get("EndFlg")) && count == 10) { ctx.setData("OSEAccSerial", ecupResponse.get("OSEAccSerial")); ctx.setData("EndFlg", ecupResponse.get("EndFlg")); multiSubmit(ctx, list); } } } }
/** * 双利理财签约 * * @param context * @author sujie */ public void slSign(Context context) { try { // 查询会计日 int act = Integer.parseInt(actDate.getCoreActDate()); Log.debug("------> 核心会计日期:" + act); context.setData("actDate", act); // 会计日期查询失败 if (Integer.valueOf(act) == 0) { context.setData("resFlag", "E"); context.setData("resMsg", "签约失败\n\r失败原因:后台获取会计日期失败"); return; } // 失效日期 int endDate = Integer.parseInt((String) context.getData("endDate")); if (act <= endDate) { // set massage head // setHeader(context); // set massage body setSingMsgBody(context); // send to personal gateway esbpEcupSender.sendAndReceive(context); // response handler responseHandler(context); } else { String actStr = actDate.getCoreActDate(); String str1 = actStr.substring(0, 4); String str2 = actStr.substring(4, 6); String str3 = actStr.substring(6); actStr = str1 + "年" + str2 + "月" + str3 + "日"; context.setData("resFlag", "E"); context.setData("resMsg", "签约失败\n\r失败原因:会计日" + actStr + "必须在截止日期之前"); } } catch (Exception e) { logger.error("-----> ShuangliAction Query Exception : ", e); context.setData(ItmFields.RESFLAG, ItmConstants.RESFLAG_ERROR); context.setData(ItmFields.RESCODE, ItmRespCode.COMMON_SYSERROR); } }
/** * 网银报文返回处理 * * @param ctx */ @SuppressWarnings("unchecked") private void responseHandler(Context ctx) { // MF1646系统正在日切,跑批 MF1647 // 网银返回处理 if (ItmConstants.RESFLAG_SUCCESS.equals(ctx.getData(ItmFields.RESFLAG))) { logger.info(" ------------------------ response success ----------------------"); Map<String, Object> ecupResponse = ctx.getData("ecupResponse"); if (ecupResponse != null) { String ServiceId = ecupResponse.get("ServiceId").toString(); if ("ECUPTR0722".equals(ServiceId)) { ctx.setData("inqRecCnt", ecupResponse.get("InqRecCnt")); ctx.setData("endFlag", ecupResponse.get("EndFlg")); // 查询记录条数 if (Integer.valueOf((String) ecupResponse.get("InqRecCnt")) < 1) { ctx.setData("signFlag", "no"); // 没有签约协议,查询帐户余额 ctx.setState("Y"); } else { if (ecupResponse.get("result") != null) { List<Map<String, String>> signInfoList = new ArrayList<Map<String, String>>(); signInfoList = (ArrayList<Map<String, String>>) ecupResponse.get("result"); if (signInfoList.size() > 0) { // 查询结果列表 ctx.setData("signInfoList", ecupResponse.get("result")); ctx.setData("signFlag", "yes"); ctx.setState("N"); } else { ctx.setData("signFlag", "no"); ctx.setState("Y"); } } else { ctx.setData("signFlag", "no"); ctx.setState("Y"); } } } else if ("ECUPTR0721".equals(ServiceId)) { // 双利签约解约 ctx.setData("protocolNo1", ecupResponse.get("AgrNo")); ctx.setData("cardNo1", ecupResponse.get("TfoCusAc")); ctx.setDataMap(ecupResponse); ctx.setState("Y"); } else if ("ECUPIV0703".equals(ServiceId)) { ctx.setData("corpus", ecupResponse.get("AcBal")); // 本金 ctx.setData("interest", ecupResponse.get("PybIntAmt")); // 利息 ctx.setData("interestTax", ecupResponse.get("IntTax")); // 利息税 ctx.setData("charge", ecupResponse.get("Hfe")); // 手续费 ctx.setData("amt", ecupResponse.get("NacAmt")); // 交易金额 ctx.setData("totAmt", ecupResponse.get("TotAmt")); // 总金额 // ctx.setData("storeSumBlc",getStoreSumBlc();//卡余额 // ggcardNo,ggcurrency,ggserialNo为国光提供 ctx.setData("ggcardNo", ctx.getData("cardNo")); ctx.setData("ggcurrency", "CNY"); ctx.setData("ggserialNo", ctx.getData("serialNo")); ctx.setState("Y"); } else if ("ECUPIV0704".equals(ServiceId)) { ctx.setData("corpus", ecupResponse.get("Bal")); // 本金 ctx.setData("interest", ecupResponse.get("PybIntAmt")); // 利息 ctx.setData("interestTax", ecupResponse.get("IntTax")); // 利息税 ctx.setData("charge", ecupResponse.get("Hfe")); // 手续费 ctx.setData("amt", ecupResponse.get("TxnAmt")); // 交易金额 ctx.setData("totAmt", ecupResponse.get("NacPrcIntTot")); // 销户本息合计 // ctx.setData("storeSumBlc",getStoreSumBlc());//卡余额 // ggcardNo,ggcurrency,ggserialNo为国光提供 ctx.setData("ggcardNo", ctx.getData("cardNo")); ctx.setData("ggcurrency", "CNY"); ctx.setData("ggserialNo", ctx.getData("serialNo")); ctx.setState("Y"); } } ctx.setData(ItmFields.RESFLAG, ItmConstants.RESFLAG_SUCCESS); ctx.setData(ItmFields.RESCODE, ctx.getData(ItmFields.RESCODE)); } else if (ItmConstants.RESFLAG_ERROR.equals(ctx.getData(ItmFields.RESFLAG))) { logger.info(" ------------------------ response error ----------------------"); ctx.setData(ItmFields.RESFLAG, ItmConstants.RESFLAG_ERROR); ctx.setData(ItmFields.RESCODE, ctx.getData(ItmFields.RESCODE)); ctx.setState("N"); } else { logger.error("APPLY TO BankQueryAction OTHER EXCEPTION"); ctx.setState("N"); } }
private void setTransMsgBody(Context context) { Map<String, Object> data = new HashMap<String, Object>(); if ("0".equals(context.getData("transFlag"))) { // 全部余额转卡 FcnCde NacMde data.put(ItmFields.TXNCODE, "ECUPIV0703"); data.put(ItmFields.CHOSTCOD, "ECUPIV0703"); data.put("FcnCde", "0"); // 默认输“0” data.put("NacMde", "0"); // 0-正常销户1-挂失销户 data.put("HfeCltMde", "0"); // 手续费收取方式, 默认不收取 data.put( "NacFlg", context.getData("nacFlg")); // 0-存本取息销户1- 通知存款销户 2-整存整取销户 3-零存整取销户4- 定期一本通销户 data.put("CusNo", context.getData(ItmFields.CUSTNO)); data.put("CusAc", context.getData("cardNo")); data.put("AcSeq", context.getData("serialNo")); data.put("AcoAcTyp", context.getData("acoAcTyp")); // data.put("BvTyp", ""); data.put("CCY", context.getData("currency")); String pinBlk = context.getData(ItmFields.PINBLK); /*String tarPinBlk = context.getData(ItmFields.TARPINBLK); if (tarPinBlk != null ) { tarPinBlk += 3000; }*/ data.put("TxnPsw", pinBlk); data.put("IntFlg", "0"); // 0:计息1:不计息 data.put("CshTfaFlg", "2"); // 现转标志2:卡备用金 data.put( "BvCde", "0".equals(context.getData(ItmFields.ICTYPE)) ? "007" : "008"); // 凭证代码:007代表ic卡 data.put("BvNo", "0"); // 默认输“0”? data.put("DrwMde", "1"); // 支取方式:凭密支取 data.put("TfiCusAc", context.getData("cardNo")); // 转入账户 data.put("TxnAmt", context.getData("sum")); // 金额 data.put( "CusAcTyp", "0".equals(context.getData(ItmFields.ICTYPE)) ? "205" : "204"); // 凭证代码:204-磁条卡 205-IC卡 206-磁条和IC复合卡 } else { data.put(ItmFields.TXNCODE, "ECUPIV0704"); data.put(ItmFields.CHOSTCOD, "ECUPIV0704"); data.put("FcnCde", "0"); // 默认输“0” data.put("NteNo", "0000"); data.put("HfeCltMde", "0"); // 手续费收取方式, 默认不收取 data.put("CusAc", context.getData("cardNo")); // 客户账号 data.put( "CusAcTyp", "0".equals(context.getData(ItmFields.ICTYPE)) ? "205" : "204"); // 凭证代码:204-磁条卡 205-IC卡 206-磁条和IC复合卡 data.put("AcSeq", context.getData("serialNo")); data.put( "BvCde", "0".equals(context.getData(ItmFields.ICTYPE)) ? "007" : "008"); // 凭证代码:007代表ic卡 data.put("BvNo", "0"); // 默认输“0”? data.put("CCY", context.getData("currency")); data.put("IntFlg", "0"); // 0:计息1:不计息 data.put("TxnAmt", context.getData("sum")); // 金额 data.put("CshTfaFlg", "2"); // 现转标志2:卡备用金 data.put("DrwMde", "1"); // 支取方式:凭密支取 String pinBlk = context.getData(ItmFields.PINBLK); /*String tarPinBlk = context.getData(ItmFields.TARPINBLK); if (tarPinBlk != null ) { tarPinBlk += 3000; }*/ data.put("TfiCusAc", context.getData("cardNo")); // 转入账户 data.put("TxnPsw", pinBlk); // CashUtil.setTrackInfo(context); // 设置卡输入方式、二三磁道信息 // CashUtil.setICParamsInfo(context); // 设置55域信息 } context.setDataMap(data); }
private void setSingMsgBody(Context context) { Map<String, Object> data = new HashMap<String, Object>(); data.put(ItmFields.TXNCODE, "ECUPTR0721"); data.put(ItmFields.CHOSTCOD, "ECUPTR0721"); data.put("FcnCde", "00"); // 00:表示新增 data.put("TfoCusAc", context.getData("cardNo")); data.put("TfoBvCde", context.getData("certType")); // 转出凭证类型1:表示卡 // data.put("TfiCusAc", context.getData("toAccNo")); data.put("TfiBvCde", context.getData("toCertType")); // 转入凭证类型1:表示卡 data.put("AgrKnd", context.getData("transferType")); // 表示双利账户约转 // data.put("AgrKnd","CN300007");//表示双利账户约转 data.put("TfiCusAc", context.getData("toAccNo")); // 表示双利账户约转 // data.put("DepPer", context.getData("depositTerm")); // 存期2007表示7天 data.put("RnwPer", context.getData("customizePeriod")); // 转存周期:7天 data.put( "Cam", (context.getData("tranSum") == null || context.getData("tranSum").equals("")) ? "0" : context.getData("tranSum")); data.put("PsvAmt", context.getData("saveBlc")); // 留存金额 data.put("PsvMde", context.getData("blcSaveWay")); // 留存方式 data.put("TfaAmtCnd", context.getData("sumCondition")); data.put("DteCnd", context.getData("dateCondition")); // 日期条件 data.put("CCY", context.getData("currType")); // 币种 data.put("VldDte", context.getData("validDate")); data.put("ExpDte", context.getData("endDate")); // String pinBlk = context.getData(ItmFields.PINBLK); // String tarPinBlk = context.getData(ItmFields.TARPINBLK); // if (tarPinBlk != null ) { // tarPinBlk += 3000; // } // data.put("Psw", pinBlk); context.setDataMap(data); }