using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Text; namespace n5coredll { public class SaleResult { private static string EVENT_NAME = "EVENT_NAME"; private static string TXN_ID = "TXN_ID"; private static string STATUS = "STATUS"; private static string TXN_AMT = "TXN_AMT"; private static string CASHBACK_AMT = "CASHBACK_AMT"; private static string PAYMENT_TYPE = "PAYMENT_TYPE"; private static string LOCAL_CUR = "LOCAL_CUR"; private static string RESP_CODE = "RESP_CODE"; private static string RESPONSE_TEXT = "RESPONSE_TEXT"; private static string TRACE_NO = "TRACE_NO"; private static string TXN_DATE = "TXN_DATE"; private static string TXN_TIME = "TXN_TIME"; private static string MID = "MID"; private static string TID = "TID"; private static string PAN = "PAN"; private static string ENTRY_MODE = "ENTRY_MODE"; private static string AC_INDICATOR = "AC_INDICATOR"; private static string AID = "AID"; private static string TC = "TC"; private static string APP = "APP"; private static string ECR_REF_NO = "ECR_REF_NO"; private static string BATCH_NO = "BATCH_NO"; private static string BANKIN_VALUE_DATE = "BANKIN_VALUE_DATE"; private static string ACCOUNT_NO = "ACCOUNT_NO"; private static string BANK_ADDITIONAL_RESPONSE = "BANK_ADDITIONAL_RESPONSE"; private string ecrRefTxnId; private string status; private decimal txnAmt; private decimal cashbackAmt; private decimal tipAmt; private PaymentType paymentType; private string respCode; private LoyaltyType loyaltyType; private string campaignId; private string traceNo; private string txnDate; private string txnTime; private string hostRef; private string couponId; private string authCode; private string authAmt; private string discAmt; private string localCur; private string foreignCur; private string fxRate; private string foreignAmt; private string mid; private string tid; private string pan; private string expiryDate; private string loyaltyRef; private string aid; private string entryMode; private string batchNo; private string tc = ""; private string app = ""; private string acquirer = ""; private string eventName = ""; private string responseText = ""; private string acIndicator = ""; private string ecrRefNo = ""; private string bankinValueDate = ""; private string accountNo = ""; private string bankAdditionalResponse=""; private void setBankinValueDate(string pBankinValueDate) { bankinValueDate = pBankinValueDate; } public string BankinValueDate { get { return bankinValueDate; } } private void setAccountNo(string pAccountNo) { accountNo = pAccountNo; } public string AccountNo { get { return accountNo; } } private void setBankAdditionalResponse(string pBankAdditionalResponse) { bankAdditionalResponse = pBankAdditionalResponse; } public string BankAdditionalResponse { get { return bankAdditionalResponse; } } private void setECRRefNo(string pECRRefNo) { ecrRefNo = pECRRefNo; } public string ECRRefNo { get { return ecrRefNo; } } private void setACIndicator(string pACIndicator) { acIndicator = pACIndicator; } public string ACIndicator { get { return acIndicator; } } private void setEventName(string pEventName) { eventName = pEventName; } public string EventName { get { return eventName; } } private void setEcrRefTxnId(string pEcrRefTxnId) { ecrRefTxnId = pEcrRefTxnId; } public string EcrRefTxnId { get { return ecrRefTxnId; } } public string Status { get { return status; } } private void setStatus(string pStatus) { this.status = pStatus; } public decimal TxnAmt { get { return txnAmt; } } private void setTxnAmt(decimal pTxnAmt) { this.txnAmt = pTxnAmt; } public decimal CashbackAmt { get { return cashbackAmt; } } private void setCashbackAmt(decimal pCashbackAmt) { this.cashbackAmt = pCashbackAmt; } public decimal TipAmt { get { return tipAmt; } } private void setTipAmt(decimal pTipAmt) { this.tipAmt = pTipAmt; } public PaymentType PaymentType { get { return paymentType; } } private void setPaymentType(PaymentType pPaymentType) { this.paymentType = pPaymentType; } public string RespCode { get { return respCode; } } private void setRespCode(string pRespCode) { this.respCode = pRespCode; } public string ResponseText { get { return responseText; } } private void setResponseText(string pResponseText) { this.responseText = pResponseText; } public LoyaltyType LoyaltyType { get { return loyaltyType; } } private void setLoyaltyType(LoyaltyType pLoyaltyType) { this.loyaltyType = pLoyaltyType; } public string CampaignId { get { return campaignId; } } private void setCampaignId(string pCampaignId) { this.campaignId = pCampaignId; } public string TraceNo { get { return traceNo; } } private void setTraceNo(string pTraceNo) { this.traceNo = pTraceNo; } public string TxnDate { get { return txnDate; } } private void setTxnDate(string pTxnDate) { this.txnDate = pTxnDate; } public string TxnTime { get { return txnTime; } } private void setTxnTime(string pTxnTime) { this.txnTime = pTxnTime; } public string HostRef { get { return hostRef; } } private void setHostRef(string pHostRef) { this.hostRef = pHostRef; } public string CouponId { get { return couponId; } } private void setCouponId(string pCouponId) { this.couponId = pCouponId; } public string AuthCode { get { return authCode; } } private void setAuthCode(string pAuthCode) { this.authCode = pAuthCode; } public string AuthAmt { get { return authAmt; } } private void setAuthAmt(string pAuthAmt) { this.authAmt = pAuthAmt; } public string DiscAmt { get { return discAmt; } } private void setDiscAmt(string pDiscAmt) { this.discAmt = pDiscAmt; } public string LocalCur { get { return localCur; } } private void setLocalCur(string pLocalCur) { this.localCur = pLocalCur; } public string ForeignCur { get { return foreignCur; } } private void setForeignCur(string pForeignCur) { this.foreignCur = pForeignCur; } public string FxRate { get { return fxRate; } } private void setFxRate(string pFxRate) { this.fxRate = pFxRate; } public string ForeignAmt { get { return foreignAmt; } } private void setForeignAmt(string pForeignAmt) { this.foreignAmt = pForeignAmt; } public string getMid() { return mid; } private void setMid(string pMid) { this.mid = pMid; } public string getTid() { return tid; } private void setTid(string pTid) { this.tid = pTid; } public string getPan() { return pan; } private void setPan(string pPan) { this.pan = pPan; } public string getExpiryDate() { return expiryDate; } private void setExpiryDate(string pExpiryDate) { this.expiryDate = pExpiryDate; } public string getLoyaltyRef() { return loyaltyRef; } private void setLoyaltyRef(string pLoyaltyRef) { this.loyaltyRef = pLoyaltyRef; } public string getAid() { return aid; } private void setAid(string pAid) { this.aid = pAid; } public string EntryMode { get { return entryMode; } } private void setEntryMode(string pEntryMode) { this.entryMode = pEntryMode; } public string BatchNo { get { return batchNo; } } private void setBatchNo(string pBatchNo) { this.batchNo = pBatchNo; } public string Tc { get { return tc; } } private void setTc(string pTc) { this.tc = pTc; } public string App { get { return app; } } private void setApp(string pApp) { this.app = pApp; } public string Acquirer { get { return acquirer; } } private void setAcquirer(string pAcquirer) { this.acquirer = pAcquirer; } private static string curTxnId; public static string toJsonForSale(string txnId, decimal txnAmt, decimal tipAmt, PaymentApp appId, string qrcValue) { string cardSaleMsg = "{\"EVENT_NAME\":\"SALE\",\"PAYMENT_APP_ID\":\"" + ObjectUtil.getPaymentAppValue(appId) + "\",\"TXN_ID\":\"" + txnId + "\",\"TIPS\":" + tipAmt + ",\"TXN_AMT\":" + txnAmt + ",\"QRC_VALUE\":\"" + qrcValue + "\"}"; return cardSaleMsg; } public static string toJsonForSale(string txnId, decimal txnAmt, decimal tipAmt, decimal cashbackAmt, string ecrRefNo, String currency, PaymentApp appId, string qrcValue, string pan, string expDate) { string cardSaleMsg = "{\"EVENT_NAME\":\"SALE\",\"PAYMENT_APP_ID\":\"" + ObjectUtil.getPaymentAppValue(appId) + "\",\"TXN_ID\":\"" + txnId + "\",\"TIPS\":" + tipAmt + ",\"TXN_AMT\":" + txnAmt + ",\"CASHBACK_AMT\":" + cashbackAmt + ",\"ECR_REF_NO\":\"" + ecrRefNo + "\",\"CURRENCY\":\"" + currency + "\",\"PAN\":\"" + pan + "\",\"EXPIRY_DATE\":\"" + expDate + "\",\"QRC_VALUE\":\"" + qrcValue + "\"}"; return cardSaleMsg; } public static string toJsonForPreauth(string txnId, decimal txnAmt, PaymentApp appId, string pan, string expDate) { string cardSaleMsg = "{\"EVENT_NAME\":\"PREAUTH\",\"PAYMENT_APP_ID\":\"" + ObjectUtil.getPaymentAppValue(appId) + "\",\"TXN_ID\":\"" + txnId + "\",\"TXN_AMT\":" + txnAmt + ",\"PAN\":\"" + pan + "\",\"EXPIRY_DATE\":\"" + expDate + "\"}"; return cardSaleMsg; } public static string toJsonForOffline(string txnId, decimal txnAmt, PaymentApp appId, string authCode, string pan, string expDate) { string cardSaleMsg = "{\"EVENT_NAME\":\"OFFLINE\",\"PAYMENT_APP_ID\":\"" + ObjectUtil.getPaymentAppValue(appId) + "\",\"TXN_ID\":\"" + txnId + "\",\"TXN_AMT\":" + txnAmt + ",\"AUTH_CODE\":\"" + authCode + "\""+ ",\"PAN\":\"" + pan + "\",\"EXPIRY_DATE\":\"" + expDate + "\"}"; return cardSaleMsg; } public static string toJsonForAdjust(string txnId, decimal totalAmt, decimal totalForeignAmt, PaymentApp appId) { string cardSaleMsg = "{\"EVENT_NAME\":\"ADJUST\",\"PAYMENT_APP_ID\":\"" + ObjectUtil.getPaymentAppValue(appId) + "\",\"TXN_ID\":\"" + txnId + "\",\"TOTAL_TXN_AMT\":" + totalAmt + ",\"TOTAL_FOREIGN_AMT\":" + totalForeignAmt + "}"; return cardSaleMsg; } private static string getTxnId() { StringBuilder txnIdSb = new StringBuilder(); DateTime dt = DateTime.Now; txnIdSb.Append(dt.ToString("yyyyMMddHHmmssfff")); Console.WriteLine("txnIdSb = " + txnIdSb.ToString()); int randomTime = 0; if (dt.Ticks.ToString().Length > 8) { Console.WriteLine("Ticks.Length > 8 = " + dt.Ticks.ToString()); randomTime = int.Parse(dt.Ticks.ToString().Substring(0, 8)); } else { randomTime = int.Parse(dt.Ticks.ToString()); } if (randomTime > 0) { Random random = new Random(randomTime); for (int i = 0; i < 15; i++) { int thidRandom = random.Next(10); txnIdSb.Append(thidRandom); } Console.WriteLine("txnIdSb.ToString = " + txnIdSb.ToString()); return txnIdSb.ToString(); } else { Console.WriteLine("randomTime is error = " + randomTime); } return ""; } public SaleResult() { } public SaleResult(string pStatus) { this.setStatus(pStatus); } public static SaleResult toSaleResultFromJsonMsg(string jsonMsg) { if (jsonMsg == null || !jsonMsg.StartsWith("{") || !jsonMsg.EndsWith("}")) { return null; } int jsonLength = jsonMsg.Length; jsonMsg = jsonMsg.Substring(0, jsonLength - 1); jsonMsg = jsonMsg.Substring(1, jsonLength - 2); string[] column = jsonMsg.Split(','); string[] valueColumn = null; string valueColumn0 = null; string valueColumn1 = null; SaleResult saleResult = new SaleResult(); for (int i = 0; i < column.Length; i++) { valueColumn = column[i].Split(':'); valueColumn0 = valueColumn[0].Replace('"', ' ').Trim(); valueColumn1 = valueColumn[1].Replace('"', ' ').Trim(); if (SaleResult.EVENT_NAME.Equals(valueColumn0)) { saleResult.setEventName(valueColumn1); } if (SaleResult.TXN_ID.Equals(valueColumn0)) { saleResult.setEcrRefTxnId(valueColumn1); } if (SaleResult.STATUS.Equals(valueColumn0)) { saleResult.setStatus(valueColumn1); } if (SaleResult.TXN_AMT.Equals(valueColumn0)) { if (valueColumn1 == null || "".Equals(valueColumn1)) { saleResult.setTxnAmt(decimal.Parse("0.00", System.Globalization.NumberStyles.AllowDecimalPoint)); } else { saleResult.setTxnAmt(decimal.Parse(valueColumn1)); } } if (SaleResult.CASHBACK_AMT.Equals(valueColumn0)) { if (valueColumn1 == null || "".Equals(valueColumn1)) { saleResult.setCashbackAmt(decimal.Parse("0.00", System.Globalization.NumberStyles.AllowDecimalPoint)); } else { saleResult.setCashbackAmt(decimal.Parse(valueColumn1)); } } if (SaleResult.PAYMENT_TYPE.Equals(valueColumn0)) { saleResult.setPaymentType(ObjectUtil.getPaymentType(valueColumn1)); } if (SaleResult.LOCAL_CUR.Equals(valueColumn0)) { saleResult.setLocalCur(valueColumn1); } if (SaleResult.RESP_CODE.Equals(valueColumn0)) { saleResult.setRespCode(valueColumn1); } if (SaleResult.RESPONSE_TEXT.Equals(valueColumn0)) { saleResult.setResponseText(valueColumn1); } if (SaleResult.TRACE_NO.Equals(valueColumn0)) { saleResult.setTraceNo(valueColumn1); } if (SaleResult.TXN_DATE.Equals(valueColumn0)) { saleResult.setTxnDate(valueColumn1); } if (SaleResult.TXN_TIME.Equals(valueColumn0)) { saleResult.setTxnTime(valueColumn1); } if (SaleResult.MID.Equals(valueColumn0)) { saleResult.setMid(valueColumn1); } if (SaleResult.TID.Equals(valueColumn0)) { saleResult.setTid(valueColumn1); } if (SaleResult.PAN.Equals(valueColumn0)) { saleResult.setPan(valueColumn1); } if (SaleResult.ENTRY_MODE.Equals(valueColumn0)) { saleResult.setEntryMode(valueColumn1); } if (SaleResult.AC_INDICATOR.Equals(valueColumn0)) { saleResult.setACIndicator(valueColumn1); } if (SaleResult.AID.Equals(valueColumn0)) { saleResult.setAid(valueColumn1); } if (SaleResult.TC.Equals(valueColumn0)) { saleResult.setTc(valueColumn1); } if (SaleResult.APP.Equals(valueColumn0)) { saleResult.setApp(valueColumn1); } if (SaleResult.ECR_REF_NO.Equals(valueColumn0)) { saleResult.setECRRefNo(valueColumn1); } if (SaleResult.BANKIN_VALUE_DATE.Equals(valueColumn0)) { saleResult.setBankinValueDate(valueColumn1); } if (SaleResult.ACCOUNT_NO.Equals(valueColumn0)) { saleResult.setAccountNo(valueColumn1); } if (SaleResult.BANK_ADDITIONAL_RESPONSE.Equals(valueColumn0)) { saleResult.setECRRefNo(valueColumn1); } } return saleResult; } public static string rebuildSaleRespMsg(string saleResultJsonStr) { //SaleResult tmp = toSaleResultFromJsonMsg(saleResultJsonStr); JObject tmp = (JObject)JsonConvert.DeserializeObject(saleResultJsonStr); StringBuilder sb = new StringBuilder(""); sb.Append("{"); sb.Append("\"EVENT_NAME\":\"" + tmp.GetValue("EVENT_NAME") +"\","); sb.Append("\"TXN_ID\":\"" + tmp.GetValue("TXN_ID") + "\","); sb.Append("\"STATUS\":\"" + tmp.GetValue("STATUS") + "\","); sb.Append("\"TXN_AMT\":" + tmp.GetValue("TXN_AMT") + ","); if (tmp.GetValue("CASHBACK_AMT") != null) sb.Append("\"CASHBACK_AMT\":" + tmp.GetValue("CASHBACK_AMT") + ","); if (tmp.GetValue("PAYMENT_TYPE") != null) sb.Append("\"PAYMENT_TYPE\":\"" + tmp.GetValue("PAYMENT_TYPE") + "\","); if (tmp.GetValue("LOCAL_CUR") != null) sb.Append("\"CURRENCY\":\"" + tmp.GetValue("LOCAL_CUR") + "\","); sb.Append("\"RESP_CODE\":\"" + tmp.GetValue("RESP_CODE") + "\","); if (tmp.GetValue("RESPONSE_TEXT") != null) sb.Append("\"RESPONSE_TEXT\":\"" + tmp.GetValue("RESPONSE_TEXT") + "\","); if (tmp.GetValue("TRACE_NO") != null) sb.Append("\"TRACE_NO\":\"" + tmp.GetValue("TRACE_NO") + "\","); if (tmp.GetValue("TXN_DATE") != null) sb.Append("\"TXN_DATE\":\"" + tmp.GetValue("TXN_DATE") + "\","); if (tmp.GetValue("TXN_TIME") != null) sb.Append("\"TXN_TIME\":\"" + tmp.GetValue("TXN_TIME") + "\","); if (tmp.GetValue("MID") != null) sb.Append("\"MID\":\"" + tmp.GetValue("MID") + "\","); if (tmp.GetValue("TID") != null) sb.Append("\"TID\":\"" + tmp.GetValue("TID") + "\","); if (tmp.GetValue("PAN") != null) sb.Append("\"PAN\":\"" + tmp.GetValue("PAN") + "\","); if (tmp.GetValue("ENTRYMODE") != null) sb.Append("\"ENTRYMODE\":\"" + tmp.GetValue("PAN") + "\","); if (tmp.GetValue("AC_INDICATOR") != null) sb.Append("\"AC_INDICATOR\":\"" + tmp.GetValue("PAN") + "\","); if (tmp.GetValue("AID") != null) sb.Append("\"AID\":\"" + tmp.GetValue("AID") + "\","); if (tmp.GetValue("TC") != null) sb.Append("\"TC\":\"" + tmp.GetValue("TC") + "\","); if (tmp.GetValue("APP") != null) sb.Append("\"APP\":\"" + tmp.GetValue("APP") + "\","); if (tmp.GetValue("ECR_REF_NO") != null) sb.Append("\"ECR_REF_NO\":\"" + tmp.GetValue("ECR_REF_NO") + "\","); if (tmp.GetValue("BANKIN_VALUE_DATE") != null) sb.Append("\"BANKIN_VALUE_DATE\":\"" + tmp.GetValue("BANKIN_VALUE_DATE") + "\","); if (tmp.GetValue("ACCOUNT_NO") != null) sb.Append("\"ACCOUNT_NO\":\"" + tmp.GetValue("ACCOUNT_NO") + "\","); if (tmp.GetValue("BANK_ADDITIONAL_RESPONSE") != null) sb.Append("\"BANK_ADDITIONAL_RESPONSE\":\"" + tmp.GetValue("BANK_ADDITIONAL_RESPONSE") + "\""); sb.Append("}"); return sb.ToString(); } } }