You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

589 lines
22 KiB

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") + "\",");
else
sb.Append("\"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("ENTRY_MODE") != null)
sb.Append("\"ENTRYMODE\":\"" + tmp.GetValue("ENTRY_MODE") + "\",");
if (tmp.GetValue("AC_INDICATOR") != null)
sb.Append("\"AC_INDICATOR\":\"" + tmp.GetValue("AC_INDICATOR") + "\",");
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();
}
}
}