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); }
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 }); }
/// <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 }); }
/// <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)); }
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); }
public GiftSaleBuilder WithDetails(HpsTransactionDetails details) { this.details = details; return(this); }
public DebitReverseBuilder WithDetails(HpsTransactionDetails value) { this.details = value; return(this); }