public InsertEgenciaCardResponse(string pan) { // Initialisation this.StartDate = DateTime.Now; // On garde en mémoire le Pan // que le client souhaite envoyer this.InputPan = CreditCardVerifier.TruncatePan(pan); }
public void SetValues(UserInfo useri, string pan, string cardType, string status, string information) { SetUser(useri); this.TruncatedPAN = CreditCardVerifier.TruncatePan(pan); this.CardType = cardType; this.Status = status; this.Information = information; }
public void IfCreditCardNumberIsEmpty_ReturnException() { var card = new CreditCardVerifier(); var input = card.Verify(""); var expected = "0"; Assert.AreEqual(expected, input); }
public void SetValues(UserInfo useri, string token, string pan, string cardType, string status, string code, string message) { SetUser(useri); this.TruncatedPAN = CreditCardVerifier.TruncatePan(pan); this.Status = status; this.CardType = cardType; this.InformationCode = code; this.InformationMessage = message; this.Token = token; }
/// <summary> /// On va répondre au client /// mais avant, nous devons tracer cette demande /// en informant Syslog /// </summary> private void LogResponse() { string providedData = Util.Nvl(this.InputToken, string.Empty); if (!IsError()) { // We need to mask displayed value in the log providedData = CreditCardVerifier.TruncatePan(providedData); } Services.WriteOperationStatusToLog(GetUser(), String.Format(" and provided Pan={0}", providedData), String.Format(".The following values were returned to user : {0}", GetValueMessage()), String.Format(".Unfortunately, the process failed for the following reason: {0}", GetExceptionMessage()), IsError(), GetDuration()); }
/// <summary> /// Affectation des valeurs /// </summary> /// <param name="BOtoken">Token FrontOffice</param> /// <param name="pan">Numéro de carte</param> /// <param name="expirationDate">Date d'expiration</param> /// <param name="ri">Information validation numéro de carte</param> public void SetValues(string token, string pan, string csc, CardInfos ri) { this.Token = token; this.PAN = pan; this.CSC = csc; if (ri != null) { this.TruncatedPAN = ri.GetTruncatedPAN(); this.CardType = ri.GetCardType(); this.ShortCardType = ri.GetShortCardType(); this.MII = ri.GetMII(); this.MIIIssuerCategory = ri.GetMIIIssuerCategory(); } else { this.TruncatedPAN = CreditCardVerifier.TruncatePan(pan); } }
public InsertCardResponse(string value, bool isAToken) { // Initialisation this.StartDate = DateTime.Now; // On garde en mémoire le Pan (ou le token) // que le client souhaite envoyer this.ArgIsAToken = isAToken; if (IsAToken()) { // On a probablement un token this.InputValue = value; } else { // On a une carte this.InputValue = CreditCardVerifier.TruncatePan(value); } }
/// <summary> /// Affectation des valeurs /// </summary> /// <param name="BOtoken">Token FrontOffice</param> /// <param name="pan">Numéro de carte</param> /// <param name="expirationDate">Date d'expiration</param> /// <param name="ri">Information validation numéro de carte</param> public void SetValues(long BOtoken, string pan, DateTime expirationDate, CardInfos ri) { this.BOToken = BOtoken; this.PAN = pan; this.TruncatedPAN = CreditCardVerifier.TruncatePan(pan); this.ExpirationDate = expirationDate; SetShortExpirationDate(Util.GetShortExpirationDate(GetExpirationDate())); if (ri != null) { this.Cvc = ri.GetCvc(); this.CardType = ri.GetCardType(); this.ShortCardType = ri.GetShortCardType(); this.MII = ri.GetMII(); this.MIIIssuerCategory = ri.GetMIIIssuerCategory(); //--> EGE-62034 : Revamp - CCE - Change Financial flow update //this.NavisionCardLabel = ri.GetNavisionCardLabel(); this.NavisionCardLabel = ri.GetNavisionFinancialFlow(); //<-- EGE-62034 : Revamp - CCE - Change Financial flow update this.NavisionCardType = ri.GetNavisionCardType(); this.IsNavisionPaymentAirplus = ri.GetNavisionPaymentAirPlus(); this.IsNavisionPaymentBTA = ri.GetNavisionPaymentBTA(); this.IsNavisionLodgedCard = ri.GetNavisionLodgedCard(); } }
/// <summary> /// Retour de la réponse structurée en XML /// </summary> /// <returns>Réponse (XML)</returns> public string GetResponse() { // On trace la demande LogResponse(); // On va maintenant contruire la réponse string strData = Const.XmlHeader + Xml_Response_Open_Tag + Xml_Response_Duration_Open_Tag + GetDuration() + Xml_Response_Duration_Close_Tag; if (!IsError()) { // Il n'y aucune erreur // On va renvoyer les données // et de ce fait ignorer les tag d'exception strData += Xml_Response_Value_Open_Tag + Xml_POS_Open_Tag + GetArgPos() + Xml_POS_Close_Tag + Xml_Customer_Open_Tag + GetArgComcode() + Xml_Customer_Close_Tag + Xml_CostCenter_Open_Tag + Util.Nvl(GetArgCostCenter(), string.Empty) + Xml_CostCenter_Close_Tag + Xml_Percode_Open_Tag + GetArgPercode() + Xml_Percode_Close_Tag + Xml_Corporation_Open_Tag + GetArgCorporation() + Xml_Corporation_Close_Tag; if (!String.IsNullOrEmpty(GetPaymentType()) && GetPaymentType().Equals(Const.PaymentTypeStringCASH_FR)) { // Payment type CASH strData += Xml_Service_Open_Tag + GetArgService() + Xml_Service_Close_Tag + Xml_PaymentType_Open_Tag + GetPaymentType() + Xml_PaymentType_Close_Tag + Xml_Origin_Open_Tag + string.Empty + Xml_Origin_Close_Tag; } else if (this.extendedPanInfos != null) { // Payment type CREDIT CARD // with BO Token strData += Xml_Service_Open_Tag + GetArgService() + Xml_Service_Close_Tag + Xml_PaymentType_Open_Tag + Const.PaymentTypeCreditCardShort + Xml_PaymentType_Close_Tag + Xml_Origin_Open_Tag + string.Empty + Xml_Origin_Close_Tag; strData += Xml_Card_Open_Tag + Xml_CardType_Open_Tag + this.extendedPanInfos.GetCardType() + Xml_CardType_Close_Tag + Xml_ShortCardType_Open_Tag + this.extendedPanInfos.GetShortCardType() + Xml_ShortCardType_Close_Tag + Xml_CardToken_Open_Tag + GetArgToken() + Xml_CardToken_Close_Tag + Xml_TruncatedCardNumber_Open_Tag + this.extendedPanInfos.GetTruncatedPan() + Xml_TruncatedCardNumber_Close_Tag + Xml_CardNumber_Open_Tag + this.extendedPanInfos.GetPan() + Xml_CardNumber_Close_Tag + Xml_FormOfPayment_Open_Tag + String.Format("FP CC{0}{1}/{2}", this.extendedPanInfos.GetShortCardType(), this.extendedPanInfos.GetPan(), this.extendedPanInfos.GetShortExpirationDate().Replace("/", string.Empty)) + Xml_FormOfPayment_Close_Tag + Xml_ExpirationDate_Open_Tag + this.extendedPanInfos.GetExpirationDate() + Xml_ExpirationDate_Close_Tag + Xml_ShortExpirationDate_Open_Tag + this.extendedPanInfos.GetShortExpirationDate() + Xml_ShortExpirationDate_Close_Tag + Xml_LodgedCard_Open_Tag + "0" + Xml_LodgedCard_Close_Tag + Xml_MII_Open_Tag + this.extendedPanInfos.GetMII() + Xml_MII_Close_Tag + Xml_MIIIssuerCategory_Open_Tag + this.extendedPanInfos.GetMIIIssuerCategory() + Xml_MIIIssuerCategory_Close_Tag + Xml_MerchantFlow_Open_Tag + this.extendedPanInfos.GetMerchantFlow() + Xml_MerchantFlow_Close_Tag + Xml_EnhancedFlow_Open_Tag + this.extendedPanInfos.GetEnhancedFlow() + Xml_EnhancedFlow_Close_Tag + Xml_Card_Close_Tag; } else if (this.fOPanInfos != null) { string truncatedPAN = CreditCardVerifier.TruncatePan(this.fOPanInfos.GetPAN()); // Payment type CREDIT CARD // with FO Token strData += Xml_Service_Open_Tag + GetArgService() + Xml_Service_Close_Tag + Xml_PaymentType_Open_Tag + Const.PaymentTypeCreditCardShort + Xml_PaymentType_Close_Tag + Xml_Origin_Open_Tag + Xml_Origin_Close_Tag; strData += Xml_Card_Open_Tag + Xml_CardType_Open_Tag + this.fOPanInfos.GetCardType() + Xml_CardType_Close_Tag + Xml_ShortCardType_Open_Tag + this.fOPanInfos.GetShortCardType() + Xml_ShortCardType_Close_Tag + Xml_CardToken_Open_Tag + GetArgToken() + Xml_CardToken_Close_Tag + Xml_TruncatedCardNumber_Open_Tag + truncatedPAN + Xml_TruncatedCardNumber_Close_Tag + Xml_CardNumber_Open_Tag + this.fOPanInfos.GetPAN() + Xml_CardNumber_Close_Tag + Xml_FormOfPayment_Open_Tag + String.Format("FP CC{0}{1}/{2}", this.fOPanInfos.GetShortCardType(), this.fOPanInfos.GetPAN(), this.fOPanInfos.GetShortExpirationDate().Replace("/", string.Empty)) + Xml_FormOfPayment_Close_Tag + Xml_ExpirationDate_Open_Tag + this.fOPanInfos.GetExpirationDate() + Xml_ExpirationDate_Close_Tag + Xml_ShortExpirationDate_Open_Tag + this.fOPanInfos.GetShortExpirationDate() + Xml_ShortExpirationDate_Close_Tag + Xml_LodgedCard_Open_Tag + "0" + Xml_LodgedCard_Close_Tag + Xml_MII_Open_Tag + this.fOPanInfos.GetMII() + Xml_MII_Close_Tag + Xml_MIIIssuerCategory_Open_Tag + this.fOPanInfos.GetMIIIssuerCategory() + Xml_MIIIssuerCategory_Close_Tag + Xml_MerchantFlow_Open_Tag + string.Empty + Xml_MerchantFlow_Close_Tag + Xml_EnhancedFlow_Open_Tag + string.Empty + Xml_EnhancedFlow_Close_Tag + Xml_Card_Close_Tag; } else { // hierarchival payment means RequestedService rs = this.travelerPaymentMeanResponse.GetNav_PaymentMeans().RequestedService[0]; strData += Xml_Service_Open_Tag + rs.Service[0] + Xml_Service_Close_Tag + Xml_PaymentType_Open_Tag + rs.PaymentType + Xml_PaymentType_Close_Tag + Xml_Origin_Open_Tag + rs.Origin + Xml_Origin_Close_Tag; if (!String.IsNullOrEmpty(rs.PaymentType) && rs.PaymentType.Equals(Const.PaymentTypeCreditCardShort) && !String.IsNullOrEmpty(rs.Card[0].CardToken)) { // We have a credit card // prepare expiration date DateTime expDate = Util.GetLastDayOfThisMonth(Util.ConvertStringToDate(rs.Card[0].ExpirationDate, Const.DateFormat_MMyyyy)); string shortExpirationDate = Util.ConvertDateToString(expDate, Const.DateFormat_MMyy); // Set card type string cardType = rs.Card[0].CardType[0]; string shortCardType = CreditCardVerifier.GetShortCardTypeFromNavisionCardType(rs.Card[0].CardType[0]); // Return the MII (first digit) int mii = String.IsNullOrEmpty(rs.Card[0].TruncatedPAN) ? -1 : Util.ConvertStringToInt(rs.Card[0].TruncatedPAN.Substring(0, 1)); strData += Xml_Card_Open_Tag + Xml_CardType_Open_Tag + cardType + Xml_CardType_Close_Tag + Xml_ShortCardType_Open_Tag + CreditCardVerifier.GetShortCardTypeFromNavisionCardType(cardType) + Xml_ShortCardType_Close_Tag + Xml_CardToken_Open_Tag + rs.Card[0].CardToken + Xml_CardToken_Close_Tag + Xml_TruncatedCardNumber_Open_Tag + rs.Card[0].TruncatedPAN + Xml_TruncatedCardNumber_Close_Tag; string pan; try { // Untokenize pan = Services.GetPanFromBOToken(GetUser(), Util.ConvertStringToToken(rs.Card[0].CardToken)); strData += Xml_CardNumber_Open_Tag + pan + Xml_CardNumber_Close_Tag; }catch (Exception e) { SetException(GetUser(), e.Message); return(Const.XmlHeader + Xml_Response_Open_Tag + Xml_Response_Duration_Open_Tag + GetDuration() + Xml_Response_Duration_Close_Tag + BuildException() + Xml_Response_Close_Tag); } strData += Xml_FormOfPayment_Open_Tag + String.Format("FP CC{0}{1}/{2}", shortCardType, pan, shortExpirationDate.Replace("/", string.Empty)) + Xml_FormOfPayment_Close_Tag + Xml_ExpirationDate_Open_Tag + Util.ConvertExpirationDateToString(expDate) + Xml_ExpirationDate_Close_Tag + Xml_ShortExpirationDate_Open_Tag + shortExpirationDate + Xml_ShortExpirationDate_Close_Tag + Xml_LodgedCard_Open_Tag + (rs.Card[0].LodgedCard[0].Equals("true") ? "1" : "0") + Xml_LodgedCard_Close_Tag + Xml_MII_Open_Tag + mii.ToString() + Xml_MII_Close_Tag + Xml_MIIIssuerCategory_Open_Tag + CreditCardVerifier.GetMIIIssuerCategory(mii) + Xml_MIIIssuerCategory_Close_Tag + Xml_MerchantFlow_Open_Tag + rs.Card[0].MerchandFlow + Xml_MerchantFlow_Close_Tag + Xml_EnhancedFlow_Open_Tag + rs.Card[0].EnhanceFlow + Xml_EnhancedFlow_Close_Tag + Xml_Card_Close_Tag; } } strData += Xml_Response_Value_Close_Tag; } else { // On a une exception // Il faut renvoyer les tags d'exception et // de ce fait ne pas ajouter les tags sur les données strData += BuildException(); } strData += Xml_Response_Close_Tag; return(strData); }
/// <summary> /// On va répondre au client /// mais avant, nous devons tracer cette demande /// en informant Syslog /// </summary> private void LogResponse() { Services.WriteOperationStatusToLog(GetUser(), String.Format(" and provided {0}", IsAPAN()?CreditCardVerifier.TruncatePan(GetInputValue()):GetInputValue()), String.Format(".The following values were returned to user : {0}", GetValueMessage()), String.Format(".Unfortunately, the process failed for the following reason: {0}", GetExceptionMessage()), IsError(), GetDuration()); }
/// <summary> /// Affectation du numéro de carte /// </summary> /// <param name="cardNumber">Numéro de carte</param> public void SetCardNumber(string cardNumber) { this.CardNumber = cardNumber; SetTruncatedPAN(CreditCardVerifier.TruncatePan(cardNumber)); }
/// <summary> /// Log VCard request in the table /// </summary> /// <param name="reader">XML request</param> /// <param name="travelerOrder">Traveler order</param> /// <param name="percode">Traveler code</param> /// <param name="travelerName">Traveler Name</param> /// <param name="cc1">Cost center 1</param> /// <param name="cc2">Cost center 2</param> /// <param name="cc3">Cost center 3</param> /// <param name="channel">channel</param> /// <param name="response">CompleteIssueVNettVANResponse</param> public void InsertNewRequest(ENettRequestVAN reader, int travelerOrder, string percode, string travelerName , string cc1, string cc2, string cc3, string channel, CompleteIssueVNettVANResponse response) { string request = String.Format("INSERT INTO VCardBooking (" + "PaymentId ,TravelerOrder, PosCode, Comcode, BookerPercode, TravelerPercode, TravelerName, AdultCount, AgentLogin, " + "BookingDate, FundedAmount, Currency, CardActivationDate, CardExpirationDate, IsMultiUseCard, " + "TruncatedVAN, Product, Channel, ECN, MerchantCategory, MdCode, RefDossierType, RefDossierCode, OriginDate, OriginAddress, " + "OriginLocationCode, OriginCountryCode, EndDate, EndAddress, EndLocationCode, EndCountryCode, SupplierName, " + "CC1, CC2, CC3, RequestDate, TripName, FreeText1, FreeText2, FreeText3, HotelId, " //>>EGE-60949 //+ "ErrorCode, ErrorDesc, CreationDate, CreatedBy, ModificationDate, ModifiedBy, SupportLogId, VNettTransactionID) " + "ErrorCode, ErrorDesc, CreationDate, CreatedBy, ModificationDate, ModifiedBy, SupportLogId, VNettTransactionID, PosCurrency, VanCountryCode) " //<< EGE-60949 + "VALUES (" + "@PaymentId ,@TravelerOrder, @PosCode, @Comcode, @BookerPercode, @TravelerPercode, @TravelerName, @AdultCount, @AgentLogin, " + "@BookingDate, @FundedAmount, @Currency, @CardActivationDate, @CardExpirationDate, @IsMultiUseCard, " + "@TruncatedVAN, @Product, @Channel, @ECN, @MerchantCategory, @MdCode, @RefDossierType, @RefDossierCode, @OriginDate, @OriginAddress, " + "@OriginLocationCode, @OriginCountryCode, @EndDate, @EndAddress, @EndLocationCode, @EndCountryCode, @SupplierName, " + "@CC1, @CC2, @CC3, @RequestDate, @TripName, @FreeText1, @FreeText2, @FreeText3, @HotelId, " //>>EGE-60949 //+ "@ErrorCode, @ErrorDesc, @CreationDate, @CreatedBy, @ModificationDate, @ModifiedBy, @SupportLogId, @VNettTransactionID)"); + "@ErrorCode, @ErrorDesc, @CreationDate, @CreatedBy, @ModificationDate, @ModifiedBy, @SupportLogId, @VNettTransactionID, @PosCurrency, @VanCountryCode)"); //<< EGE-60949 // objet command SqlCommand command = new SqlCommand(request, GetConnection()); try { // Send parameters command.Parameters.Add("@PaymentId", SqlDbType.VarChar, 16); command.Parameters["@PaymentId"].Value = Util.Nvl(response.GetReferenceId(), DBNull.Value); command.Parameters.Add("@SupportLogId", SqlDbType.VarChar, 256); command.Parameters["@SupportLogId"].Value = Util.Nvl(response.GetIssuedVNettResponse().SupportLogId, DBNull.Value); command.Parameters.Add("@VNettTransactionID", SqlDbType.VarChar, 100); command.Parameters["@VNettTransactionID"].Value = Util.Nvl(response.GetIssuedVNettResponse().VNettTransactionID, DBNull.Value); //<< EGE-60949 command.Parameters.Add("@PosCode", SqlDbType.VarChar, 2); command.Parameters["@PosCode"].Value = Util.Nvl(reader.PosCountryCode, DBNull.Value); command.Parameters.Add("@PosCurrency", SqlDbType.VarChar, 3); command.Parameters["@PosCurrency"].Value = Util.Nvl(reader.PosCurrency, DBNull.Value); command.Parameters.Add("@VanCountryCode ", SqlDbType.VarChar, 2); command.Parameters["@VanCountryCode "].Value = Util.Nvl(reader.Market, DBNull.Value); //<< EGE-60949 command.Parameters.Add("@TravelerOrder", SqlDbType.Int); command.Parameters["@TravelerOrder"].Value = travelerOrder; //<< EGE-60949 //command.Parameters.Add("@PosCode", SqlDbType.VarChar, 2); //command.Parameters["@PosCode"].Value = Util.Nvl(reader.Market, DBNull.Value); //<< EGE-60949 command.Parameters.Add("@Comcode", SqlDbType.Int); command.Parameters["@Comcode"].Value = Util.TryConvertStringToInt(reader.ComCode, DBNull.Value); command.Parameters.Add("@BookerPercode", SqlDbType.BigInt); command.Parameters["@BookerPercode"].Value = Util.TryConvertStringToLong(reader.BookerPerCode, DBNull.Value); command.Parameters.Add("@TravelerPercode", SqlDbType.BigInt); command.Parameters["@TravelerPercode"].Value = Util.TryConvertStringToLong(percode, DBNull.Value); command.Parameters.Add("@TravelerName", SqlDbType.VarChar, 512); command.Parameters["@TravelerName"].Value = Util.Nvl(travelerName, DBNull.Value); command.Parameters.Add("@AdultCount", SqlDbType.Int); command.Parameters["@AdultCount"].Value = Util.TryConvertStringToInt(reader.AdultsCount, DBNull.Value); command.Parameters.Add("@AgentLogin", SqlDbType.VarChar, 100); command.Parameters["@AgentLogin"].Value = Util.Nvl(reader.UserName, DBNull.Value); command.Parameters.Add("@BookingDate", SqlDbType.DateTime); command.Parameters["@BookingDate"].Value = Util.ConvertStringToDate(reader.BookingDate, Const.ExpirationDateFormat); command.Parameters.Add("@FundedAmount", SqlDbType.Money); command.Parameters["@FundedAmount"].Value = response.GetIssuedVNettResponse().IsSuccessful ?response.GetIssuedVNettResponse().FundedAmount:0; command.Parameters.Add("@Currency", SqlDbType.VarChar, 3); command.Parameters["@Currency"].Value = Util.Nvl(reader.Currency, DBNull.Value); command.Parameters.Add("@CardActivationDate", SqlDbType.DateTime); command.Parameters["@CardActivationDate"].Value = Util.ConvertStringToDate(reader.ActivationDate, Const.ExpirationDateFormat); command.Parameters.Add("@CardExpirationDate", SqlDbType.DateTime); command.Parameters["@CardExpirationDate"].Value = Util.ConvertStringToDate(reader.ExpiryDate, Const.ExpirationDateFormat); command.Parameters.Add("@IsMultiUseCard", SqlDbType.Bit); command.Parameters["@IsMultiUseCard"].Value = Util.ConvertStringToBool(reader.IsMultiUse) ? 1 : 0; command.Parameters.Add("@TruncatedVAN", SqlDbType.VarChar, 16); command.Parameters["@TruncatedVAN"].Value = response.GetIssuedVNettResponse().IsSuccessful ? CreditCardVerifier.TruncatePan(response.GetIssuedVNettResponse().VirtualAccountNumber) : string.Empty; command.Parameters.Add("@Product", SqlDbType.VarChar, 30); command.Parameters["@Product"].Value = Util.Nvl(reader.Product, DBNull.Value); command.Parameters.Add("@Channel", SqlDbType.VarChar, 10); command.Parameters["@Channel"].Value = Util.Nvl(channel, DBNull.Value); command.Parameters.Add("@ECN", SqlDbType.Int); command.Parameters["@ECN"].Value = Util.TryConvertStringToInt(reader.ECN, DBNull.Value); command.Parameters.Add("@MerchantCategory", SqlDbType.VarChar, 30); command.Parameters["@MerchantCategory"].Value = Util.Nvl(reader.MerchantCategory, DBNull.Value); command.Parameters.Add("@MdCode", SqlDbType.Int); command.Parameters["@MdCode"].Value = Util.TryConvertStringToInt(reader.MdCode, DBNull.Value); command.Parameters.Add("@RefDossierType", SqlDbType.VarChar, 10); command.Parameters["@RefDossierType"].Value = Util.Nvl(reader.RefDossierType, DBNull.Value); command.Parameters.Add("@RefDossierCode", SqlDbType.Int); command.Parameters["@RefDossierCode"].Value = Util.TryConvertStringToInt(reader.RefDossierCode, DBNull.Value); // Origin date is not available in verion 1 of the XML command.Parameters.Add("@OriginDate", SqlDbType.DateTime); if (String.IsNullOrEmpty(reader.OriginDate)) { command.Parameters["@OriginDate"].Value = DBNull.Value; } else { command.Parameters["@OriginDate"].Value = Util.ConvertStringToDate(reader.OriginDate, Const.ExpirationDateFormat); } command.Parameters.Add("@OriginAddress", SqlDbType.VarChar, 2000); command.Parameters["@OriginAddress"].Value = Util.Nvl(reader.OriginLocationName, DBNull.Value); command.Parameters.Add("@OriginLocationCode", SqlDbType.VarChar, 30); command.Parameters["@OriginLocationCode"].Value = Util.Nvl(reader.OriginLocationCode, DBNull.Value); command.Parameters.Add("@OriginCountryCode", SqlDbType.VarChar, 3); command.Parameters["@OriginCountryCode"].Value = Util.Nvl(reader.OriginCountryCode, DBNull.Value); // Origin date is not available in verion 1 of the XML command.Parameters.Add("@EndDate", SqlDbType.DateTime); if (String.IsNullOrEmpty(reader.EndDate)) { command.Parameters["@EndDate"].Value = DBNull.Value; } else { command.Parameters["@EndDate"].Value = Util.ConvertStringToDate(reader.EndDate, Const.ExpirationDateFormat); } command.Parameters.Add("@EndAddress", SqlDbType.VarChar, 2000); command.Parameters["@EndAddress"].Value = Util.Nvl(reader.EndLocationName, DBNull.Value); command.Parameters.Add("@EndLocationCode", SqlDbType.VarChar, 30); command.Parameters["@EndLocationCode"].Value = Util.Nvl(reader.EndLocationCode, DBNull.Value); command.Parameters.Add("@EndCountryCode", SqlDbType.VarChar, 3); command.Parameters["@EndCountryCode"].Value = Util.Nvl(reader.EndCountryCode, DBNull.Value); command.Parameters.Add("@SupplierName", SqlDbType.VarChar, 512); command.Parameters["@SupplierName"].Value = Util.Nvl(reader.SupplierName, DBNull.Value); command.Parameters.Add("@CC1", SqlDbType.VarChar, 100); command.Parameters["@CC1"].Value = Util.Nvl(cc1, DBNull.Value); command.Parameters.Add("@CC2", SqlDbType.VarChar, 100); command.Parameters["@CC2"].Value = Util.Nvl(cc2, DBNull.Value); command.Parameters.Add("@CC3", SqlDbType.VarChar, 100); command.Parameters["@CC3"].Value = Util.Nvl(cc3, DBNull.Value); command.Parameters.Add("@RequestDate", SqlDbType.DateTime); command.Parameters["@RequestDate"].Value = DateTime.Now; command.Parameters.Add("@TripName", SqlDbType.VarChar, 256); command.Parameters["@TripName"].Value = Util.Nvl(reader.TripName, DBNull.Value); command.Parameters.Add("@FreeText1", SqlDbType.VarChar, 1000); command.Parameters["@FreeText1"].Value = Util.Nvl(reader.FreeText1, DBNull.Value); command.Parameters.Add("@FreeText2", SqlDbType.VarChar, 1000); command.Parameters["@FreeText2"].Value = Util.Nvl(reader.FreeText2, DBNull.Value); command.Parameters.Add("@FreeText3", SqlDbType.VarChar, 1000); command.Parameters["@FreeText3"].Value = Util.Nvl(reader.FreeText3, DBNull.Value); command.Parameters.Add("@HotelId", SqlDbType.BigInt); command.Parameters["@HotelId"].Value = Util.TryConvertStringToLong(reader.HotelID, 0L); command.Parameters.Add("@ErrorCode", SqlDbType.VarChar, 50); command.Parameters["@ErrorCode"].Value = response.GetIssuedVNettResponse().IsSuccessful?0:response.GetIssuedVNettResponse().ErrorCode; command.Parameters.Add("@ErrorDesc", SqlDbType.VarChar, 256); command.Parameters["@ErrorDesc"].Value = response.GetIssuedVNettResponse().IsSuccessful ? string.Empty : response.GetIssuedVNettResponse().ErrorDescription; // Technical infos command.Parameters.Add("@CreationDate", SqlDbType.DateTime); command.Parameters["@CreationDate"].Value = DateTime.Now; command.Parameters.Add("@CreatedBy", SqlDbType.VarChar, 256); command.Parameters["@CreatedBy"].Value = Util.Nvl(reader.AgentLogIn, DBNull.Value); command.Parameters.Add("@ModificationDate", SqlDbType.DateTime); command.Parameters["@ModificationDate"].Value = DateTime.Now; command.Parameters.Add("@ModifiedBy", SqlDbType.VarChar, 256); command.Parameters["@ModifiedBy"].Value = Util.Nvl(reader.AgentLogIn, DBNull.Value); // Execute ... command.ExecuteNonQuery(); } catch (Exception e) { // Something wen wrong throw new Exception(GetMessages().GetString("VCardLogConnection.Save.Error", response.GetReferenceId(), e.Message, true)); } finally { DisposeCommand(command); } }
/// <summary> /// Retour de la réponse structurée en XML /// </summary> /// <returns>Réponse (XML)</returns> public string GetResponse() { // On trace la demande LogResponse(); // On va maintenant contruire la réponse string strData = Const.XmlHeader + Xml_Response_Open_Tag + Xml_Response_Duration_Open_Tag + GetDuration() + Xml_Response_Duration_Close_Tag; if (!IsError()) { // Il n'y aucune erreur // On va renvoyer les données // et de ce fait ignorer les tag d'exception strData += Xml_Response_Value_Open_Tag + Xml_POS_Open_Tag + GetArgPos() + Xml_POS_Close_Tag + Xml_Customer_Open_Tag + GetArgComcode() + Xml_Customer_Close_Tag + Xml_CostCenter_Open_Tag + Util.Nvl(GetArgCostCenter(), string.Empty) + Xml_CostCenter_Close_Tag + Xml_Percode_Open_Tag + GetArgPercode() + Xml_Percode_Close_Tag + Xml_Services_Open_Tag; foreach (RequestedService rs in this.pm.RequestedService) { strData += "<RequestedService RequestedValue=\"" + Util.Nvl(rs.RequestedValue, Const.ServiceALL) + "\">" + Xml_PaymentType_Open_Tag + rs.PaymentType + Xml_PaymentType_Close_Tag + Xml_Origin_Open_Tag + rs.Origin + Xml_Origin_Close_Tag + Xml_Service_Open_Tag + rs.Service[0] + Xml_Service_Close_Tag; if (!String.IsNullOrEmpty(rs.PaymentType) && rs.PaymentType.Equals(Const.PaymentTypeCreditCardShort) && !String.IsNullOrEmpty(rs.Card[0].CardToken)) { // We have a credit card // prepare expiration date DateTime expDate = Util.GetLastDayOfThisMonth(Util.ConvertStringToDate(rs.Card[0].ExpirationDate, Const.DateFormat_MMyyyy)); string shortExpirationDate = Util.ConvertDateToString(expDate, Const.DateFormat_MMyy); // Set card type string cardType = rs.Card[0].CardType[0]; string shortCardType = CreditCardVerifier.GetShortCardTypeFromNavisionCardType(rs.Card[0].CardType[0]); // Return the MII (first digit) int mii = String.IsNullOrEmpty(rs.Card[0].TruncatedPAN) ? -1 : Util.ConvertStringToInt(rs.Card[0].TruncatedPAN.Substring(0, 1)); strData += Xml_Card_Open_Tag + Xml_CardType_Open_Tag + cardType + Xml_CardType_Close_Tag + Xml_ShortCardType_Open_Tag + CreditCardVerifier.GetShortCardTypeFromNavisionCardType(cardType) + Xml_ShortCardType_Close_Tag + Xml_CardToken_Open_Tag + rs.Card[0].CardToken + Xml_CardToken_Close_Tag + Xml_TruncatedCardNumber_Open_Tag + rs.Card[0].TruncatedPAN + Xml_TruncatedCardNumber_Close_Tag + Xml_FormOfPayment_Open_Tag + String.Format("FP CC{0}{1}/{2}", shortCardType, rs.Card[0].TruncatedPAN, shortExpirationDate.Replace("/", string.Empty)) + Xml_FormOfPayment_Close_Tag + Xml_ExpirationDate_Open_Tag + Util.ConvertExpirationDateToString(expDate) + Xml_ExpirationDate_Close_Tag + Xml_ShortExpirationDate_Open_Tag + shortExpirationDate + Xml_ShortExpirationDate_Close_Tag + Xml_LodgedCard_Open_Tag + (rs.Card[0].LodgedCard[0].Equals("true") ? "1" : "0") + Xml_LodgedCard_Close_Tag + Xml_MII_Open_Tag + mii.ToString() + Xml_MII_Close_Tag + Xml_MIIIssuerCategory_Open_Tag + CreditCardVerifier.GetMIIIssuerCategory(mii) + Xml_MIIIssuerCategory_Close_Tag //+ Xml_MerchantFlow_Open_Tag + rs.Card[0].MerchandFlow + Xml_MerchantFlow_Close_Tag //+ Xml_EnhancedFlow_Open_Tag + rs.Card[0].EnhanceFlow + Xml_EnhancedFlow_Close_Tag + Xml_Card_Close_Tag; } strData += Xml_Requested_Service_Close_Tag; } strData += Xml_Services_Close_Tag + Xml_Response_Value_Close_Tag; } else { // On a une exception // Il faut renvoyer les tags d'exception et // de ce fait ne pas ajouter les tags sur ls données strData += Xml_Response_Exception_Open_Tag + Xml_Response_Exception_Count_Open_Tag + GetExceptionCount() + Xml_Response_Exception_Count_Close_Tag + Xml_Response_Exception_Code_Open_Tag + GetExceptionCode() + Xml_Response_Exception_Code_Close_Tag + Xml_Response_Exception_Severity_Open_Tag + GetExceptionSeverity() + Xml_Response_Exception_Severity_Close_Tag + Xml_Response_Exception_Type_Open_Tag + GetExceptionType() + Xml_Response_Exception_Type_Close_Tag + Xml_Response_Exception_Message_Open_Tag + GetExceptionMessage() + Xml_Response_Exception_Message_Close_Tag + Xml_Response_Exception_Close_Tag; } strData += Xml_Response_Close_Tag; return(strData); }
private void LogRequest() { if (!this.requestLogged) { Logger.WriteInformationToLog(String.Format("(login = {0}, IP¨= {1}) is calling {2} and provided {3}", GetUser().GetLogin(), GetUser().GetClientIP(), UserInfo.GetApplicationName(GetUser().GetApplication()), ArgsChecker.IsValidToken(GetUser(), GetInputValue()) ? GetInputValue() : CreditCardVerifier.TruncatePan(GetInputValue()))); // request logged this.requestLogged = true; } }