Beispiel #1
0
        public void SaleWithInvoiceNumber()
        {
            var card = new HpsGiftCard()
            {
                Value = "5022440000000000098"
            };

            _device.OnMessageSent += (message) =>
            {
                Assert.IsNotNull(message);
                Assert.IsTrue(message.StartsWith("[STX]T06[FS]1.35[FS]01[FS]800[FS]5022440000000000098[FS]4[US]1234[FS][FS][ETX]"));
            };

            var details = new HpsTransactionDetails {
                InvoiceNumber = "1234"
            };

            var response = _device.GiftSale(4, 8m)
                           .WithCard(card)
                           .WithDetails(details)
                           .Execute();

            Assert.IsNotNull(response);
            Assert.AreEqual("0", response.ResponseCode);
        }
Beispiel #2
0
        public void authorize_tagdata_issuer_response()
        {
            var trackData = new HpsTrackData {
                Value = ";4761739001010036=15122011184404889?"
            };
            var tagData = new HpsTagDataType
            {
                TagData = "9F4005F000F0A0019F02060000000025009F03060000000000009F2608D90A06501B48564E82027C005F3401019F360200029F0702FF009F0802008C9F0902008C9F34030403029F2701809F0D05F0400088009F0E0508000000009F0F05F0400098005F280208409F390105FFC605DC4000A800FFC7050010000000FFC805DC4004F8009F3303E0B8C89F1A0208409F350122950500000080005F2A0208409A031409109B02E8009F21030811539C01009F37045EED3A8E4F07A00000000310109F0607A00000000310108407A00000000310109F100706010A03A400029F410400000001",
                Source  = TagDataTypeTagValuesSource.chip
            };
            var details = new HpsTransactionDetails
            {
                ClientTransactionId = 1234567890,
                InvoiceNumber       = "1234"
            };
            var response = _creditService.Authorize(25.00m)
                           .WithTrackData(trackData)
                           .WithTagData(tagData)
                           .WithAllowDuplicates(true)
                           .WithDetails(details)
                           .Execute();

            Assert.IsNotNull(response);
            Assert.IsNotNull(response.EMVIssuerResp);
        }
 internal long?GetClientTransactionId(HpsTransactionDetails details)
 {
     if (details != null)
     {
         return(details.ClientTransactionId);
     }
     return(null);
 }
 internal AdditionalTxnFieldsType HydrateAdditionalTxnFields(HpsTransactionDetails details)
 {
     return(details == null ? null : new AdditionalTxnFieldsType {
         Description = details.Memo,
         CustomerID = details.CustomerId,
         InvoiceNbr = details.InvoiceNumber
     });
 }
Beispiel #5
0
        /// <summary>
        /// A Debit Reversal transaction reverses a Debit Charge or Debit Return transaction.
        /// </summary>
        /// <param name="transactionId">The gateway transaciton ID of the charge to be reversed.</param>
        /// <param name="trackData">The data read from the card by the card reader.</param>
        /// <param name="amount">Authorization amount.</param>
        /// <param name="authorizedAmount">Settlement amount or New Authorization amount after reversal occures.</param>
        /// <param name="encryptionData">E3 encryption data group.</param>
        /// <param name="details">Group containing additional transaction fields to be included in detail reporting.</param>
        /// <param name="clientTransactionId">The client transaction ID.</param>
        /// <returns>The reversal result.</returns>
        public HpsTransaction Reverse(int transactionId, decimal amount, string trackData, decimal?authorizedAmount = null,
                                      HpsEncryptionData encryptionData = null, HpsTransactionDetails details = null, long?clientTransactionId = null)
        {
            HpsInputValidation.CheckAmount(amount);

            /* Build the transaction request. */
            var transaction = new PosRequestVer10Transaction
            {
                Item = new PosDebitReversalReqType
                {
                    Block1 = new DebitReversalReqBlock1Type
                    {
                        GatewayTxnId          = transactionId,
                        GatewayTxnIdSpecified = true,
                        TrackData             = trackData,
                        Amt                 = amount,
                        EncryptionData      = HydrateEncryptionData(encryptionData),
                        AdditionalTxnFields = HydrateAdditionalTxnFields(details)
                    }
                },
                ItemElementName = ItemChoiceType1.DebitReversal
            };

            if (authorizedAmount.HasValue)
            {
                var block = ((PosDebitReversalReqType)transaction.Item).Block1;
                block.AuthAmt          = authorizedAmount.Value;
                block.AuthAmtSpecified = true;
            }

            var rsp = DoTransaction(transaction, clientTransactionId).Ver10;

            HpsGatewayResponseValidation.CheckResponse(rsp, ItemChoiceType2.DebitReversal);

            long?clientTxnId = null;

            if (rsp.Header.ClientTxnId != default(long))
            {
                clientTxnId = rsp.Header.ClientTxnId;
            }

            return(new HpsTransaction
            {
                Header = HydrateTransactionHeader(rsp.Header),
                TransactionId = rsp.Header.GatewayTxnId,
                ClientTransactionId = clientTxnId,
                ResponseCode = "00",
                ResponseText = string.Empty
            });
        }
Beispiel #6
0
        /// <summary>
        /// The Debit Add Value transaction adds value to a stored value card. The transaction is placed in the current
        /// open batch. If a batch is not open, this transaction creates an open batch.
        /// </summary>
        /// <param name="amount">Authorization amount.</param>
        /// <param name="currency">Currency ("usd")</param>
        /// <param name="trackData">Track data read from the card by the card reader.</param>
        /// <param name="pinBlock">PIN block.</param>
        /// <param name="allowDuplicates">Indicates whether to allow duplicate transactions.</param>
        /// <param name="cardHolder">Card holder information.</param>
        /// <param name="encryptionData">E3 encryption data group.</param>
        /// <param name="details">Group containing additional transaction fields to be included in detail reporting.</param>
        /// <param name="clientTransactionId">Optional client transaction ID.</param>
        /// <returns>The AddValue (Authorization) response.</returns>
        public HpsAuthorization AddValue(decimal amount, string currency, string trackData, string pinBlock,
                                         HpsEncryptionData encryptionData = null, bool allowDuplicates     = false, HpsCardHolder cardHolder = null,
                                         HpsTransactionDetails details    = null, long?clientTransactionId = null)
        {
            HpsInputValidation.CheckAmount(amount);
            HpsInputValidation.CheckCurrency(currency);

            /* Build the transaction request. */
            var transaction = new PosRequestVer10Transaction
            {
                Item = new PosDebitAddValueReqType
                {
                    Block1 = new DebitAddValueReqBlock1Type
                    {
                        TrackData         = trackData,
                        AllowDup          = allowDuplicates ? booleanType.Y : booleanType.N,
                        AllowDupSpecified = true,
                        CardHolderData    = cardHolder == null ? null : HydrateCardHolderData(cardHolder),
                        Amt                 = amount,
                        PinBlock            = pinBlock,
                        EncryptionData      = HydrateEncryptionData(encryptionData),
                        AdditionalTxnFields = HydrateAdditionalTxnFields(details)
                    }
                },
                ItemElementName = ItemChoiceType1.DebitAddValue
            };

            var rsp = DoTransaction(transaction, clientTransactionId).Ver10;

            HpsGatewayResponseValidation.CheckResponse(rsp, ItemChoiceType2.DebitAddValue);

            var addValueRsp = (AuthRspStatusType)rsp.Transaction.Item;

            HpsIssuerResponseValidation.CheckResponse(rsp.Header.GatewayTxnId, addValueRsp.RspCode, addValueRsp.RspText);

            return(HydrateAuthorization <HpsAuthorization>(rsp));
        }
Beispiel #7
0
 public CreditRefundBuilder WithDetails(HpsTransactionDetails value)
 {
     this.details = value;
     return(this);
 }
 public CreditAuthBuilder WithDetails(HpsTransactionDetails details)
 {
     this.details = details;
     return(this);
 }
 public CreditOfflineChargeBuilder WithDetails(HpsTransactionDetails details)
 {
     this.details = details;
     return(this);
 }
Beispiel #10
0
 public GiftSaleBuilder WithDetails(HpsTransactionDetails details)
 {
     this.details = details;
     return(this);
 }
 public DebitReverseBuilder WithDetails(HpsTransactionDetails value)
 {
     this.details = value;
     return(this);
 }