public Response ValidateMerchantAccount(Request request) { string methodName = "ValidateMerchantAccount"; // Convert request ValidateMerchantAccountRequest validateRequest = null; try { validateRequest = ValidateMerchantAccountRequest.ConvertFrom(request); } catch (SampleException ex) { return(PaymentUtilities.CreateAndLogResponseForReturn(methodName, this.Name, Platform, locale: request == null ? null : request.Locale, properties: null, errors: ex.Errors)); } // Validate merchant account List <PaymentError> errors = new List <PaymentError>(); ValidateMerchantProperties(validateRequest, errors); if (errors.Count > 0) { return(PaymentUtilities.CreateAndLogResponseForReturn(methodName, this.Name, Platform, validateRequest.Locale, errors)); } // Create response var validateResponse = new ValidateMerchantAccountResponse(validateRequest.Locale, validateRequest.ServiceAccountId, this.Name); // Convert response and return Response response = ValidateMerchantAccountResponse.ConvertTo(validateResponse); PaymentUtilities.LogResponseBeforeReturn(methodName, this.Name, Platform, response); return(response); }
internal static Response ConvertTo(RefundResponse refundResponse) { var response = new Response(); refundResponse.WriteBaseProperties(response); var properties = new List <PaymentProperty>(); if (response.Properties != null) { properties.AddRange(response.Properties); } var refundRespnseProperties = new List <PaymentProperty>(); PaymentUtilities.AddPropertyIfPresent(refundRespnseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.CardType, refundResponse.CardType); PaymentUtilities.AddPropertyIfPresent(refundRespnseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.Last4Digits, refundResponse.Last4Digit); PaymentUtilities.AddPropertyIfPresent(refundRespnseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.CardToken, refundResponse.CardToken); PaymentUtilities.AddPropertyIfPresent(refundRespnseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.UniqueCardId, refundResponse.UniqueCardId); PaymentUtilities.AddPropertyIfPresent(refundRespnseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.ProviderTransactionId, refundResponse.ProviderTransactionId); PaymentUtilities.AddPropertyIfPresent(refundRespnseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.ApprovalCode, refundResponse.ApprovalCode); PaymentUtilities.AddPropertyIfPresent(refundRespnseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.ResponseCode, refundResponse.ResponseCode); PaymentUtilities.AddPropertyIfPresent(refundRespnseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.ApprovedAmount, refundResponse.ApprovedAmount); PaymentUtilities.AddPropertyIfPresent(refundRespnseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.CurrencyCode, refundResponse.CurrencyCode); PaymentUtilities.AddPropertyIfPresent(refundRespnseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.RefundResult, refundResponse.RefundResult); PaymentUtilities.AddPropertyIfPresent(refundRespnseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.ProviderMessage, refundResponse.ProviderMessage); PaymentUtilities.AddPropertyIfPresent(refundRespnseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.TransactionType, refundResponse.TransactionType); PaymentUtilities.AddPropertyIfPresent(refundRespnseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.TransactionDateTime, refundResponse.TransactionDateTime); properties.Add(new PaymentProperty(GenericNamespace.RefundResponse, RefundResponseProperties.Properties, refundRespnseProperties.ToArray())); response.Properties = properties.ToArray(); return(response); }
private static IEnumerable <TaxDetail> GetTaxDetails(Hashtable properties, string propertyNamespace, string propertyName) { IEnumerable <TaxDetail> taxDetails = null; PaymentProperty[] taxDetailsPropertyArray; if (PaymentProperty.GetPropertyValue(properties, propertyNamespace, propertyName, out taxDetailsPropertyArray)) { if (taxDetailsPropertyArray.Length > 0) { taxDetails = new List <TaxDetail>(); foreach (var taxDetailsProperty in taxDetailsPropertyArray) { PaymentProperty[] taxDetailPropertyArray = taxDetailsProperty.PropertyList; if (taxDetailPropertyArray != null) { Hashtable taxDetailProperties = PaymentProperty.ConvertToHashtable(taxDetailPropertyArray); var taxDetail = new TaxDetail(); taxDetail.TaxTypeIdentifier = PaymentUtilities.GetPropertyStringValue(taxDetailProperties, GenericNamespace.TaxDetail, TaxDetailProperties.TaxTypeIdentifier); taxDetail.TaxRate = PaymentUtilities.GetPropertyDecimalValue(taxDetailProperties, GenericNamespace.TaxDetail, TaxDetailProperties.TaxRate); taxDetail.TaxDescription = PaymentUtilities.GetPropertyStringValue(taxDetailProperties, GenericNamespace.TaxDetail, TaxDetailProperties.TaxDescription); taxDetail.TaxAmount = PaymentUtilities.GetPropertyDecimalValue(taxDetailProperties, GenericNamespace.TaxDetail, TaxDetailProperties.TaxAmount); (taxDetails as List <TaxDetail>).Add(taxDetail); } } } } return(taxDetails); }
internal static Response ConvertTo(GenerateCardTokenResponse tokenizeResponse) { var response = new Response(); tokenizeResponse.WriteBaseProperties(response); var properties = new List <PaymentProperty>(); if (response.Properties != null) { properties.AddRange(response.Properties); } PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.PaymentCard, PaymentCardProperties.CardType, tokenizeResponse.CardType); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.PaymentCard, PaymentCardProperties.Last4Digits, tokenizeResponse.Last4Digit); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.PaymentCard, PaymentCardProperties.CardToken, tokenizeResponse.CardToken); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.PaymentCard, PaymentCardProperties.UniqueCardId, tokenizeResponse.UniqueCardId); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.PaymentCard, PaymentCardProperties.ExpirationYear, tokenizeResponse.ExpirationYear); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.PaymentCard, PaymentCardProperties.ExpirationMonth, tokenizeResponse.ExpirationMonth); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.PaymentCard, PaymentCardProperties.Name, tokenizeResponse.Name); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.PaymentCard, PaymentCardProperties.StreetAddress, tokenizeResponse.StreetAddress); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.PaymentCard, PaymentCardProperties.StreetAddress2, tokenizeResponse.StreetAddress2); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.PaymentCard, PaymentCardProperties.City, tokenizeResponse.City); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.PaymentCard, PaymentCardProperties.State, tokenizeResponse.State); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.PaymentCard, PaymentCardProperties.PostalCode, tokenizeResponse.PostalCode); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.PaymentCard, PaymentCardProperties.Country, tokenizeResponse.Country); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.PaymentCard, PaymentCardProperties.Phone, tokenizeResponse.Phone); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.PaymentCard, PaymentCardProperties.AccountType, tokenizeResponse.AccountType); properties.AddRange(tokenizeResponse.OtherCardProperties); response.Properties = properties.ToArray(); return(response); }
private static IEnumerable <MiscellaneousCharge> GetMiscellaneousCharges(Hashtable properties, string propertyNamespace, string propertyName) { IEnumerable <MiscellaneousCharge> miscellaneousCharges = null; PaymentProperty[] miscellaneousChargesPropertyArray; if (PaymentProperty.GetPropertyValue(properties, propertyNamespace, propertyName, out miscellaneousChargesPropertyArray)) { if (miscellaneousChargesPropertyArray.Length > 0) { miscellaneousCharges = new List <MiscellaneousCharge>(); foreach (var miscellaneousChargesProperty in miscellaneousChargesPropertyArray) { PaymentProperty[] miscellaneousChargePropertyArray = miscellaneousChargesProperty.PropertyList; if (miscellaneousChargePropertyArray != null) { Hashtable miscellaneousChargeProperties = PaymentProperty.ConvertToHashtable(miscellaneousChargePropertyArray); var miscellaneousCharge = new MiscellaneousCharge(); miscellaneousCharge.ChargeType = PaymentUtilities.GetPropertyStringValue(miscellaneousChargeProperties, GenericNamespace.MiscellaneousCharge, MiscellaneousChargeProperties.ChargeType); miscellaneousCharge.ChargeAmount = PaymentUtilities.GetPropertyDecimalValue(miscellaneousChargeProperties, GenericNamespace.MiscellaneousCharge, MiscellaneousChargeProperties.ChargeAmount); (miscellaneousCharges as List <MiscellaneousCharge>).Add(miscellaneousCharge); } } } } return(miscellaneousCharges); }
internal static Response ConvertTo(GetPaymentAcceptPointResponse acceptPointResponse) { var response = new Response(); acceptPointResponse.WriteBaseProperties(response); var properties = new List <PaymentProperty>(); if (response.Properties != null) { properties.AddRange(response.Properties); } PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.TransactionData, TransactionDataProperties.PaymentAcceptUrl, acceptPointResponse.PaymentAcceptUrl); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.TransactionData, TransactionDataProperties.PaymentAcceptSubmitUrl, acceptPointResponse.PaymentAcceptSubmitUrl); PaymentUtilities.AddPropertyIfPresent(properties, GenericNamespace.TransactionData, TransactionDataProperties.PaymentAcceptMessageOrigin, acceptPointResponse.PaymentAcceptMessageOrigin); response.Properties = properties.ToArray(); return(response); }
internal static Response ConvertTo(AuthorizeResponse authorizeResponse) { var response = new Response(); authorizeResponse.WriteBaseProperties(response); var properties = new List <PaymentProperty>(); if (response.Properties != null) { properties.AddRange(response.Properties); } var authorizationRespnseProperties = new List <PaymentProperty>(); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.CardType, authorizeResponse.CardType); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.IsSwiped, authorizeResponse.IsSwipe); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.Last4Digits, authorizeResponse.Last4Digit); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.CardToken, authorizeResponse.CardToken); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.UniqueCardId, authorizeResponse.UniqueCardId); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.VoiceAuthorizationCode, authorizeResponse.VoiceAuthorizationCode); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.CashBackAmount, authorizeResponse.CashBackAmount); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.AccountType, authorizeResponse.AccountType); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ProviderTransactionId, authorizeResponse.ProviderTransactionId); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ApprovalCode, authorizeResponse.ApprovalCode); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ResponseCode, authorizeResponse.ResponseCode); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ApprovedAmount, authorizeResponse.ApprovedAmount); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.CurrencyCode, authorizeResponse.CurrencyCode); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.AuthorizationResult, authorizeResponse.AuthorizationResult); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ProviderMessage, authorizeResponse.ProviderMessage); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.AVSResult, authorizeResponse.AVSResult); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.AVSDetail, authorizeResponse.AVSDetail); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.CVV2Result, authorizeResponse.CVV2Result); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.AvailableBalance, authorizeResponse.AvailableBalance); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.TransactionType, authorizeResponse.TransactionType); PaymentUtilities.AddPropertyIfPresent(authorizationRespnseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.TransactionDateTime, authorizeResponse.TransactionDateTime); properties.Add(new PaymentProperty(GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.Properties, authorizationRespnseProperties.ToArray())); response.Properties = properties.ToArray(); return(response); }
public Response GetMerchantAccountPropertyMetadata(Request request) { string methodName = "GetMerchantAccountPropertyMetadata"; // Check null request List <PaymentError> errors = new List <PaymentError>(); if (request == null) { errors.Add(new PaymentError(ErrorCode.InvalidRequest, "Request is null.")); return(PaymentUtilities.CreateAndLogResponseForReturn(methodName, this.Name, Platform, locale: null, properties: null, errors: errors)); } // Prepare response List <PaymentProperty> properties = new List <PaymentProperty>(); PaymentProperty property; property = new PaymentProperty( GenericNamespace.MerchantAccount, MerchantAccountProperties.AssemblyName, this.GetAssemblyName()); property.SetMetadata("Assembly Name:", "The assembly name of the test provider", false, true, 0); properties.Add(property); Response response = new Response(); response.Locale = request.Locale; response.Properties = properties.ToArray(); if (errors.Count > 0) { response.Errors = errors.ToArray(); } PaymentUtilities.LogResponseBeforeReturn(methodName, this.Name, Platform, response); return(response); }
internal static RefundRequest ConvertFrom(Request request) { var refundRequest = new RefundRequest(); var errors = new List <PaymentError>(); refundRequest.ReadBaseProperties(request, errors); // Check capture response Hashtable hashtable = PaymentProperty.ConvertToHashtable(request.Properties); PaymentProperty captureResponsePropertyList = PaymentProperty.GetPropertyFromHashtable(hashtable, GenericNamespace.CaptureResponse, CaptureResponseProperties.Properties); // Read card data if (captureResponsePropertyList != null) { refundRequest.IsLinkedRefund = true; // Linked refund, get card data from CaptureResponse Hashtable captureHashtable = PaymentProperty.ConvertToHashtable(captureResponsePropertyList.PropertyList); refundRequest.CardType = PaymentUtilities.GetPropertyStringValue( captureHashtable, GenericNamespace.CaptureResponse, CaptureResponseProperties.CardType, errors, ErrorCode.InvalidRequest); refundRequest.CardToken = PaymentUtilities.GetPropertyStringValue( captureHashtable, GenericNamespace.CaptureResponse, CaptureResponseProperties.CardToken); refundRequest.Last4Digit = PaymentUtilities.GetPropertyStringValue( captureHashtable, GenericNamespace.CaptureResponse, CaptureResponseProperties.Last4Digits); refundRequest.UniqueCardId = PaymentUtilities.GetPropertyStringValue( captureHashtable, GenericNamespace.CaptureResponse, CaptureResponseProperties.UniqueCardId); // Get other capture transaction data refundRequest.CaptureTransactionType = PaymentUtilities.GetPropertyStringValue( captureHashtable, GenericNamespace.CaptureResponse, CaptureResponseProperties.TransactionType, errors, ErrorCode.InvalidRequest); if (refundRequest.CaptureTransactionType != null && !TransactionType.Capture.ToString().Equals(refundRequest.CaptureTransactionType, StringComparison.OrdinalIgnoreCase)) { errors.Add(new PaymentError(ErrorCode.InvalidTransaction, "Refund does not support this type of transaction")); } refundRequest.CaptureApprovalCode = PaymentUtilities.GetPropertyStringValue( captureHashtable, GenericNamespace.CaptureResponse, CaptureResponseProperties.ApprovalCode); refundRequest.CaptureProviderMessage = PaymentUtilities.GetPropertyStringValue( captureHashtable, GenericNamespace.CaptureResponse, CaptureResponseProperties.ProviderMessage); refundRequest.CaptureProviderTransactionId = PaymentUtilities.GetPropertyStringValue( captureHashtable, GenericNamespace.CaptureResponse, CaptureResponseProperties.ProviderTransactionId, errors, ErrorCode.InvalidRequest); refundRequest.CaptureResponseCode = PaymentUtilities.GetPropertyStringValue( captureHashtable, GenericNamespace.CaptureResponse, CaptureResponseProperties.ResponseCode); refundRequest.CaptureResult = PaymentUtilities.GetPropertyStringValue( captureHashtable, GenericNamespace.CaptureResponse, CaptureResponseProperties.CaptureResult, errors, ErrorCode.InvalidRequest); refundRequest.CaptureTransactionDateTime = PaymentUtilities.GetPropertyDateTimeValue( captureHashtable, GenericNamespace.CaptureResponse, CaptureResponseProperties.TransactionDateTime); } else { // Not a linked refund, get card data from PaymentCard refundRequest.CardType = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.CardType, errors, ErrorCode.InvalidRequest); if (refundRequest.CardType != null && !PaymentUtilities.ValidateCardType(refundRequest.SupportedTenderTypes, refundRequest.CardType)) { errors.Add(new PaymentError(ErrorCode.CardTypeNotSupported, string.Format("Card type is not supported: {0}.", refundRequest.CardType))); } refundRequest.IsSwipe = PaymentUtilities.GetPropertyBooleanValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.IsSwipe); if (refundRequest.IsSwipe ?? false) { refundRequest.Track1 = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Track1); refundRequest.Track2 = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Track2); refundRequest.CardNumber = PaymentUtilities.ParseTrack1ForCardNumber(refundRequest.Track1); if (refundRequest.CardNumber == null) { refundRequest.CardNumber = PaymentUtilities.ParseTrack2ForCardNumber(refundRequest.Track2); } if (refundRequest.CardNumber == null) { errors.Add(new PaymentError(ErrorCode.InvalidCardTrackData, "Invalid card track data.")); } decimal expirationYear, expirationMonth; HelperUtilities.ParseTrackDataForExpirationDate(refundRequest.Track1 ?? string.Empty, refundRequest.Track2 ?? string.Empty, out expirationYear, out expirationMonth); refundRequest.ExpirationYear = expirationYear; refundRequest.ExpirationMonth = expirationMonth; } else { refundRequest.CardToken = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.CardToken); if (refundRequest.CardToken == null) { refundRequest.CardNumber = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.CardNumber, errors, ErrorCode.InvalidCardNumber); } else { refundRequest.Last4Digit = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Last4Digits); } refundRequest.ExpirationYear = PaymentUtilities.GetPropertyDecimalValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.ExpirationYear, errors, ErrorCode.InvalidExpirationDate); refundRequest.ExpirationMonth = PaymentUtilities.GetPropertyDecimalValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.ExpirationMonth, errors, ErrorCode.InvalidExpirationDate); } if (refundRequest.CardNumber != null && !HelperUtilities.ValidateBankCardNumber(refundRequest.CardNumber)) { errors.Add(new PaymentError(ErrorCode.InvalidCardNumber, "Invalid card number.")); } if (refundRequest.ExpirationYear.HasValue && refundRequest.ExpirationMonth.HasValue && refundRequest.ExpirationYear >= 0M && refundRequest.ExpirationMonth >= 0M && !PaymentUtilities.ValidateExpirationDate(refundRequest.ExpirationYear.Value, refundRequest.ExpirationMonth.Value)) { errors.Add(new PaymentError(ErrorCode.InvalidExpirationDate, "Invalid expiration date.")); } if (Microsoft.Dynamics.Retail.PaymentSDK.Portable.CardType.Debit.ToString().Equals(refundRequest.CardType, StringComparison.OrdinalIgnoreCase)) { refundRequest.EncryptedPin = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.EncryptedPin, errors, ErrorCode.CannotVerifyPin); refundRequest.AdditionalSecurityData = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.AdditionalSecurityData); } refundRequest.CardVerificationValue = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.CardVerificationValue); refundRequest.Name = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Name); refundRequest.StreetAddress = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.StreetAddress); refundRequest.StreetAddress2 = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.StreetAddress2); refundRequest.City = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.City); refundRequest.State = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.State); refundRequest.PostalCode = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.PostalCode); refundRequest.Country = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Country); refundRequest.Phone = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Phone); refundRequest.AccountType = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.AccountType); refundRequest.UniqueCardId = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.UniqueCardId); } // Read transaction data refundRequest.Amount = PaymentUtilities.GetPropertyDecimalValue( hashtable, GenericNamespace.TransactionData, TransactionDataProperties.Amount, errors, ErrorCode.InvalidAmount); refundRequest.CurrencyCode = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.TransactionData, TransactionDataProperties.CurrencyCode, errors, ErrorCode.InvalidRequest); if (refundRequest.CurrencyCode != null && !PaymentUtilities.ValidateCurrencyCode(refundRequest.SupportedCurrencies, refundRequest.CurrencyCode)) { errors.Add(new PaymentError(ErrorCode.UnsupportedCurrency, string.Format("Currency code is not supported: {0}.", refundRequest.CurrencyCode))); } refundRequest.SupportCardTokenization = PaymentUtilities.GetPropertyBooleanValue( hashtable, GenericNamespace.TransactionData, TransactionDataProperties.SupportCardTokenization); refundRequest.PurchaseLevel = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.TransactionData, TransactionDataProperties.PurchaseLevel); refundRequest.Level2Data = PaymentUtilities.GetLevel2Data(hashtable); refundRequest.Level3Data = PaymentUtilities.GetLevel3Data(hashtable); if (errors.Count > 0) { throw new SampleException(errors); } return(refundRequest); }
internal static VoidRequest ConvertFrom(Request request) { var voidRequest = new VoidRequest(); var errors = new List <PaymentError>(); voidRequest.ReadBaseProperties(request, errors); // Check authorization response Hashtable hashtable = PaymentProperty.ConvertToHashtable(request.Properties); PaymentProperty authorizationResponsePropertyList = PaymentProperty.GetPropertyFromHashtable(hashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.Properties); Hashtable authorizationHashtable = null; if (authorizationResponsePropertyList == null) { errors.Add(new PaymentError(ErrorCode.InvalidRequest, "Authorization response is missing.")); throw new SampleException(errors); } else { authorizationHashtable = PaymentProperty.ConvertToHashtable(authorizationResponsePropertyList.PropertyList); } // Read card data voidRequest.CardType = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.CardType, errors, ErrorCode.InvalidRequest); voidRequest.IsSwipe = PaymentUtilities.GetPropertyBooleanValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.IsSwiped); voidRequest.CardToken = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.CardToken); voidRequest.Last4Digit = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.Last4Digits); voidRequest.AccountType = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.AccountType); voidRequest.UniqueCardId = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.UniqueCardId); voidRequest.VoiceAuthorizationCode = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.VoiceAuthorizationCode); // Read authorization data voidRequest.AuthorizationTransactionType = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.TransactionType, errors, ErrorCode.InvalidRequest); if (voidRequest.AuthorizationTransactionType != null && !TransactionType.Authorize.ToString().Equals(voidRequest.AuthorizationTransactionType, StringComparison.OrdinalIgnoreCase)) { errors.Add(new PaymentError(ErrorCode.InvalidTransaction, "Void does not support this type of transaction")); } voidRequest.AuthorizationApprovalCode = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ApprovalCode); voidRequest.AuthorizationApprovedAmount = PaymentUtilities.GetPropertyDecimalValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ApprovedAmount, errors, ErrorCode.InvalidRequest); voidRequest.CurrencyCode = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.CurrencyCode, errors, ErrorCode.InvalidRequest); voidRequest.AuthorizationCashbackAmount = PaymentUtilities.GetPropertyDecimalValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.CashBackAmount); voidRequest.AuthorizationProviderMessage = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ProviderMessage); voidRequest.AuthorizationProviderTransactionId = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ProviderTransactionId, errors, ErrorCode.InvalidRequest); voidRequest.AuthorizationResponseCode = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ResponseCode); voidRequest.AuthorizationResult = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.AuthorizationResult, errors, ErrorCode.InvalidRequest); voidRequest.AuthorizationTransactionDateTime = PaymentUtilities.GetPropertyDateTimeValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.TransactionDateTime); if (errors.Count > 0) { throw new SampleException(errors); } return(voidRequest); }
internal static void LogOperationResult(string methodName, string connectorName, string platform, Request request, Response response) { /* * IMPORTANT!!! * THIS IS SAMPLE CODE ONLY! * THE CODE MIGHT LOG TOO MUCH INFORMATION WHICH IS INAPPROPRIATE FOR PRODUCT ENVIRONMENT. */ if (request != null && request.Properties != null && response != null && response.Properties != null) { var requestProperties = PaymentProperty.ConvertToHashtable(request.Properties); var responseProperties = PaymentProperty.ConvertToHashtable(response.Properties); StringBuilder result = new StringBuilder(); string requestCardToken = PaymentUtilities.GetPropertyStringValue(requestProperties, GenericNamespace.PaymentCard, PaymentCardProperties.CardToken); string responseCardToken = PaymentUtilities.GetPropertyStringValue(responseProperties, GenericNamespace.PaymentCard, PaymentCardProperties.CardToken); if (string.IsNullOrWhiteSpace(requestCardToken) && !string.IsNullOrWhiteSpace(responseCardToken)) { string last4Digit = PaymentUtilities.GetPropertyStringValue(responseProperties, GenericNamespace.PaymentCard, PaymentCardProperties.Last4Digits); result.Append(string.Format("Card {0}, Tokenization Success. ", last4Digit)); } string authResult = PaymentUtilities.GetPropertyStringValue(responseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.AuthorizationResult); if (!string.IsNullOrWhiteSpace(authResult)) { string last4Digit = PaymentUtilities.GetPropertyStringValue(responseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.Last4Digits); decimal?approvedAmount = PaymentUtilities.GetPropertyDecimalValue(responseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ApprovedAmount); string currency = PaymentUtilities.GetPropertyStringValue(responseProperties, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.CurrencyCode); result.Append(string.Format("Card {0}, Authorization {1}, Approved amount {2} {3}. ", last4Digit, authResult, approvedAmount, currency)); } string captureResult = PaymentUtilities.GetPropertyStringValue(responseProperties, GenericNamespace.CaptureResponse, CaptureResponseProperties.CaptureResult); if (!string.IsNullOrWhiteSpace(captureResult)) { string last4Digit = PaymentUtilities.GetPropertyStringValue(responseProperties, GenericNamespace.CaptureResponse, CaptureResponseProperties.Last4Digits); decimal?requestedAmount = PaymentUtilities.GetPropertyDecimalValue(requestProperties, GenericNamespace.TransactionData, TransactionDataProperties.Amount); string currency = PaymentUtilities.GetPropertyStringValue(responseProperties, GenericNamespace.CaptureResponse, CaptureResponseProperties.CurrencyCode); result.Append(string.Format("Card {0}, Capture {1}, Requested amount {2} {3}. ", last4Digit, captureResult, requestedAmount, currency)); } string voidResult = PaymentUtilities.GetPropertyStringValue(responseProperties, GenericNamespace.VoidResponse, VoidResponseProperties.VoidResult); if (!string.IsNullOrWhiteSpace(voidResult)) { string last4Digit = PaymentUtilities.GetPropertyStringValue(responseProperties, GenericNamespace.VoidResponse, VoidResponseProperties.Last4Digits); decimal?requestedAmount = PaymentUtilities.GetPropertyDecimalValue(requestProperties, GenericNamespace.TransactionData, TransactionDataProperties.Amount); string currency = PaymentUtilities.GetPropertyStringValue(responseProperties, GenericNamespace.VoidResponse, VoidResponseProperties.CurrencyCode); result.Append(string.Format("Card {0}, Void {1}, Requested amount {2} {3}. ", last4Digit, voidResult, requestedAmount, currency)); } string refundResult = PaymentUtilities.GetPropertyStringValue(responseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.RefundResult); if (!string.IsNullOrWhiteSpace(refundResult)) { string last4Digit = PaymentUtilities.GetPropertyStringValue(responseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.Last4Digits); decimal?approvedAmount = PaymentUtilities.GetPropertyDecimalValue(responseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.ApprovedAmount); string currency = PaymentUtilities.GetPropertyStringValue(responseProperties, GenericNamespace.RefundResponse, RefundResponseProperties.CurrencyCode); result.Append(string.Format("Card {0}, Refund {1}, Approved amount {2} {3}. ", last4Digit, refundResult, approvedAmount, currency)); } string step = "result: "; if (result.Length > 0) { step += result.ToString(); } else { step += "No result. "; } RetailLogger.Log.PaymentConnectorLogOperation(methodName, step, connectorName, platform); } }
internal static IEnumerable <Level3Data> GetLevel3Data(Hashtable properties) { if (properties == null) { throw new ArgumentNullException("properties"); } IEnumerable <Level3Data> level3Data = null; PaymentProperty[] level3DataPropertyArray; if (PaymentProperty.GetPropertyValue(properties, GenericNamespace.PurchaseLevelData, PurchaseLevelDataProperties.L3Data, out level3DataPropertyArray)) { if (level3DataPropertyArray.Length > 0) { level3Data = new List <Level3Data>(); } foreach (var level3DataProperty in level3DataPropertyArray) { var level3DataItems = new Level3Data(); Hashtable level3DataItemsProperties = PaymentProperty.ConvertToHashtable(level3DataProperty.PropertyList); level3DataItems.SequenceNumber = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.SequenceNumber); level3DataItems.CommodityCode = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.CommodityCode); level3DataItems.ProductCode = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.ProductCode); level3DataItems.ProductName = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.ProductName); level3DataItems.ProductSKU = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.ProductSKU); level3DataItems.Descriptor = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.Descriptor); level3DataItems.UnitOfMeasure = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.UnitOfMeasure); level3DataItems.UnitPrice = PaymentUtilities.GetPropertyDecimalValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.UnitPrice); level3DataItems.Discount = PaymentUtilities.GetPropertyDecimalValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.Discount); level3DataItems.DiscountRate = PaymentUtilities.GetPropertyDecimalValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.DiscountRate); level3DataItems.Quantity = PaymentUtilities.GetPropertyDecimalValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.Quantity); level3DataItems.MiscCharge = PaymentUtilities.GetPropertyDecimalValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.MiscCharge); level3DataItems.NetTotal = PaymentUtilities.GetPropertyDecimalValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.NetTotal); level3DataItems.TaxAmount = PaymentUtilities.GetPropertyDecimalValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.TaxAmount); level3DataItems.TaxRate = PaymentUtilities.GetPropertyDecimalValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.TaxRate); level3DataItems.TotalAmount = PaymentUtilities.GetPropertyDecimalValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.TotalAmount); level3DataItems.CostCenter = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.CostCenter); level3DataItems.FreightAmount = PaymentUtilities.GetPropertyDecimalValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.FreightAmount); level3DataItems.HandlingAmount = PaymentUtilities.GetPropertyDecimalValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.HandlingAmount); level3DataItems.CarrierTrackingNumber = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.CarrierTrackingNumber); level3DataItems.MerchantTaxID = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.MerchantTaxID); level3DataItems.MerchantCatalogNumber = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.MerchantCatalogNumber); level3DataItems.TaxCategoryApplied = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.TaxCategoryApplied); level3DataItems.PickupAddress = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.PickupAddress); level3DataItems.PickupCity = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.PickupCity); level3DataItems.PickupState = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.PickupState); level3DataItems.PickupCounty = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.PickupCounty); level3DataItems.PickupZip = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.PickupZip); level3DataItems.PickupCountry = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.PickupCountry); level3DataItems.PickupDateTime = PaymentUtilities.GetPropertyDateTimeValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.PickupDateTime); level3DataItems.PickupRecordNumber = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.PickupRecordNumber); level3DataItems.CarrierShipmentNumber = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.CarrierShipmentNumber); level3DataItems.UNSPSCCode = PaymentUtilities.GetPropertyStringValue(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.UNSPSCCode); level3DataItems.TaxDetails = PaymentUtilities.GetTaxDetails(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.TaxDetails); level3DataItems.MiscellaneousCharges = PaymentUtilities.GetMiscellaneousCharges(level3DataItemsProperties, GenericNamespace.L3Data, L3DataProperties.MiscellaneousCharges); (level3Data as List <Level3Data>).Add(level3DataItems); } } return(level3Data); }
internal static Level2Data GetLevel2Data(Hashtable properties) { if (properties == null) { throw new ArgumentNullException("properties"); } Level2Data level2Data = null; PaymentProperty[] level2DataPropertyArray; if (PaymentProperty.GetPropertyValue(properties, GenericNamespace.PurchaseLevelData, PurchaseLevelDataProperties.L2Data, out level2DataPropertyArray)) { Hashtable level2DataProperties = PaymentProperty.ConvertToHashtable(level2DataPropertyArray); level2Data = new Level2Data(); level2Data.OrderDateTime = PaymentUtilities.GetPropertyDateTimeValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.OrderDateTime); level2Data.OrderNumber = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.OrderNumber); level2Data.InvoiceDateTime = PaymentUtilities.GetPropertyDateTimeValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.InvoiceDateTime); level2Data.InvoiceNumber = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.InvoiceNumber); level2Data.OrderDescription = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.OrderDescription); level2Data.SummaryCommodityCode = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.SummaryCommodityCode); level2Data.MerchantContact = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.MerchantContact); level2Data.MerchantTaxId = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.MerchantTaxId); level2Data.MerchantType = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.MerchantType); level2Data.PurchaserId = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.PurchaserId); level2Data.PurchaserTaxId = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.PurchaserTaxId); level2Data.ShipToCity = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.ShipToCity); level2Data.ShipToCounty = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.ShipToCounty); level2Data.ShipToState_ProvinceCode = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.ShipToState_ProvinceCode); level2Data.ShipToPostalCode = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.ShipToPostalCode); level2Data.ShipToCountryCode = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.ShipToCountryCode); level2Data.ShipFromCity = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.ShipFromCity); level2Data.ShipFromCounty = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.ShipFromCounty); level2Data.ShipFromState_ProvinceCode = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.ShipFromState_ProvinceCode); level2Data.ShipFromPostalCode = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.ShipFromPostalCode); level2Data.ShipFromCountryCode = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.ShipFromCountryCode); level2Data.DiscountAmount = PaymentUtilities.GetPropertyDecimalValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.DiscountAmount); level2Data.MiscCharge = PaymentUtilities.GetPropertyDecimalValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.MiscCharge); level2Data.DutyAmount = PaymentUtilities.GetPropertyDecimalValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.DutyAmount); level2Data.FreightAmount = PaymentUtilities.GetPropertyDecimalValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.FreightAmount); level2Data.IsTaxable = PaymentUtilities.GetPropertyBooleanValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.IsTaxable); level2Data.TotalTaxAmount = PaymentUtilities.GetPropertyDecimalValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.TotalTaxAmount); level2Data.TotalTaxRate = PaymentUtilities.GetPropertyDecimalValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.TotalTaxRate); level2Data.MerchantName = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.MerchantName); level2Data.MerchantStreet = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.MerchantStreet); level2Data.MerchantCity = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.MerchantCity); level2Data.MerchantState = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.MerchantState); level2Data.MerchantCounty = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.MerchantCounty); level2Data.MerchantCountryCode = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.MerchantCountryCode); level2Data.MerchantZip = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.MerchantZip); level2Data.TaxRate = PaymentUtilities.GetPropertyDecimalValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.TaxRate); level2Data.TaxAmount = PaymentUtilities.GetPropertyDecimalValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.TaxAmount); level2Data.TaxDescription = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.TaxDescription); level2Data.TaxTypeIdentifier = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.TaxTypeIdentifier); level2Data.RequesterName = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.RequesterName); level2Data.TotalAmount = PaymentUtilities.GetPropertyDecimalValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.TotalAmount); level2Data.PurchaseCardType = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.PurchaseCardType); level2Data.AmexLegacyDescription1 = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.AmexLegacyDescription1); level2Data.AmexLegacyDescription2 = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.AmexLegacyDescription2); level2Data.AmexLegacyDescription3 = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.AmexLegacyDescription3); level2Data.AmexLegacyDescription4 = PaymentUtilities.GetPropertyStringValue(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.AmexLegacyDescription4); level2Data.TaxDetails = PaymentUtilities.GetTaxDetails(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.TaxDetails); level2Data.MiscellaneousCharges = PaymentUtilities.GetMiscellaneousCharges(level2DataProperties, GenericNamespace.L2Data, L2DataProperties.MiscellaneousCharges); } return(level2Data); }
internal static GenerateCardTokenRequest ConvertFrom(Request request, PaymentProperty[] requiredInteractionProperties) { var tokenizeRequest = new GenerateCardTokenRequest(); var errors = new List <PaymentError>(); tokenizeRequest.ReadBaseProperties(request, errors); PaymentProperty[] cardProperties = null; if (requiredInteractionProperties != null) { // Get card data from interaction form IExtensions handler = SDKExtensions.Extension; if (handler != null) { // We have found the implementation for the form Dictionary <string, PaymentProperty> interactionPropertyDictionary = null; if (handler.GetCreditCardDetails(requiredInteractionProperties, out interactionPropertyDictionary)) { cardProperties = interactionPropertyDictionary.Values.ToArray(); } } else { errors.Add(new PaymentError(ErrorCode.UserAborted, "User aborted data entry form.")); } } else { // Get card data from request. cardProperties = request.Properties; } // Read card data tokenizeRequest.OtherCardProperties = new List <PaymentProperty>(); if (cardProperties != null) { Hashtable hashtable = PaymentProperty.ConvertToHashtable(cardProperties); tokenizeRequest.CardType = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.CardType, errors, ErrorCode.InvalidRequest); if (tokenizeRequest.CardType != null && (!PaymentUtilities.ValidateCardType(tokenizeRequest.SupportedTenderTypes, tokenizeRequest.CardType) || tokenizeRequest.CardType.Equals(Microsoft.Dynamics.Retail.PaymentSDK.Portable.CardType.Debit.ToString(), StringComparison.OrdinalIgnoreCase))) { errors.Add(new PaymentError(ErrorCode.CardTypeNotSupported, string.Format("Card type is not supported: {0}.", tokenizeRequest.CardType))); } tokenizeRequest.CardNumber = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.CardNumber, errors, ErrorCode.InvalidCardNumber); if (tokenizeRequest.CardNumber != null && !HelperUtilities.ValidateBankCardNumber(tokenizeRequest.CardNumber)) { errors.Add(new PaymentError(ErrorCode.InvalidCardNumber, "Invalid card number.")); } tokenizeRequest.ExpirationYear = PaymentUtilities.GetPropertyDecimalValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.ExpirationYear, errors, ErrorCode.InvalidExpirationDate); tokenizeRequest.ExpirationMonth = PaymentUtilities.GetPropertyDecimalValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.ExpirationMonth, errors, ErrorCode.InvalidExpirationDate); if (tokenizeRequest.ExpirationYear.HasValue && tokenizeRequest.ExpirationMonth.HasValue && tokenizeRequest.ExpirationYear >= 0M && tokenizeRequest.ExpirationMonth >= 0M && !PaymentUtilities.ValidateExpirationDate(tokenizeRequest.ExpirationYear.Value, tokenizeRequest.ExpirationMonth.Value)) { errors.Add(new PaymentError(ErrorCode.InvalidExpirationDate, "Invalid expiration date.")); } tokenizeRequest.Name = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Name); tokenizeRequest.StreetAddress = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.StreetAddress); tokenizeRequest.StreetAddress2 = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.StreetAddress2); tokenizeRequest.City = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.City); tokenizeRequest.State = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.State); tokenizeRequest.PostalCode = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.PostalCode); tokenizeRequest.Country = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Country); tokenizeRequest.Phone = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Phone); tokenizeRequest.AccountType = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.AccountType); // Add other custom card properties from interaction properties foreach (var cardProperty in cardProperties) { if (GenericNamespace.PaymentCard.Equals(cardProperty.Namespace) && IsCustomCardProperty(cardProperty.Name)) { tokenizeRequest.OtherCardProperties.Add(cardProperty); } } } // Add other custom card properties from request properties foreach (var requestProperty in request.Properties) { if (GenericNamespace.PaymentCard.Equals(requestProperty.Namespace) && !tokenizeRequest.OtherCardProperties.Any(p => p.Name.Equals(requestProperty.Name, StringComparison.OrdinalIgnoreCase)) && IsCustomCardProperty(requestProperty.Name)) { tokenizeRequest.OtherCardProperties.Add(requestProperty); } } if (errors.Count > 0) { throw new SampleException(errors); } return(tokenizeRequest); }
internal static CaptureRequest ConvertFrom(Request request) { var captureRequest = new CaptureRequest(); var errors = new List <PaymentError>(); captureRequest.ReadBaseProperties(request, errors); // Check authorization response Hashtable hashtable = PaymentProperty.ConvertToHashtable(request.Properties); PaymentProperty authorizationResponsePropertyList = PaymentProperty.GetPropertyFromHashtable(hashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.Properties); Hashtable authorizationHashtable = null; if (authorizationResponsePropertyList == null) { errors.Add(new PaymentError(ErrorCode.InvalidRequest, "Authorization response is missing.")); throw new SampleException(errors); } else { authorizationHashtable = PaymentProperty.ConvertToHashtable(authorizationResponsePropertyList.PropertyList); } // Read card data captureRequest.CardType = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.CardType, errors, ErrorCode.InvalidRequest); captureRequest.IsSwipe = PaymentUtilities.GetPropertyBooleanValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.IsSwiped); if (captureRequest.IsSwipe ?? false) { captureRequest.Track1 = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Track1); captureRequest.Track2 = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Track2); captureRequest.CardNumber = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.CardNumber); if (string.IsNullOrEmpty(captureRequest.CardNumber)) { captureRequest.CardNumber = PaymentUtilities.ParseTrack1ForCardNumber(captureRequest.Track1); if (captureRequest.CardNumber == null) { captureRequest.CardNumber = PaymentUtilities.ParseTrack2ForCardNumber(captureRequest.Track2); } } if (string.IsNullOrEmpty(captureRequest.CardNumber)) { errors.Add(new PaymentError(ErrorCode.InvalidCardTrackData, "Invalid card track data.")); } } else { captureRequest.CardToken = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.CardToken); if (captureRequest.CardToken == null) { captureRequest.CardToken = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.CardToken); if (captureRequest.CardToken == null) { captureRequest.CardNumber = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.CardNumber, errors, ErrorCode.InvalidCardNumber); } } } if (string.IsNullOrWhiteSpace(captureRequest.CardNumber) && string.IsNullOrWhiteSpace(captureRequest.CardToken)) { errors.Add(new PaymentError(ErrorCode.InvalidRequest, string.Format("Neither card number nor card token is provided."))); } captureRequest.Last4Digit = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.Last4Digits); captureRequest.AccountType = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.AccountType); captureRequest.UniqueCardId = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.UniqueCardId); captureRequest.VoiceAuthorizationCode = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.VoiceAuthorizationCode); // Read transaction data captureRequest.Amount = PaymentUtilities.GetPropertyDecimalValue( hashtable, GenericNamespace.TransactionData, TransactionDataProperties.Amount, errors, ErrorCode.InvalidAmount); captureRequest.CurrencyCode = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.TransactionData, TransactionDataProperties.CurrencyCode, errors, ErrorCode.InvalidRequest); captureRequest.PurchaseLevel = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.TransactionData, TransactionDataProperties.PurchaseLevel); captureRequest.Level2Data = PaymentUtilities.GetLevel2Data(hashtable); captureRequest.Level3Data = PaymentUtilities.GetLevel3Data(hashtable); // Read authorization data captureRequest.AuthorizationTransactionType = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.TransactionType, errors, ErrorCode.InvalidRequest); if (captureRequest.AuthorizationTransactionType != null && !TransactionType.Authorize.ToString().Equals(captureRequest.AuthorizationTransactionType, StringComparison.OrdinalIgnoreCase)) { errors.Add(new PaymentError(ErrorCode.InvalidTransaction, "Capture does not support this type of transaction")); } captureRequest.AuthorizationApprovalCode = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ApprovalCode); captureRequest.AuthorizationApprovedAmount = PaymentUtilities.GetPropertyDecimalValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ApprovedAmount, errors, ErrorCode.InvalidRequest); captureRequest.AuthorizationCashbackAmount = PaymentUtilities.GetPropertyDecimalValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.CashBackAmount); captureRequest.AuthorizationProviderMessage = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ProviderMessage); captureRequest.AuthorizationProviderTransactionId = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ProviderTransactionId, errors, ErrorCode.InvalidRequest); captureRequest.AuthorizationResponseCode = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.ResponseCode); captureRequest.AuthorizationResult = PaymentUtilities.GetPropertyStringValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.AuthorizationResult, errors, ErrorCode.InvalidRequest); captureRequest.AuthorizationTransactionDateTime = PaymentUtilities.GetPropertyDateTimeValue( authorizationHashtable, GenericNamespace.AuthorizationResponse, AuthorizationResponseProperties.TransactionDateTime); if (errors.Count > 0) { throw new SampleException(errors); } return(captureRequest); }
internal static AuthorizeRequest ConvertFrom(Request request) { var authorizeRequest = new AuthorizeRequest(); var errors = new List <PaymentError>(); authorizeRequest.ReadBaseProperties(request, errors); // Read card data Hashtable hashtable = PaymentProperty.ConvertToHashtable(request.Properties); authorizeRequest.CardType = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.CardType, errors, ErrorCode.InvalidRequest); if (authorizeRequest.CardType != null && !PaymentUtilities.ValidateCardType(authorizeRequest.SupportedTenderTypes, authorizeRequest.CardType)) { errors.Add(new PaymentError(ErrorCode.CardTypeNotSupported, string.Format("Card type is not supported: {0}.", authorizeRequest.CardType))); } authorizeRequest.IsSwipe = PaymentUtilities.GetPropertyBooleanValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.IsSwipe); if (authorizeRequest.IsSwipe ?? false) { authorizeRequest.Track1 = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Track1); authorizeRequest.Track2 = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Track2); authorizeRequest.CardNumber = PaymentUtilities.ParseTrack1ForCardNumber(authorizeRequest.Track1); if (authorizeRequest.CardNumber == null) { authorizeRequest.CardNumber = PaymentUtilities.ParseTrack2ForCardNumber(authorizeRequest.Track2); } if (authorizeRequest.CardNumber == null) { errors.Add(new PaymentError(ErrorCode.InvalidCardTrackData, "Invalid card track data.")); } decimal expirationYear, expirationMonth; HelperUtilities.ParseTrackDataForExpirationDate(authorizeRequest.Track1 ?? string.Empty, authorizeRequest.Track2 ?? string.Empty, out expirationYear, out expirationMonth); authorizeRequest.ExpirationYear = expirationYear; authorizeRequest.ExpirationMonth = expirationMonth; } else { authorizeRequest.CardToken = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.CardToken); if (authorizeRequest.CardToken == null) { authorizeRequest.CardNumber = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.CardNumber, errors, ErrorCode.InvalidCardNumber); } else { authorizeRequest.Last4Digit = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Last4Digits); } authorizeRequest.ExpirationYear = PaymentUtilities.GetPropertyDecimalValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.ExpirationYear, errors, ErrorCode.InvalidExpirationDate); authorizeRequest.ExpirationMonth = PaymentUtilities.GetPropertyDecimalValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.ExpirationMonth, errors, ErrorCode.InvalidExpirationDate); } if (authorizeRequest.CardNumber != null && !HelperUtilities.ValidateBankCardNumber(authorizeRequest.CardNumber)) { errors.Add(new PaymentError(ErrorCode.InvalidCardNumber, "Invalid card number.")); } if (authorizeRequest.ExpirationYear.HasValue && authorizeRequest.ExpirationMonth.HasValue && authorizeRequest.ExpirationYear >= 0M && authorizeRequest.ExpirationMonth >= 0M && !PaymentUtilities.ValidateExpirationDate(authorizeRequest.ExpirationYear.Value, authorizeRequest.ExpirationMonth.Value)) { errors.Add(new PaymentError(ErrorCode.InvalidExpirationDate, "Invalid expiration date.")); } if (Microsoft.Dynamics.Retail.PaymentSDK.Portable.CardType.Debit.ToString().Equals(authorizeRequest.CardType, StringComparison.OrdinalIgnoreCase)) { authorizeRequest.EncryptedPin = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.EncryptedPin, errors, ErrorCode.CannotVerifyPin); authorizeRequest.AdditionalSecurityData = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.AdditionalSecurityData); } authorizeRequest.CashBackAmount = PaymentUtilities.GetPropertyDecimalValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.CashBackAmount); if (authorizeRequest.CashBackAmount.HasValue && authorizeRequest.CashBackAmount > 0M && !Microsoft.Dynamics.Retail.PaymentSDK.Portable.CardType.Debit.ToString().Equals(authorizeRequest.CardType, StringComparison.OrdinalIgnoreCase)) { errors.Add(new PaymentError(ErrorCode.CashBackNotAvailable, "Cashback is not available.")); } authorizeRequest.CardVerificationValue = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.CardVerificationValue); authorizeRequest.VoiceAuthorizationCode = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.VoiceAuthorizationCode); authorizeRequest.Name = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Name); authorizeRequest.StreetAddress = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.StreetAddress); authorizeRequest.StreetAddress2 = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.StreetAddress2); authorizeRequest.City = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.City); authorizeRequest.State = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.State); authorizeRequest.PostalCode = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.PostalCode); authorizeRequest.Country = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Country); authorizeRequest.Phone = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.Phone); authorizeRequest.AccountType = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.AccountType); authorizeRequest.UniqueCardId = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.PaymentCard, PaymentCardProperties.UniqueCardId); // Read transaction data authorizeRequest.Amount = PaymentUtilities.GetPropertyDecimalValue( hashtable, GenericNamespace.TransactionData, TransactionDataProperties.Amount, errors, ErrorCode.InvalidAmount); authorizeRequest.CurrencyCode = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.TransactionData, TransactionDataProperties.CurrencyCode, errors, ErrorCode.InvalidRequest); if (authorizeRequest.CurrencyCode != null && !PaymentUtilities.ValidateCurrencyCode(authorizeRequest.SupportedCurrencies, authorizeRequest.CurrencyCode)) { errors.Add(new PaymentError(ErrorCode.UnsupportedCurrency, string.Format("Currency code is not supported: {0}.", authorizeRequest.CurrencyCode))); } authorizeRequest.SupportCardTokenization = PaymentUtilities.GetPropertyBooleanValue( hashtable, GenericNamespace.TransactionData, TransactionDataProperties.SupportCardTokenization); authorizeRequest.AllowPartialAuthorization = PaymentUtilities.GetPropertyBooleanValue( hashtable, GenericNamespace.TransactionData, TransactionDataProperties.AllowPartialAuthorization); authorizeRequest.AuthorizationProviderTransactionId = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.TransactionData, TransactionDataProperties.AuthorizationProviderTransactionId); authorizeRequest.PurchaseLevel = PaymentUtilities.GetPropertyStringValue( hashtable, GenericNamespace.TransactionData, TransactionDataProperties.PurchaseLevel); if (errors.Count > 0) { throw new SampleException(errors); } return(authorizeRequest); }
protected void ReadBaseProperties(Request request, List <PaymentError> errors) { if (request == null) { throw new SampleException(ErrorCode.InvalidRequest, "Request is null."); } if (string.IsNullOrWhiteSpace(request.Locale)) { throw new SampleException(ErrorCode.InvalidRequest, "Locale is null or whitespaces."); } else { this.Locale = request.Locale; } if (request.Properties == null || request.Properties.Length == 0) { throw new SampleException(ErrorCode.InvalidRequest, "Request properties is null or empty."); } Hashtable properties = PaymentProperty.ConvertToHashtable(request.Properties); this.AssemblyName = PaymentUtilities.GetPropertyStringValue( properties, GenericNamespace.MerchantAccount, MerchantAccountProperties.AssemblyName, errors, ErrorCode.InvalidMerchantProperty); this.ServiceAccountId = PaymentUtilities.GetPropertyStringValue( properties, GenericNamespace.MerchantAccount, MerchantAccountProperties.ServiceAccountId, errors, ErrorCode.InvalidMerchantProperty); this.MerchantId = PaymentUtilities.GetPropertyStringValue( properties, GenericNamespace.MerchantAccount, MerchantAccountProperties.MerchantId, errors, ErrorCode.InvalidMerchantProperty); this.ProviderId = PaymentUtilities.GetPropertyStringValue( properties, GenericNamespace.MerchantAccount, SampleMerchantAccountProperty.ProviderId, errors, ErrorCode.InvalidMerchantProperty); this.Environment = PaymentUtilities.GetPropertyStringValue( properties, GenericNamespace.MerchantAccount, SampleMerchantAccountProperty.Environment); this.TestString = PaymentUtilities.GetPropertyStringValue( properties, GenericNamespace.MerchantAccount, SampleMerchantAccountProperty.TestString, errors, ErrorCode.InvalidMerchantProperty); this.TestDecimal = PaymentUtilities.GetPropertyDecimalValue( properties, GenericNamespace.MerchantAccount, SampleMerchantAccountProperty.TestDecimal, errors, ErrorCode.InvalidMerchantProperty); this.TestDate = PaymentUtilities.GetPropertyDateTimeValue( properties, GenericNamespace.MerchantAccount, SampleMerchantAccountProperty.TestDate, errors, ErrorCode.InvalidMerchantProperty); this.SupportedCurrencies = PaymentUtilities.GetPropertyStringValue( properties, GenericNamespace.MerchantAccount, MerchantAccountProperties.SupportedCurrencies, errors, ErrorCode.InvalidMerchantProperty); this.SupportedTenderTypes = PaymentUtilities.GetPropertyStringValue( properties, GenericNamespace.MerchantAccount, MerchantAccountProperties.SupportedTenderTypes, errors, ErrorCode.InvalidMerchantProperty); this.IndustryType = PaymentUtilities.GetPropertyStringValue( properties, GenericNamespace.TransactionData, TransactionDataProperties.IndustryType); this.IsTestMode = PaymentUtilities.GetPropertyBooleanValue( properties, GenericNamespace.TransactionData, TransactionDataProperties.IsTestMode); }