/MTData.WebAPI/Controllers/Bad/TransactionRequestController.cs
C# | 7067 lines | 5030 code | 1082 blank | 955 comment | 885 complexity | f03191693f6236c5927ffc6e1bdd840f MD5 | raw file
Large files files are truncated, but you can click here to view the full file
- using System;
- using System.Configuration;
- using System.Collections.ObjectModel;
- using System.Collections.Generic;
- using System.Xml.Linq;
- using System.Globalization;
- using System.IO;
- using System.Reflection;
- using System.Text;
- using System.Linq;
- using System.Xml.Linq;
- using System.Threading;
- using System.Web.Http;
- using System.Xml;
- using System.Xml.Serialization;
- using MTD.Core.DataTransferObjects;
- using MTD.Core.Service.Interface;
- using MTData.WebAPI.Models;
- using MTData.WebAPI.Resources;
- using Ninject;
- using System.Net;
- using MTData.Utility;
- using MTData.WebAPI.schema;
- using System.Web.Configuration;
- using MTData.WebAPI.Common;
- using MTData.WebAPI.CanadaCert;
- using MTData.WebAPI.CanadaCommon;
- using MTData.WebAPI.schema;
- namespace MTData.WebAPI.Controllers
- {
- public class TransactionRequestController : BaseController
- {
- #region Load Constructor
- private static int _count = 0;
- private const string Ecommerce = "Ecommerce";
- private const string Retail = "Retail";
- private const string Credit = "Credit";
- private const string Debit = "Debit";
- private const string TokenOnly = "TokenOnly";
- private const string TAKey = "TAKey";
- private const string Void = "Void";
- private const string Timeout = "Timeout";
- private const string Completion = "Completion";
- private const string Refund = "Refund";
- private const string Authorization = "Authorization";
- private const string Visa = "Visa";
- private const string Amex = "Amex";
- private const string Diners = "Diners";
- private const string MasterCard = "MasterCard";
- private const string Discover = "Discover";
- private const string Sale = "Sale";
- private const string EMV2KEY = "EMV2KEY";
- private const string FileCRCValue = "3E30";
- private const string FileSizeValue = "15593";
- private const string ReqFBMaxSizeValue = "999";
- private const string CAPKUpdate = "CAPKUpdate";
- private const string CAPKDownload = "CAPKDownload";
- private const string BookerAppPayment = "BookerAppPayment";
- protected string IndustryType;
- protected string PaymentType;
- private string unreachableUrlResponse;
- private int retryCount;
- protected string TransactionType;
- private static ITerminalService _terminalService;
- private StringBuilder _logMessage;
- readonly ILogger _logger = new Logger();
- public TransactionRequestController([Named("TerminalService")] ITerminalService terminalService, StringBuilder logMessage)
- : base(terminalService, logMessage)
- {
- _terminalService = terminalService;
- _logMessage = logMessage;
- }
- private readonly GMFMessageVariants _gmfMsgVar = new GMFMessageVariants();
- private readonly CreditRequestDetails _creditReq = new CreditRequestDetails(); // Credit request for Ecomm/retail transaction
- private readonly PinlessDebitRequestDetails _pinlessDebit = new PinlessDebitRequestDetails(); // Debit request for Ecomm transaction
- private readonly DebitRequestDetails _debitReq = new DebitRequestDetails(); // Debit request for Retail transaction
- private readonly AdminRequestDetails _adminReq = new AdminRequestDetails();
- private readonly VoidTOReversalRequestDetails _revDetails = new VoidTOReversalRequestDetails(); // Void TO Reversal Request
- private readonly TARequestDetails _taRequest = new TARequestDetails();
- private readonly MessageProcessor _objMessageProcessor = new MessageProcessor();
- public static readonly string StrAppPath = Assembly.GetCallingAssembly().Location;
- #endregion
- /// <summary>
- /// Purpose : Finding credit and debit card request of Retail and ecommerce domain for First Data. Transaction Implemented Authorization, Completion, Sale, Refund, Void.
- /// Function Name : CreateTransactionRequest
- /// Created By : Salil Gupta
- /// Created On : 03/10/2015
- /// Modificatios Made : Madhuri Tanwar
- /// Modidified On : 07/27/2015
- /// </summary>
- /// <param name="transactionRequest"></param>
- /// <returns></returns>
- public IHttpActionResult CreateTransactionRequest(TransactionRequest transactionRequest)
- {
- try
- {
- _logMessage.Append("Controller Name:-" + GetType().Name + "; Method Name :- " +
- MethodBase.GetCurrentMethod().Name + ";");
- _logMessage.Append(String.Format(CultureInfo.InvariantCulture,
- " Date:-" + DateTime.Now.ToShortDateString() + "; Time:- " + DateTime.Now.ToShortTimeString()));
- string industryType = transactionRequest.IndustryType;
- string paymentType = transactionRequest.PaymentType.ToString();
- string transactionType = (transactionRequest.TransactionType == Void || transactionRequest.TransactionType == Timeout)
- ? Void
- : transactionRequest.TransType.ToString();
- switch (industryType)
- {
- #region Ecommerce
- case Ecommerce:
- if (paymentType == Credit)
- {
- switch (transactionType)
- {
- case Void:
- VoidTOReversalRequestDetails creditRequestVoid = ReversalRequest(transactionRequest);
- return Ok(creditRequestVoid);
- default:
- CreditRequestDetails creditRequest = CreateEcommerceRequest(transactionRequest);
- return Ok(creditRequest);
- }
- }
- if (paymentType == Debit)
- {
- PinlessDebitRequestDetails debitSale = CreatePinlessDebitRequest(transactionRequest);
- return Ok(debitSale);
- }
- break;
- #endregion
- #region Retail
- case Retail:
- var entryMode = (PaymentEntryMode)Enum.Parse(typeof(PaymentEntryMode), transactionRequest.EntryMode, true);
- var txnType = (PaymentTransactionType)Enum.Parse(typeof(PaymentTransactionType), transactionType, true);
- switch (entryMode)
- {
- #region Swiped
- case PaymentEntryMode.Swiped:
- if (paymentType == PaymentCardType.Credit.ToString())
- {
- switch (txnType)
- {
- case PaymentTransactionType.Void:
- VoidTOReversalRequestDetails creditRequestVerification =
- ReversalRequestMsr(transactionRequest);
- return Ok(creditRequestVerification);
- default:
- CreditRequestDetails creditRequest = CreateRetailRequest(transactionRequest);
- return Ok(creditRequest);
- }
- }
- else if (paymentType == PaymentCardType.Debit.ToString())
- {
- DebitRequestDetails debitCard = CreatePinDebitRequest(transactionRequest);
- return Ok(debitCard);
- }
- break;
- #endregion
- #region FSwiped
- case PaymentEntryMode.FSwiped:
- if (paymentType == PaymentCardType.Credit.ToString())
- {
- switch (txnType)
- {
- case PaymentTransactionType.Void:
- VoidTOReversalRequestDetails creditRequestVerification = ReversalRequestEmv(transactionRequest);
- return Ok(creditRequestVerification);
- default: //Full EMV Transaction
- CreditRequestDetails creditRequest = CreateFallbackMsrRequest(transactionRequest);
- return Ok(creditRequest);
- }
- }
- else if (paymentType == PaymentCardType.Debit.ToString())
- {
- DebitRequestDetails debitCard = CreateFallbackMsrDebitRequest(transactionRequest);
- return Ok(debitCard);
- }
- break;
- #endregion
- #region EmvContact
- case PaymentEntryMode.EmvContact:
- if (paymentType == PaymentCardType.Credit.ToString())
- {
- switch (txnType)
- {
- case PaymentTransactionType.Void:
- VoidTOReversalRequestDetails creditRequestVerification = ReversalRequestEmv(transactionRequest);
- return Ok(creditRequestVerification);
- default: //Full EMV Transaction
- CreditRequestDetails creditRequest = CreateEmvContactRequest(transactionRequest);
- return Ok(creditRequest);
- }
- }
- else if (paymentType == PaymentCardType.Debit.ToString())
- {
- DebitRequestDetails debitCard = CreateEmvContactPinDebitRequest(transactionRequest);
- return Ok(debitCard);
- }
- break;
- #endregion
- #region EmvContactless
- case PaymentEntryMode.EmvContactless:
- if (paymentType == PaymentCardType.Credit.ToString())
- {
- switch (txnType)
- {
- case PaymentTransactionType.Void:
- VoidTOReversalRequestDetails creditRequestVerification = ReversalRequestEmvContactless(transactionRequest);
- return Ok(creditRequestVerification);
- default: //Full EMV Transaction
- CreditRequestDetails creditRequest = CreateEmvContactlessRequest(transactionRequest);
- return Ok(creditRequest);
- }
- }
- else if (paymentType == PaymentCardType.Debit.ToString())
- {
- switch (txnType)
- {
- case PaymentTransactionType.Void:
- VoidTOReversalRequestDetails DebitRequestVerification = ReversalRequestDebitEmvContactless(transactionRequest);
- return Ok(DebitRequestVerification);
- default: //Full EMV Transaction
- DebitRequestDetails debitCard = CreateEmvContactlessPinDebitRequest(transactionRequest);
- return Ok(debitCard);
- }
- }
- break;
- #endregion
- #region MSRContactless
- case PaymentEntryMode.MSRContactless:
- if (paymentType == PaymentCardType.Credit.ToString())
- {
- switch (txnType)
- {
- case PaymentTransactionType.Void:
- VoidTOReversalRequestDetails creditRequestVerification = ReversalRequestMsrContactless(transactionRequest);
- return Ok(creditRequestVerification);
- default:
- CreditRequestDetails creditRequest = CreateMSRContactlessRequest(transactionRequest);
- return Ok(creditRequest);
- }
- }
- else if (paymentType == PaymentCardType.Debit.ToString())
- {
- switch (txnType)
- {
- case PaymentTransactionType.Void:
- VoidTOReversalRequestDetails DebitRequestVerification = ReversalRequestDebitMsrContactless(transactionRequest);
- return Ok(DebitRequestVerification);
- default: //Full EMV Transaction
- DebitRequestDetails debitCard = CreateCOntactlessMSRPinDebitRequest(transactionRequest);
- return Ok(debitCard);
- }
- }
- break;
- #endregion
- }
- break;
- #endregion
- #region Token
- case TokenOnly:
- TARequestDetails creditTaRequest = TaRequest(transactionRequest);
- return Ok(creditTaRequest);
- break;
- case TAKey:
- TARequestDetails creditTaKeyRequest = TaKeyRequest(transactionRequest);
- return Ok(creditTaKeyRequest);
- break;
- #endregion
- #region CAPK
- case CAPKUpdate:
- AdminRequestDetails updateAdminRequestDetails = CreateEmvContactUpdateCapkRequest(transactionRequest);
- return Ok(updateAdminRequestDetails);
- break;
- case CAPKDownload:
- AdminRequestDetails downloadAdminRequestDetails = CreateEmvContactDownloadCapkRequest(transactionRequest);
- return Ok(downloadAdminRequestDetails);
- break;
- #endregion
- #region bookerApp
- case BookerAppPayment:
- CreditRequestDetails bookerAppCreditRequest = BookerAppRequest(transactionRequest);
- return Ok(bookerAppCreditRequest);
- break;
- #endregion
- }
- }
- catch (Exception ex)
- {
- _logger.LogInfoFatel(_logMessage.ToString(), ex);
- }
- return Ok();
- }
- /// <summary>
- /// Purpose : Creating credit card request
- /// Function Name : CreateRequest
- /// Created By : Salil Gupta
- /// Created On : 03/16/2015
- /// Modificatios Made : ****************************
- /// Modidified On : 04/017/2015 "MM/DD/YYYY"
- /// </summary>
- /// <param name="transactionRequest"></param>
- /// <returns></returns>
- private CreditRequestDetails CreateEcommerceRequest(TransactionRequest transactionRequest)
- {
- try
- {
- if (!transactionRequest.IsNull())
- {
- _logMessage.Append("Controller Name:-" + GetType().Name + "; Method Name :- " +
- MethodBase.GetCurrentMethod().Name + ";");
- _logMessage.Append(String.Format(CultureInfo.InvariantCulture,
- " Date:-" + DateTime.Now.ToShortDateString() + "; Time:- " + DateTime.Now.ToShortTimeString()));
- MTDTransactionDto mtdTransaction = new MTDTransactionDto();
- if (!string.IsNullOrEmpty(transactionRequest.RapidConnectAuthId))
- {
- mtdTransaction = _terminalService.Completion(
- transactionRequest.RapidConnectAuthId,
- transactionRequest.SerialNumber, transactionRequest.MtdMerchantId);
- if (mtdTransaction.IsNull())
- return null;
- }
- #region Common Group
- CommonGrp cmnGrp = new CommonGrp();
- /* The payment type of the transaction. */
- PymtTypeType typePayment = transactionRequest.PaymentType;
- cmnGrp.PymtType = typePayment;
- cmnGrp.PymtTypeSpecified = true;
- /* merchant category code. */
- cmnGrp.MerchCatCode = transactionRequest.MCCode;
- /* The type of transaction being performed. */
- cmnGrp.TxnType = transactionRequest.TransType;
- cmnGrp.TxnTypeSpecified = true;
- /* The local date and time in which the transaction was performed. */
- cmnGrp.LocalDateTime = transactionRequest.LocalDateTime;//DateTime.Now.ToString("yyyyMMddHHmmss");
- /* The transmission date and time of the transaction (in GMT/UCT). */
- cmnGrp.TrnmsnDateTime = transactionRequest.TrnmsnDateTime;//DateTime.UtcNow.ToString("yyyyMMddHHmmss");
- /* A number assigned by the merchant to uniquely reference the transaction.
- * This number must be unique within a day per Merchant ID per Terminal ID. */
- cmnGrp.STAN = GetSystemTraceNumber(transactionRequest.MtdMerchantId, transactionRequest.TerminalId);
- if (string.Equals(cmnGrp.TxnType.ToString(), Completion, StringComparison.OrdinalIgnoreCase))
- {
- cmnGrp.RefNum = mtdTransaction.TransRefNo;
- cmnGrp.OrderNum = mtdTransaction.TransOrderNo;
- }
- else
- {
- cmnGrp.RefNum = GetReferenceNumber(transactionRequest.MtdMerchantId, transactionRequest.TerminalId);
- cmnGrp.OrderNum = cmnGrp.RefNum;
- }
- /* An ID assigned by First Data, for the Third Party Processor or
- * Software Vendor that generated the transaction. */
- cmnGrp.TPPID = transactionRequest.TppId;
- /* A unique ID assigned to a terminal. */
- cmnGrp.TermID = transactionRequest.TerminalId;
- /* A unique ID assigned by First Data, to identify the Merchant. */
- cmnGrp.MerchID = transactionRequest.FdMerchantId;
- cmnGrp.GroupID = transactionRequest.GroupId;
- //Group ID value will be assigned by First Data.
- //get terminal id from transaction request
- cmnGrp.POSEntryMode = PaymentAPIResources.EcomPosEntryMode;
- cmnGrp.POSCondCode = POSCondCodeType.Item59;
- cmnGrp.POSCondCodeSpecified = true;
- cmnGrp.TermCatCode = TermCatCodeType.Item00;
- cmnGrp.TermCatCodeSpecified = true;
- cmnGrp.TermEntryCapablt = TermEntryCapabltType.Item10;
- cmnGrp.TermEntryCapabltSpecified = true;
- cmnGrp.TermLocInd = TermLocIndType.Item1;
- cmnGrp.TermLocIndSpecified = true;
- cmnGrp.CardCaptCap = CardCaptCapType.Item0;
- cmnGrp.CardCaptCapSpecified = true;
- EcommGrp ecomgrp = new EcommGrp();
- ecomgrp.EcommTxnInd = EcommTxnIndType.Item03;
- ecomgrp.EcommTxnIndSpecified = true;
- if (!string.Equals(cmnGrp.TxnType.ToString(), Authorization, StringComparison.CurrentCultureIgnoreCase))
- ecomgrp.EcommURL = PaymentAPIResources.EcomUrl;
- _creditReq.EcommGrp = ecomgrp;
- /* The amount of the transaction. This may be an authorization amount,
- * adjustment amount or a reversal based on the type of transaction.
- * It is inclusive of all additional amounts.
- * It is submitted in the currency represented by the Transaction Currency field.
- * The field is overwritten in the response for a partial authorization. */
- double num = Convert.ToDouble(transactionRequest.TransactionAmount);
- string amt = num.ToString("0.00").Replace(".", string.Empty);
- cmnGrp.TxnAmt = Convert.ToString(amt);
- cmnGrp.TxnAmt = cmnGrp.TxnAmt.PadLeft(12, '0');
- cmnGrp.TxnCrncy = PaymentAPIResources.Cur_USA;
- /* An indicator that describes the location of the terminal. */
- /* Indicates Group ID. */
- _creditReq.CommonGrp = cmnGrp;
- #endregion
- CardGrp cardGrp = new CardGrp();
- #region Transarmor group
- if (string.Equals(cmnGrp.TxnType.ToString(), Authorization, StringComparison.CurrentCultureIgnoreCase) || string.Equals(cmnGrp.TxnType.ToString(), Sale, StringComparison.CurrentCultureIgnoreCase))
- {
- cardGrp.AcctNum = transactionRequest.CardNumber;
- cardGrp.CardExpiryDate = transactionRequest.ExpiryDate;
- cardGrp.CardType = transactionRequest.CardType;
- cardGrp.CardTypeSpecified = true;
- cardGrp.CCVInd = CCVIndType.Prvded;
- cardGrp.CCVIndSpecified = true;
- cardGrp.CCVData = transactionRequest.CardCvv;
- _creditReq.CardGrp = cardGrp;
- TAGrp taGrp = new TAGrp();
- taGrp.SctyLvl = SctyLvlType.Tknizatn;
- taGrp.SctyLvlSpecified = true;
- taGrp.TknType = transactionRequest.TokenType;
- _creditReq.TAGrp = taGrp;
- }
- if (string.Equals(cmnGrp.TxnType.ToString(), Completion, StringComparison.CurrentCultureIgnoreCase))
- {
- if (mtdTransaction != null)
- {
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.LoadXml(mtdTransaction.ResponseXml);
- string xmlString = CommonFunctions.GetXmlAsString(xmlDoc);
- var response = CommonFunctions.GetMCResponse(xmlString);
- xmlDoc.LoadXml(response);
- var aVSResultCode = xmlDoc.SelectSingleNode("CreditResponse/CardGrp/AVSResultCode");
- var cCVResultCode = xmlDoc.SelectSingleNode("CreditResponse/CardGrp/CCVResultCode");
- cardGrp.CardType = transactionRequest.CardType;
- cardGrp.CardTypeSpecified = true;
- if (aVSResultCode != null)
- {
- cardGrp.AVSResultCode = (AVSResultCodeType)Enum.Parse(typeof(AVSResultCodeType), aVSResultCode.InnerText);
- cardGrp.AVSResultCodeSpecified = true;
- }
- if (cCVResultCode != null)
- {
- cardGrp.CCVResultCode = (CCVResultCodeType)Enum.Parse(typeof(CCVResultCodeType), cCVResultCode.InnerText);
- cardGrp.CCVResultCodeSpecified = true;
- }
- }
- _creditReq.CardGrp = cardGrp;
- TAGrp taGrp = new TAGrp();
- taGrp.SctyLvl = SctyLvlType.Tknizatn;
- taGrp.SctyLvlSpecified = true;
- taGrp.Tkn = mtdTransaction.CardToken.Decrypt();
- taGrp.TknType = transactionRequest.TokenType;
- _creditReq.TAGrp = taGrp;
- }
- if (string.Equals(cmnGrp.TxnType.ToString(), Refund, StringComparison.CurrentCultureIgnoreCase))
- {
- cardGrp.CardType = transactionRequest.CardType;
- cardGrp.CardTypeSpecified = true;
- _creditReq.CardGrp = cardGrp;
- TAGrp taGrp = new TAGrp();
- taGrp.SctyLvl = SctyLvlType.Tknizatn;
- taGrp.SctyLvlSpecified = true;
- taGrp.Tkn = mtdTransaction.CardToken.Decrypt();
- taGrp.TknType = transactionRequest.TokenType;
- _creditReq.TAGrp = taGrp;
- }
- #endregion
- if (!string.Equals(cmnGrp.TxnType.ToString(), Completion, StringComparison.OrdinalIgnoreCase) && !string.Equals(cmnGrp.TxnType.ToString(), Refund, StringComparison.OrdinalIgnoreCase))
- {
- #region Additional Amount Group
- AddtlAmtGrp addAmtGrp = new AddtlAmtGrp();
- addAmtGrp.PartAuthrztnApprvlCapablt = PartAuthrztnApprvlCapabltType.Item1;
- addAmtGrp.PartAuthrztnApprvlCapabltSpecified = true;
- AddtlAmtGrp[] addAmtGrpArr = new AddtlAmtGrp[1];
- addAmtGrpArr[0] = addAmtGrp;
- _creditReq.AddtlAmtGrp = addAmtGrpArr;
- #endregion
- }
- #region Visa Group
- if (string.Equals(cardGrp.CardType.ToString(), Visa, StringComparison.OrdinalIgnoreCase) && !string.Equals(cmnGrp.TxnType.ToString(), Refund, StringComparison.OrdinalIgnoreCase))
- {
- VisaGrp visaGrp = new VisaGrp();
- visaGrp.VisaBID = PaymentAPIResources.VisaBID;
- visaGrp.VisaAUAR = PaymentAPIResources.VisaAUAR;
- if (!string.Equals(cmnGrp.TxnType.ToString(), Completion, StringComparison.OrdinalIgnoreCase))
- {
- visaGrp.ACI = ACIType.Y;
- visaGrp.ACISpecified = true;
- visaGrp.TaxAmtCapablt = TaxAmtCapabltType.Item1;
- visaGrp.TaxAmtCapabltSpecified = true;
- }
- else
- {
- visaGrp.ACI = ACIType.T;
- visaGrp.ACISpecified = true;
- }
- _creditReq.Item = visaGrp;
- }
- if (((string.Equals(cardGrp.CardType.ToString(), MasterCard, StringComparison.OrdinalIgnoreCase)) && (string.Equals(cmnGrp.TxnType.ToString(), "completion", StringComparison.OrdinalIgnoreCase))))
- {
- MCGrp mcGrp = new MCGrp();
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.LoadXml(mtdTransaction.ResponseXml);
- string xmlString = CommonFunctions.GetXmlAsString(xmlDoc);
- var response = CommonFunctions.GetMCResponse(xmlString);
- xmlDoc.LoadXml(response);
- var banknetData = xmlDoc.SelectSingleNode("CreditResponse/MCGrp/BanknetData");
- if (banknetData != null) { mcGrp.BanknetData = banknetData.InnerText; }
- _creditReq.Item = mcGrp;
- }
- #endregion
- #region AmexGrp Group
- if (string.Equals(cardGrp.CardType.ToString(), Amex, StringComparison.OrdinalIgnoreCase) && string.Equals(cmnGrp.TxnType.ToString(), Completion, StringComparison.OrdinalIgnoreCase))
- {
- AmexGrp amexgrp = new AmexGrp();
- if (mtdTransaction != null)
- {
- amexgrp.AmExTranID = mtdTransaction.GatewayTxnId;
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.LoadXml(mtdTransaction.ResponseXml);
- string xmlString = CommonFunctions.GetXmlAsString(xmlDoc);
- var response = CommonFunctions.GetMCResponse(xmlString);
- xmlDoc.LoadXml(response);
- var amExPOSData = xmlDoc.SelectSingleNode("CreditResponse/AmexGrp/AmExPOSData");
- if (amExPOSData != null)
- { amexgrp.AmExPOSData = amExPOSData.InnerText; }
- }
- _creditReq.Item = amexgrp;
- }
- #endregion
- #region Discover Group
- if ((string.Equals(cardGrp.CardType.ToString(), Diners, StringComparison.OrdinalIgnoreCase) || string.Equals(cardGrp.CardType.ToString(), Discover, StringComparison.OrdinalIgnoreCase) || string.Equals(cardGrp.CardType.ToString(), "JCB", StringComparison.OrdinalIgnoreCase)) && string.Equals(cmnGrp.TxnType.ToString(), "completion", StringComparison.OrdinalIgnoreCase))
- {
- DSGrp dsGrp = new DSGrp();
- if (mtdTransaction != null)
- {
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.LoadXml(mtdTransaction.ResponseXml);
- string xmlString = CommonFunctions.GetXmlAsString(xmlDoc);
- var response = CommonFunctions.GetMCResponse(xmlString);
- xmlDoc.LoadXml(response);
- var discProcCode = xmlDoc.SelectSingleNode("CreditResponse/DSGrp/DiscProcCode");
- if (discProcCode != null)
- {
- dsGrp.DiscProcCode = discProcCode.InnerText;
- }
- var discPOSEntry = xmlDoc.SelectSingleNode("CreditResponse/DSGrp/DiscPOSEntry");
- if (discPOSEntry != null)
- {
- dsGrp.DiscPOSEntry = discPOSEntry.InnerText;
- }
- var discRespCode = xmlDoc.SelectSingleNode("CreditResponse/DSGrp/DiscRespCode");
- if (discRespCode != null)
- {
- dsGrp.DiscRespCode = discRespCode.InnerText;
- }
- var discPOSData = xmlDoc.SelectSingleNode("CreditResponse/DSGrp/DiscPOSData");
- if (discPOSData != null)
- {
- dsGrp.DiscPOSData = discPOSData.InnerText;
- }
- var discTransQualifier = xmlDoc.SelectSingleNode("CreditResponse/DSGrp/DiscTransQualifier");
- if (discTransQualifier != null)
- {
- dsGrp.DiscTransQualifier = discTransQualifier.InnerText;
- }
- var discNRID = xmlDoc.SelectSingleNode("CreditResponse/DSGrp/DiscNRID");
- if (discNRID != null)
- {
- dsGrp.DiscNRID = discNRID.InnerText;
- }
- dsGrp.DiscNRID = mtdTransaction.GatewayTxnId;
- }
- _creditReq.Item = dsGrp;
- }
- #endregion
- #region Customer info Group
- if (!string.IsNullOrEmpty(transactionRequest.StreetAddress) || !string.IsNullOrEmpty(transactionRequest.ZipCode))
- {
- if (!string.Equals(cmnGrp.TxnType.ToString(), Refund, StringComparison.OrdinalIgnoreCase) && !string.Equals(cmnGrp.TxnType.ToString(), Completion, StringComparison.OrdinalIgnoreCase))
- {
- CustInfoGrp custinfo = new CustInfoGrp();
- if (!string.IsNullOrEmpty(transactionRequest.StreetAddress))
- {
- custinfo.AVSBillingAddr = transactionRequest.StreetAddress;
- }
- if (!string.IsNullOrEmpty(transactionRequest.ZipCode))
- {
- custinfo.AVSBillingPostalCode = transactionRequest.ZipCode;
- }
- _creditReq.CustInfoGrp = custinfo;
- }
- }
- #endregion
- #region addAm Group
- if (string.Equals(cmnGrp.TxnType.ToString(), Completion, StringComparison.OrdinalIgnoreCase))
- {
- AddtlAmtGrp addAmtGrp = new AddtlAmtGrp();
- if (mtdTransaction != null)
- {
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.LoadXml(mtdTransaction.ResponseXml);
- string xmlString = CommonFunctions.GetXmlAsString(xmlDoc);
- var response = CommonFunctions.GetMCResponse(xmlString);
- xmlDoc.LoadXml(response);
- var originalamt = xmlDoc.SelectSingleNode("CreditResponse/CommonGrp/TxnAmt");
- if (originalamt != null)
- {
- var amountP = originalamt.InnerText;
- addAmtGrp.AddAmt = amountP.PadLeft(12, '0');
- }
- addAmtGrp.AddAmtCrncy = PaymentAPIResources.Cur_USA;
- addAmtGrp.AddAmtType = AddAmtTypeType.FirstAuthAmt;
- addAmtGrp.AddAmtTypeSpecified = true;
- AddtlAmtGrp addAmtGrp1 = new AddtlAmtGrp();
- var originalamt1 = xmlDoc.SelectSingleNode("CreditResponse/CommonGrp/TxnAmt");
- if (originalamt1 != null)
- {
- var amtP = originalamt1.InnerText;
- addAmtGrp1.AddAmt = amtP.PadLeft(12, '0');
- }
- addAmtGrp1.AddAmtCrncy = PaymentAPIResources.Cur_USA;
- addAmtGrp1.AddAmtType = AddAmtTypeType.TotalAuthAmt;
- addAmtGrp1.AddAmtTypeSpecified = true;
- AddtlAmtGrp[] addAmtGrpArr = new AddtlAmtGrp[2];
- addAmtGrpArr[0] = addAmtGrp;
- addAmtGrpArr[1] = addAmtGrp1;
- _creditReq.AddtlAmtGrp = addAmtGrpArr;
- }
- OrigAuthGrp orgAuthgrp = new OrigAuthGrp();
- if (mtdTransaction != null)
- {
- orgAuthgrp.OrigAuthID = mtdTransaction.AuthId;
- orgAuthgrp.OrigLocalDateTime = mtdTransaction.LocalDateTime;
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.LoadXml(mtdTransaction.RequestXml);
- var trnmsnDateTime = xmlDoc.SelectSingleNode("TransactionRequest/TrnmsnDateTime");
- if (trnmsnDateTime != null)
- {
- orgAuthgrp.OrigTranDateTime = trnmsnDateTime.InnerText;
- }
- orgAuthgrp.OrigSTAN = Convert.ToString(mtdTransaction.Stan);
- orgAuthgrp.OrigRespCode = Convert.ToString(mtdTransaction.ResponseCode);
- }
- _creditReq.OrigAuthGrp = orgAuthgrp;
- }
- #endregion
- _gmfMsgVar.Item = _creditReq;
- transactionRequest.Stan = cmnGrp.STAN;
- transactionRequest.TransRefNo = cmnGrp.RefNum;
- transactionRequest.TransOrderNo = cmnGrp.OrderNum;
- return _creditReq;
- }
- }
- catch (Exception ex)
- {
- _logger.LogInfoFatel(_logMessage.ToString(), ex);
- }
- return null;
- }
- /// <summary>
- /// Purpose : Creating credit card request
- /// Function Name : CreateRequest
- /// Created By : Salil Gupta
- /// Created On : 03/16/2015
- /// Modificatios Made : Madhuri Tanwar
- /// Modidified On : 06/012/2015 "MM/DD/YYYY"
- /// </summary>
- /// <param name="transactionRequest"></param>
- /// <returns></returns>
- private CreditRequestDetails CreateRetailRequest(TransactionRequest transactionRequest)
- {
- try
- {
- if (!transactionRequest.IsNull())
- {
- _logMessage.Append("Controller Name:-" + GetType().Name + "; Method Name :- " +
- MethodBase.GetCurrentMethod().Name + ";");
- _logMessage.Append(String.Format(CultureInfo.InvariantCulture,
- " Date:-" + DateTime.Now.ToShortDateString() + "; Time:- " + DateTime.Now.ToShortTimeString()));
- MTDTransactionDto mtdTransaction = new MTDTransactionDto();
- if (!string.IsNullOrEmpty(transactionRequest.RapidConnectAuthId))
- {
- mtdTransaction = _terminalService.Completion(
- transactionRequest.RapidConnectAuthId,
- transactionRequest.SerialNumber, transactionRequest.MtdMerchantId);
- if (mtdTransaction.IsNull())
- return null;
- }
- #region Common Group
- CommonGrp cmnGrp = new CommonGrp();
- /* The payment type of the transaction. */
- PymtTypeType typePayment = transactionRequest.PaymentType;
- cmnGrp.PymtType = typePayment;
- cmnGrp.PymtTypeSpecified = true;
- /* merchant category code. */
- cmnGrp.MerchCatCode = transactionRequest.MCCode;
- /* The type of transaction being performed. */
- cmnGrp.TxnType = transactionRequest.TransType;
- cmnGrp.TxnTypeSpecified = true;
- /* The local date and time in which the transaction was performed. */
- cmnGrp.LocalDateTime = transactionRequest.LocalDateTime;//DateTime.Now.ToString("yyyyMMddHHmmss");
- /* The transmission date and time of the transaction (in GMT/UCT). */
- cmnGrp.TrnmsnDateTime = transactionRequest.TrnmsnDateTime;//DateTime.UtcNow.ToString("yyyyMMddHHmmss");
- /* A number assigned by the merchant to uniquely reference the transaction.
- * This number must be unique within a day per Merchant ID per Terminal ID. */
- cmnGrp.STAN = GetSystemTraceNumber(transactionRequest.MtdMerchantId, transactionRequest.TerminalId);
- /* A number assigned by the merchant to uniquely reference a set of transactions. */
- //cmnGrp.RefNum = GetReferenceNumber(transactionRequest.MerchantID, transactionRequest.TerminalID);//"480061115979";
- if (string.Equals(cmnGrp.TxnType.ToString(), Completion, StringComparison.OrdinalIgnoreCase))
- {
- cmnGrp.RefNum = mtdTransaction.TransRefNo;
- cmnGrp.OrderNum = mtdTransaction.TransOrderNo;
- }
- else
- {
- cmnGrp.RefNum = GetReferenceNumber(transactionRequest.MtdMerchantId, transactionRequest.TerminalId);
- cmnGrp.OrderNum = cmnGrp.RefNum;
- }
- /* An ID assigned by First Data, for the Third Party Processor or
- * Software Vendor that generated the transaction. */
- cmnGrp.TPPID = transactionRequest.TppId;
- /* A unique ID assigned to a terminal. */
- cmnGrp.TermID = transactionRequest.TerminalId;
- //get terminal id from transaction request
- /* A unique ID assigned by First Data, to identify the Merchant. */
- cmnGrp.MerchID = transactionRequest.FdMerchantId;
- cmnGrp.GroupID = transactionRequest.GroupId;
- //Group ID value will be assigned by First Data.
- //get terminal id from transaction request
- cmnGrp.POSEntryMode = PaymentAPIResources.RetailPosEntryMode;
- cmnGrp.POSCondCode = POSCondCodeType.Item00;
- cmnGrp.POSCondCodeSpecified = true;
- cmnGrp.TermCatCode = TermCatCodeType.Item01;
- cmnGrp.TermCatCodeSpecified = true;
- cmnGrp.TermEntryCapablt = TermEntryCapabltType.Item04;
- cmnGrp.TermEntryCapabltSpecified = true;
- cmnGrp.TermLocInd = TermLocIndType.Item0;
- cmnGrp.TermLocIndSpecified = true;
- cmnGrp.CardCaptCap = CardCaptCapType.Item1;
- cmnGrp.CardCaptCapSpecified = true;
- /* The amount of the transaction. This may be an authorization amount,
- * adjustment amount or a reversal amount based on the type of transaction.
- * It is inclusive of all additional amounts.
- * It is submitted in the currency represented by the Transaction Currency field.
- * The field is overwritten in the response for a partial authorization. */
- double num = Convert.ToDouble(transactionRequest.TransactionAmount);
- string amt = num.ToString("0.00").Replace(".", string.Empty);
- cmnGrp.TxnAmt = Convert.ToString(amt);
- cmnGrp.TxnAmt = cmnGrp.TxnAmt.PadLeft(12, '0');
- /* The numeric currency of the Transaction Amount. */
- cmnGrp.TxnCrncy = PaymentAPIResources.Cur_USA;
- _creditReq.CommonGrp = cmnGrp;
- #endregion
- #region Transarmor group
- CardGrp cardGrp = new CardGrp();
- if (string.Equals(cmnGrp.TxnType.ToString(), Authorization, StringComparison.CurrentCultureIgnoreCase) || string.Equals(cmnGrp.TxnType.ToString(), Sale, StringComparison.CurrentCultureIgnoreCase))
- {
- cardGrp.CardType = transactionRequest.CardType;
- cardGrp.CardTypeSpecified = true;
- _creditReq.CardGrp = cardGrp;
- TAGrp taGrp = new TAGrp();
- taGrp.SctyLvl = SctyLvlType.EncrptTknizatn;
- taGrp.SctyLvlSpecified = true;
- taGrp.EncrptType = EncrptTypeType.RSA;
- taGrp.EncrptTypeSpecified = true;
- taGrp.EncrptTrgt = EncrptTrgtType.Track2;
- taGrp.EncrptTrgtSpecified = true;
- taGrp.KeyID = transactionRequest.KeyId;
- taGrp.EncrptBlock = transactionRequest.Track3Data;
- taGrp.TknType = transactionRequest.TokenType;
- _creditReq.TAGrp = taGrp;
- }
- if (string.Equals(cmnGrp.TxnType.ToString(), Completion, StringComparison.CurrentCultureIgnoreCase) || string.Equals(cmnGrp.TxnType.ToString(), Refund, StringComparison.CurrentCultureIgnoreCase))
- {
- if (mtdTransaction != null) cardGrp.CardType = (CardTypeType)Enum.Parse(typeof(CardTypeType), mtdTransaction.CardType);
- transactionRequest.CardType = cardGrp.CardType;
- cardGrp.CardTypeSpecified = true;
- _creditReq.CardGrp = cardGrp;
- TAGrp taGrp = new TAGrp();
- taGrp.SctyLvl = SctyLvlType.EncrptTknizatn;
- taGrp.SctyLvlSpecified = true;
- taGrp.Tkn = mtdTransaction.CardToken.Decrypt();
- taGrp.TknType = transactionRequest.TokenType;
- _creditReq.TAGrp = taGrp;
- }
- #endregion
- if (!string.Equals(cmnGrp.TxnType.ToString(), Completion, StringComparison.OrdinalIgnoreCase) && !string.Equals(cmnGrp.TxnType.ToString(), Refund, StringComparison.OrdinalIgnoreCase))
- {
- #region Additional Amount Group
- AddtlAmtGrp addAmtGrp = new AddtlAmtGrp();
- addAmtGrp.PartAuthrztnApprvlCapablt = PartAuthrztnApprvlCapabltType.Item1;
- addAmtGrp.PartAuthrztnApprvlCapabltSpecified = true;
- AddtlAmtGrp[] addAmtGrpArr = new AddtlAmtGrp[1];
- addAmtGrpArr[0] = addAmtGrp;
- _creditReq.AddtlAmtGrp = addAmtGrpArr;
- #endregion
- }
- #region Visa Group
- if (string.Equals(cardGrp.CardType.ToString(), Visa, StringComparison.OrdinalIgnoreCase) && !string.Equals(cmnGrp.TxnType.ToString(), Refund, StringComparison.OrdinalIgnoreCase))
- {
- VisaGrp visaGrp = new VisaGrp();
- visaGrp.VisaBID = PaymentAPIResources.VisaBID;
- visaGrp.VisaAUAR = PaymentAPIResources.VisaAUAR;
- if (!string.Equals(cmnGrp.TxnType.ToString(), Completion, StringComparison.OrdinalIgnoreCase))
- {
- visaGrp.ACI = ACIType.Y;
- visaGrp.ACISpecified = true;
- visaGrp.TaxAmtCapablt = TaxAmtCapabltType.Item1;
- visaGrp.TaxAmtCapabltSpecified = true;
- }
- else
- if (mtdTransaction != null)
- {
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.LoadXml(mtdTransaction.ResponseXml);
- string xmlString = CommonFunctions.GetXmlAsString(xmlDoc);
- var response = CommonFunctions.GetMCResponse(xmlString);
- xmlDoc.LoadXml(response);
- var aCI = xmlDoc.SelectSingleNode("CreditResponse/VisaGrp/ACI");
- if (aCI != null)
- {
- visaGrp.ACI = (ACIType)Enum.Parse(typeof(ACIType), aCI.InnerText);
- visaGrp.ACISpecified = true;
- }
- var cardLevelResult = xmlDoc.SelectSingleNode("CreditResponse/VisaGrp/CardLevelResult");
- if (cardLevelResult != null)
- {
- …
Large files files are truncated, but you can click here to view the full file