public Transaction ProcessAuthorization(AuthorizationBuilder builder) { var request = new TransitRequest(MapTransactionType(builder)) .Set("developerID", DeveloperId) .Set("deviceID", DeviceId) .Set("transactionKey", TransactionKey) .Set("transactionAmount", builder.Amount.ToCurrencyString()); request.Set("cardDataSource", MapCardDataSource(builder)); if (builder.PaymentMethod is ICardData card) { request.Set("cardNumber", card.Number) .Set("expirationDate", card.ShortExpiry) .Set("cvv2", card.Cvn) .Set("cardPresentDetail", card.CardPresent ? "CARD_PRESENT" : "CARD_NOT_PRESENT") .Set("cardholderPresentDetail", card.CardPresent ? "CARDHOLDER_PRESENT" : "CARDHOLDER_NOT_PRESENT_ELECTRONIC_COMMERCE") .Set("cardDataInputMode", card.CardPresent ? "KEY_ENTERED_INPUT" : "PAN_ENTRY_ELECTRONIC_COMMERCE_INCLUDING_REMOTE_CHIP") .Set("cardholderAuthenticationMethod", "UNKNOWN"); } else if (builder.PaymentMethod is ITrackData track) { request.Set(track.TrackNumber.Equals(TrackNumber.TrackTwo) ? "track2Data" : "track1Data", track.TrackData); request.Set("cardPresentDetail", "CARD_PRESENT") .Set("cardholderPresentDetail", "CARDHOLDER_PRESENT") .Set("cardDataInputMode", "MAGNETIC_STRIPE_READER_INPUT") .Set("cardholderAuthenticationMethod", "UNKNOWN"); if (builder.HasEmvFallbackData) { request.Set("emvFallbackCondition", EnumConverter.GetMapping(Target.Transit, builder.EmvFallbackCondition)) .Set("lastChipRead", EnumConverter.GetMapping(Target.Transit, builder.EmvLastChipRead)) .Set("paymentAppVersion", builder.PaymentApplicationVersion ?? "unspecified"); } } // PIN Debit if (builder.PaymentMethod is IPinProtected pinProtected) { request.Set("pin", pinProtected.PinBlock.Substring(0, 16)) .Set("pinKsn", pinProtected.PinBlock.Substring(16)); } // Acceptor Config request.Set("terminalCapability", EnumConverter.GetMapping(Target.Transit, AcceptorConfig.CardDataInputCapability)) .Set("terminalCardCaptureCapability", AcceptorConfig.CardCaptureCapability ? "CARD_CAPTURE_CAPABILITY" : "NO_CAPABILITY") .Set("terminalOperatingEnvironment", EnumConverter.GetMapping(Target.Transit, AcceptorConfig.OperatingEnvironment)) .Set("cardholderAuthenticationEntity", EnumConverter.GetMapping(Target.Transit, AcceptorConfig.CardHolderAuthenticationEntity)) .Set("cardDataOutputCapability", EnumConverter.GetMapping(Target.Transit, AcceptorConfig.CardDataOutputCapability)) .Set("terminalAuthenticationCapability", EnumConverter.GetMapping(Target.Transit, AcceptorConfig.CardHolderAuthenticationCapability)) .Set("terminalOutputCapability", EnumConverter.GetMapping(Target.Transit, AcceptorConfig.TerminalOutputCapability)) .Set("maxPinLength", EnumConverter.GetMapping(Target.Transit, AcceptorConfig.PinCaptureCapability)); string response = DoTransaction(request.BuildRequest(builder)); return(MapResponse(builder, response)); }
public Transaction ManageTransaction(ManagementBuilder builder) { var request = new TransitRequest(MapTransactionType(builder)) .Set("developerID", DeveloperId) .Set("deviceID", DeviceId) .Set("transactionKey", TransactionKey) .Set("transactionAmount", builder.Amount.ToCurrencyString()) .Set("tip", builder.Gratuity.ToCurrencyString()) .Set("transactionID", builder.TransactionId) .Set("isPartialShipment", builder.MultiCapture ? "Y" : null); string response = DoTransaction(request.BuildRequest(builder)); return(MapResponse(builder, response)); }