Esempio n. 1
0
 public void storeSumBlcTrans(Context context) {
   if (context.getData("accUsableBalance") == null
       || context.getData("accUsableBalance").equals("")) {
     context.setData("storeSumBlc", "");
   } else {
     context.setData("storeSumBlc", context.getData("accUsableBalance"));
   }
 }
Esempio n. 2
0
  /**
   * 组主机需要的报文
   *
   * @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 <-----");
  }
Esempio n. 3
0
 @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", "查询自动还款状态成功");
 }
Esempio n. 4
0
  /**
   * * 核心成功情况处理
   *
   * @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 <---");
  }
Esempio n. 5
0
  /**
   * 双利帐户查询
   *
   * @param context
   * @author sujie
   */
  public void accountQuery(Context context) {
    try {
      // set massage data
      // setHeader(context);

      // set massage body
      setAccountMsgBody(context);

      // send to personal gateway
      List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
      multiSubmit(context, list);

      // response handler
      handleSuccessCase(context, list);
    } catch (Exception e) {
      logger.error("----->  ShuangliAction queryCreditNo  Exception :  ", e);
      context.setData(ItmFields.RESFLAG, ItmConstants.RESFLAG_ERROR);
      context.setData(ItmFields.RESCODE, ItmRespCode.COMMON_SYSERROR);
    }
  }
Esempio n. 6
0
  /**
   * 双利理财转卡
   *
   * @param context
   * @author sujie
   */
  public void slTrans(Context context) {
    try {
      // set massage head
      // setHeader(context);

      // set massage body
      setTransMsgBody(context);

      // send to personal gateway
      esbpEcupSender.sendAndReceive(context);

      // response handler
      responseHandler(context);
    } catch (Exception e) {

      logger.error("----->  ShuangliAction Trans Exception :  ", e);
      context.setData(ItmFields.RESFLAG, ItmConstants.RESFLAG_ERROR);
      context.setData(ItmFields.RESCODE, ItmRespCode.COMMON_SYSERROR);
    }
  }
Esempio n. 7
0
  /**
   * 重复发送交易
   *
   * @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);
        }
      }
    }
  }
Esempio n. 8
0
  /**
   * 双利理财签约
   *
   * @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);
    }
  }
Esempio n. 9
0
  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);
  }
Esempio n. 10
0
 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");
   }
 }
Esempio n. 11
0
 /**
  * 网银报文返回处理
  *
  * @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");
   }
 }
Esempio n. 12
0
  /**
   * 签约状态统计(查询银信、基金账户、黄金、信用卡自助还款 签约状态)
   *
   * @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");
                }
              }
            }
          }
        }
      }
    }
  }