public override HpsGiftCardResponse Execute() { base.Execute(); HpsInputValidation.CheckAmount(amount.Value); var block1 = new GiftCardRewardReqBlock1Type { Amt = amount.Value, CardData = service.HydrateGiftCardData(card), Currency = currency }; block1.GratuityAmtInfoSpecified = gratuity.HasValue; if (block1.GratuityAmtInfoSpecified) { block1.GratuityAmtInfo = gratuity.Value; } block1.TaxAmtInfoSpecified = tax.HasValue; if (tax != null) { block1.TaxAmtInfo = tax.Value; } var transaction = new PosRequestVer10Transaction { Item = new PosGiftCardRewardReqType { Block1 = block1 }, ItemElementName = ItemChoiceType1.GiftCardReward }; var response = service.SubmitTransaction(transaction); return(new HpsGiftCardResponse().FromResponse(response)); }
public PosResponseVer10 SubmitTransaction(PosRequestVer10Transaction transaction, long?clientTransactionId = null) { var rsp = DoTransaction(transaction, clientTransactionId).Ver10; HpsGatewayResponseValidation.CheckResponse(rsp, (ItemChoiceType2)transaction.ItemElementName); string rspCode = string.Empty, rspText = string.Empty; if (rsp.Transaction != null) { var trans = rsp.Transaction.Item; var rspCodeField = trans.GetType().GetProperty("RspCode"); if (rspCodeField != null) { rspCode = rspCodeField.GetValue(trans).ToString(); } var rspTextField = transaction.GetType().GetProperty("RspText"); if (rspTextField != null) { rspText = rspTextField.GetValue(trans).ToString(); } } HpsIssuerResponseValidation.CheckResponse(rsp.Header.GatewayTxnId, rspCode, rspText); return(rsp); }
/// <summary> /// An <b>AddValue</b> transaction is used to add an amount to the value of an active gift card. /// </summary> /// <param name="amount">The amount (in dollars).</param> /// <param name="currency">Transaction currency.</param> /// <param name="giftCard">The gift card information.</param> /// <returns>The <see cref="HpsGiftCardAddValue"/>.</returns> public HpsGiftCardResponse AddValue(decimal amount, string currency, HpsGiftCard giftCard) { HpsInputValidation.CheckAmount(amount); HpsInputValidation.CheckCurrency(currency); /* Build the transaction request. */ var transaction = new PosRequestVer10Transaction { Item = new PosGiftCardAddValueReqType { Block1 = new GiftCardAddValueReqBlock1Type { Amt = amount, CardData = new GiftCardDataType { Item = giftCard.Value, ItemElementName = giftCard.ValueType, EncryptionData = (giftCard.EncryptionData == null) ? null : new EncryptionDataType { EncryptedTrackNumber = giftCard.EncryptionData.EncryptedTrackNumber, KSN = giftCard.EncryptionData.Ksn, KTB = giftCard.EncryptionData.Ktb, Version = giftCard.EncryptionData.Version } } } }, ItemElementName = ItemChoiceType1.GiftCardAddValue }; /* Submit the transaction. */ return(SubmitAddValue(transaction)); }
public override HpsTransaction Execute() { base.Execute(); var request = new PosCreditTxnEditReqType { GatewayTxnId = transactionId.Value }; request.AmtSpecified = amount.HasValue; if (request.AmtSpecified) { request.Amt = amount.Value; } request.GratuityAmtInfoSpecified = gratuity.HasValue; if (request.GratuityAmtInfoSpecified) { request.GratuityAmtInfo = gratuity.Value; } var transaction = new PosRequestVer10Transaction { Item = request, ItemElementName = ItemChoiceType1.CreditTxnEdit }; var response = service.SubmitTransaction(transaction, clientTransactionId); HpsTransaction trans = new HpsTransaction().FromResponse(response); trans.ResponseCode = "00"; trans.ResponseText = string.Empty; return(trans); }
internal static PosResponse DoTransaction(IHpsServicesConfig config, PosRequestVer10Transaction transaction, long?clientTransactionId = null) { var req = new PosRequest { Ver10 = new PosRequestVer10 { Header = new PosRequestVer10Header { SecretAPIKey = config.SecretApiKey, LicenseId = config.LicenseId, SiteId = config.SiteId, DeviceId = config.DeviceId, VersionNbr = config.VersionNumber, UserName = config.UserName, Password = config.Password, DeveloperID = config.DeveloperId, SiteTrace = config.SiteTrace }, Transaction = transaction } }; if (clientTransactionId.HasValue) { req.Ver10.Header.ClientTxnId = clientTransactionId.Value; req.Ver10.Header.ClientTxnIdSpecified = true; } using (var client = new PosGatewayService { Url = HpsConfiguration.SoapServiceUri }) { return(client.DoTransaction(req)); } }
/// <summary>Helper method for activate transactions (supporting multiple activation methods).</summary> /// <param name="transaction">The gateway response.</param> /// <returns>The <see cref="HpsGiftCardActivate"/>.</returns> private HpsGiftCardResponse SubmitActivation(PosRequestVer10Transaction transaction) { var rsp = DoTransaction(transaction).Ver10; HpsGatewayResponseValidation.CheckResponse(rsp, ItemChoiceType2.GiftCardActivate); var activationRsp = (PosGiftCardActivateRspType)rsp.Transaction.Item; HpsIssuerResponseValidation.CheckResponse(rsp.Header.GatewayTxnId, activationRsp.RspCode.ToString(CultureInfo.InvariantCulture), activationRsp.RspText, HpsCardType.Gift); /* Start to fill out a new transaction response (HpsGiftCardTransactionResponse). */ var activation = new HpsGiftCardResponse { Header = HydrateTransactionHeader(rsp.Header), TransactionId = rsp.Header.GatewayTxnId, AuthorizationCode = activationRsp.AuthCode, BalanceAmount = activationRsp.BalanceAmt, PointsBalanceAmount = activationRsp.PointsBalanceAmt, Rewards = activationRsp.Rewards, Notes = activationRsp.Notes, ResponseCode = activationRsp.RspCode.ToString(CultureInfo.InvariantCulture), ResponseText = activationRsp.RspText }; return(activation); }
public override HpsGiftCardAlias Execute() { base.Execute(); var block1 = new GiftCardAliasReqBlock1Type { Action = action, Alias = alias }; if (card != null) { block1.CardData = service.HydrateGiftCardData(card); } var transaction = new PosRequestVer10Transaction { Item = new PosGiftCardAliasReqType { Block1 = block1 }, ItemElementName = ItemChoiceType1.GiftCardAlias }; var response = service.SubmitTransaction(transaction); return(new HpsGiftCardAlias().FromResponse(response)); }
/// <summary> /// A <b>Batch Close</b> transaction instructs the Heartland POS Gateway to close the current open /// batch and settle it. If a batch is not open, an error will be returned. /// </summary> /// <returns>The HPS batch.</returns> public HpsBatch CloseBatch() { /* Build the transaction request. */ var transaction = new PosRequestVer10Transaction { ItemElementName = ItemChoiceType1.BatchClose, Item = "BatchClose" }; /* Submit the transaction. */ ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; var rsp = DoTransaction(transaction).Ver10; HpsGatewayResponseValidation.CheckResponse(rsp, ItemChoiceType2.BatchClose); var batchClose = (PosBatchCloseRspType)rsp.Transaction.Item; return(new HpsBatch { Id = batchClose.BatchId, SequenceNumber = batchClose.BatchSeqNbr, TotalAmount = batchClose.TotalAmt, TransactionCount = batchClose.TxnCnt }); }
public override HpsAuthorization Execute() { base.Execute(); HpsInputValidation.CheckAmount(amount.Value); var block1 = new CreditAdditionalAuthReqBlock1Type { Amt = amount.Value, AllowDup = allowDuplicates ? booleanType.Y : booleanType.N, GatewayTxnId = transactionId, GatewayTxnIdSpecified = true }; if (details != null) { block1.AdditionalTxnFields = service.HydrateAdditionalTxnFields(details); } if (txnDescriptor != null) { block1.TxnDescriptor = txnDescriptor; } var transaction = new PosRequestVer10Transaction { Item = new PosCreditAdditionalAuthReqType { Block1 = block1 }, ItemElementName = ItemChoiceType1.CreditAdditionalAuth }; long?clientTransactionId = service.GetClientTransactionId(details); var response = service.SubmitTransaction(transaction, clientTransactionId); return(new HpsAuthorization().FromResponse(response)); }
public override HpsCheckResponse Execute() { base.Execute(); var block1 = new CheckVoidReqBlock1Type { GatewayTxnIdSpecified = transactionId.HasValue, ClientTxnIdSpecified = clientTransactionId.HasValue }; if (block1.GatewayTxnIdSpecified) { block1.GatewayTxnId = transactionId.Value; } if (block1.ClientTxnIdSpecified) { block1.ClientTxnId = clientTransactionId.Value; } var transaction = new PosRequestVer10Transaction { Item = new PosCheckVoidReqType { Block1 = block1 }, ItemElementName = ItemChoiceType1.CheckVoid }; return(service.SubmitTransaction(transaction)); }
public override HpsDebitAuthorization Execute() { base.Execute(); HpsInputValidation.CheckAmount(amount.Value); var block1 = new DebitSaleReqBlock1Type { Amt = amount.Value, AllowDup = allowDuplicates ? booleanType.Y : booleanType.N, AllowDupSpecified = true, AllowPartialAuth = allowPartialAuth ? booleanType.Y : booleanType.N, AllowPartialAuthSpecified = true }; if (trackData != null) { block1.TrackData = trackData.Value; if (trackData.EncryptionData != null) { block1.EncryptionData = service.HydrateEncryptionData(trackData.EncryptionData); } } if (token != null) { block1.TokenValue = token; } if (pinBlock != null) { block1.PinBlock = pinBlock; } if (cardHolder != null) { block1.CardHolderData = service.HydrateCardHolderData(cardHolder); } block1.CashbackAmtInfoSpecified = cashBack.HasValue; if (block1.CashbackAmtInfoSpecified) { block1.CashbackAmtInfo = cashBack.Value; } if (details != null) { block1.AdditionalTxnFields = service.HydrateAdditionalTxnFields(details); } var transaction = new PosRequestVer10Transaction { Item = new PosDebitSaleReqType { Block1 = block1 }, ItemElementName = ItemChoiceType1.DebitSale }; var clientTxnId = service.GetClientTransactionId(details); return(service.SubmitTransaction(transaction, clientTxnId)); }
/// <summary> /// A <b>Void</b> transaction is used to cancel a previously successful sale transaction. The original sale transaction /// can be identified by the GatewayTxnid of the original or by the ClientTxnId of the original if provided on the original /// Sale transaction. /// </summary> /// <param name="transactionId">The transaction ID of charge to void.</param> /// <param name="clientTransactionId">The client transaction ID of charge to void.</param> /// <returns>The <see cref="HpsGiftCardActivate"/>.</returns> public HpsCheckResponse Void(long?transactionId = null, long?clientTransactionId = null) { if ((!transactionId.HasValue && !clientTransactionId.HasValue) || (transactionId.HasValue && clientTransactionId.HasValue)) { throw new ArgumentException(Resource.HpsCheckService_Invalid_Input_Id, "transactionId"); } /* Build the transaction request. */ var transaction = new PosRequestVer10Transaction { Item = new PosCheckVoidReqType { Block1 = new CheckVoidReqBlock1Type() }, ItemElementName = ItemChoiceType1.CheckVoid }; var block1 = ((PosCheckVoidReqType)transaction.Item).Block1; if (transactionId.HasValue) { block1.GatewayTxnId = transactionId.Value; block1.GatewayTxnIdSpecified = true; block1.ClientTxnIdSpecified = false; } else { block1.GatewayTxnIdSpecified = false; block1.ClientTxnId = clientTransactionId.Value; block1.ClientTxnIdSpecified = true; } /* Submit the transaction. */ var rsp = DoTransaction(transaction).Ver10; HpsGatewayResponseValidation.CheckResponse(rsp, ItemChoiceType2.CheckVoid); var voidRsp = (PosCheckVoidRspType)rsp.Transaction.Item; if (voidRsp.RspCode != 0) { throw new HpsCheckException(rsp.Header.GatewayTxnId, GetResponseDetails(voidRsp.CheckRspInfo), voidRsp.RspCode, voidRsp.RspMessage); } /* Start to fill out a new transaction response (HpsCheckResponse). */ var response = new HpsCheckResponse { Header = HydrateTransactionHeader(rsp.Header), TransactionId = rsp.Header.GatewayTxnId, AuthorizationCode = voidRsp.AuthCode, ResponseCode = voidRsp.RspCode.ToString(CultureInfo.InvariantCulture), ResponseText = voidRsp.RspMessage, Details = GetResponseDetails(voidRsp.CheckRspInfo) }; return(response); }
public override HpsRefund Execute() { base.Execute(); var block1 = new CreditReturnReqBlock1Type { AllowDup = allowDuplicates ? booleanType.Y : booleanType.N, AllowDupSpecified = true, Amt = amount.Value }; if (cardHolder != null) { block1.CardHolderData = service.HydrateCardHolderData(cardHolder); } if (card != null) { block1.CardData = new CardDataType { Item = service.HydrateCardManualEntry(card) }; } else if (token != null) { block1.CardData = new CardDataType { Item = service.HydrateTokenData(token) }; } else if (transactionId != null) { block1.GatewayTxnId = transactionId.Value; block1.GatewayTxnIdSpecified = true; } if (details != null) { block1.AdditionalTxnFields = service.HydrateAdditionalTxnFields(details); } if (directMarketData != null) { block1.DirectMktData = service.HydrateDirectMktData(directMarketData); } var transaction = new PosRequestVer10Transaction { Item = new PosCreditReturnReqType { Block1 = block1 }, ItemElementName = ItemChoiceType1.CreditReturn }; var clientTransactionId = service.GetClientTransactionId(details); var response = service.SubmitTransaction(transaction, clientTransactionId); HpsRefund trans = new HpsRefund().FromResponse(response); trans.ResponseCode = "00"; trans.ResponseText = string.Empty; return(trans); }
/// <summary>Submit a refund transaction.</summary> /// <param name="transaction">The GetAttachments transaction.</param> /// <returns>The <see cref="HpsAttachment"/>.</returns> private HpsAttachment SubmitGet(PosRequestVer10Transaction transaction) { var rsp = DoTransaction(transaction).Ver10; ProcessChargeGatewayResponse(rsp, ItemChoiceType2.GetAttachments); HpsAttachment resp = new HpsAttachment(); resp.FromResponse(rsp); return(resp); }
public override HpsAccountVerify Execute() { base.Execute(); var block1 = new CreditAccountVerifyBlock1Type(); if (cardHolder != null) { block1.CardHolderData = service.HydrateCardHolderData(cardHolder); } var cardData = new CardDataType(); if (card != null) { cardData.Item = service.HydrateCardManualEntry(card, cardPresent, readerPresent); if (card.EncryptionData != null) { cardData.EncryptionData = service.HydrateEncryptionData(card.EncryptionData); } } if (token != null) { cardData.Item = service.HydrateTokenData(token, cardPresent, readerPresent); } if (trackData != null) { cardData.Item = service.HydrateCardTrackData(trackData); if (trackData.EncryptionData != null) { cardData.EncryptionData = service.HydrateEncryptionData(trackData.EncryptionData); } } cardData.TokenRequest = requestMultiUseToken ? booleanType.Y : booleanType.N; block1.CardData = cardData; if (tagData != null) { block1.TagData = service.HydrateTagData(tagData); } var transaction = new PosRequestVer10Transaction { Item = new PosCreditAccountVerifyReqType { Block1 = block1 }, ItemElementName = ItemChoiceType1.CreditAccountVerify }; var response = service.SubmitTransaction(transaction, clientTransactionId); return(new HpsAccountVerify().FromResponse(response)); }
public HpsCheckResponse BuildTransaction(checkActionType action, HpsCheck check, decimal?amount, long?clientTransactionId = null, bool checkVerify = false, bool achVerify = false) { if (amount.HasValue) { HpsInputValidation.CheckAmount(amount.Value); } if (check.SecCode == "CCD" && (check.CheckHolder == null || check.CheckHolder.CheckName == null)) { throw new HpsInvalidRequestException(HpsExceptionCodes.MissingCheckName, "For SEC Code CCD the check name is required.", "CheckName"); } var block1 = new CheckSaleReqBlock1Type { CheckAction = action, SECCode = check.SecCode, AccountInfo = HydrateCheckData(check), AmtSpecified = amount.HasValue, CheckTypeSpecified = check.CheckType.HasValue, DataEntryModeSpecified = check.DataEntryMode.HasValue, VerifyInfo = new VerifyInfoType { ACHVerify = achVerify ? booleanType.Y : booleanType.N, ACHVerifySpecified = true, CheckVerify = checkVerify ? booleanType.Y : booleanType.N, CheckVerifySpecified = true } }; if (block1.AmtSpecified) { block1.Amt = amount.Value; } if (block1.CheckTypeSpecified) { block1.CheckType = check.CheckType.Value; } if (block1.DataEntryModeSpecified) { block1.DataEntryMode = check.DataEntryMode.Value; } if (check.CheckHolder != null) { block1.ConsumerInfo = HydrateConsumerInfo(check.CheckHolder); } var transaction = new PosRequestVer10Transaction { Item = new PosCheckSaleReqType { Block1 = block1 }, ItemElementName = ItemChoiceType1.CheckSale }; return(SubmitTransaction(transaction, clientTransactionId)); }
internal HpsEbtAuthorization SubmitTransaction(PosRequestVer10Transaction transaction, long?clientTransactionId = null) { var rsp = DoTransaction(transaction, clientTransactionId).Ver10; HpsGatewayResponseValidation.CheckResponse(rsp, (ItemChoiceType2)transaction.ItemElementName); var authResponse = (AuthRspStatusType)rsp.Transaction.Item; HpsIssuerResponseValidation.CheckResponse(rsp.Header.GatewayTxnId, authResponse.RspCode, authResponse.RspText); return(new HpsEbtAuthorization().FromResponse(rsp)); }
public override HpsAuthorization Execute() { base.Execute(); var block1 = new PrePaidAddValueReqBlock1Type { Amt = amount.Value, AllowDup = allowDuplicates ? booleanType.Y : booleanType.N, AllowDupSpecified = true }; var cardData = new CardDataType(); if (card != null) { cardData.Item = service.HydrateCardManualEntry(card); if (card.EncryptionData != null) { cardData.EncryptionData = service.HydrateEncryptionData(card.EncryptionData); } } else if (trackData != null) { cardData.Item = service.HydrateCardTrackData(trackData); if (trackData.EncryptionData != null) { cardData.EncryptionData = service.HydrateEncryptionData(trackData.EncryptionData); } } else if (token != null) { cardData.Item = service.HydrateTokenData(token); } cardData.TokenRequest = requestMultiUseToken ? booleanType.Y : booleanType.N; block1.CardData = cardData; if (cardHolder != null) { block1.CardHolderData = service.HydrateCardHolderData(cardHolder); } var transaction = new PosRequestVer10Transaction { Item = new PosPrePaidAddValueReqType { Block1 = block1 }, ItemElementName = ItemChoiceType1.PrePaidAddValue }; var response = service.SubmitTransaction(transaction); return(new HpsAuthorization().FromResponse(response)); }
/// <summary> /// A <b>Alias</b> transaction is used to manage an account number alias, such as a phone number, /// for a stored value account. The transaction can be used to Add an alias to an existing account, /// Delete an alias from an existing account or Create a new stored value account and add an alias /// to the new account. /// </summary> /// <param name="action">Type of Alias action requested.</param> /// <param name="giftCard">The gift card information (leave null for CREATE action).</param> /// <param name="alias">Alternate identifier used to reference a stored value account.</param> /// <returns>The <see cref="HpsGiftCardAlias"/>.</returns> public HpsGiftCardAlias Alias(HpsGiftCardAliasAction action, HpsGiftCard giftCard, string alias) { var gatewayAction = GiftCardAliasReqBlock1TypeAction.ADD; switch (action) { case HpsGiftCardAliasAction.Create: gatewayAction = GiftCardAliasReqBlock1TypeAction.CREATE; break; case HpsGiftCardAliasAction.Delete: gatewayAction = GiftCardAliasReqBlock1TypeAction.DELETE; break; } /* Build the transaction request. */ var transaction = new PosRequestVer10Transaction { Item = new PosGiftCardAliasReqType { Block1 = new GiftCardAliasReqBlock1Type { Action = gatewayAction, Alias = alias, CardData = HydrateGiftCardData(giftCard) } }, ItemElementName = ItemChoiceType1.GiftCardAlias }; /* Submit the transaction. */ var rsp = DoTransaction(transaction).Ver10; HpsGatewayResponseValidation.CheckResponse(rsp, ItemChoiceType2.GiftCardAlias); var aliasRsp = (PosGiftCardAliasRspType)rsp.Transaction.Item; HpsIssuerResponseValidation.CheckResponse(rsp.Header.GatewayTxnId, aliasRsp.RspCode.ToString(CultureInfo.InvariantCulture), aliasRsp.RspText, HpsCardType.Gift); /* Start to fill out a new transaction response (HpsGiftCardAddValue). */ var response = new HpsGiftCardAlias { Header = HydrateTransactionHeader(rsp.Header), TransactionId = rsp.Header.GatewayTxnId, GiftCard = new HpsGiftCard { Value = aliasRsp.CardData.CardNbr }, ResponseCode = aliasRsp.RspCode.ToString(CultureInfo.InvariantCulture), ResponseText = aliasRsp.RspText }; return(response); }
public override HpsEbtAuthorization Execute() { base.Execute(); var block1 = new EBTFSVoucherReqBlock1Type { Amt = amount.Value, AllowDup = allowDuplicates ? booleanType.Y : booleanType.N, AllowDupSpecified = true }; block1.ElectronicVoucherSerialNbr = serialNumber; block1.VoucherApprovalCd = approvalCode; block1.ExprDate = expirationDate; block1.PrimaryAcctNbr = primaryAccountNumber; var cardData = new CardDataType(); if (card != null) { cardData.Item = service.HydrateCardManualEntry(card); if (card.EncryptionData != null) { cardData.EncryptionData = service.HydrateEncryptionData(card.EncryptionData); } } if (token != null) { cardData.Item = service.HydrateTokenData(token); } if (trackData != null) { cardData.Item = service.HydrateCardTrackData(trackData); if (trackData.EncryptionData != null) { cardData.EncryptionData = service.HydrateEncryptionData(trackData.EncryptionData); } } cardData.TokenRequest = requestMultiUseToken ? booleanType.Y : booleanType.N; block1.CardData = cardData; block1.PinBlock = pinBlock; var transaction = new PosRequestVer10Transaction { Item = new PosEBTFSVoucherReqType { Block1 = block1 }, ItemElementName = ItemChoiceType1.EBTVoucherPurchase }; return(service.SubmitTransaction(transaction)); }
/// <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 }); }
public override HpsReversal Execute() { base.Execute(); var block1 = new CreditReversalReqBlock1Type { Amt = amount.Value, }; block1.AuthAmtSpecified = authAmount.HasValue; if (block1.AuthAmtSpecified) { block1.AuthAmt = authAmount.Value; } if (card != null) { block1.CardData = new CardDataType { Item = service.HydrateCardManualEntry(card) }; } else if (token != null) { block1.CardData = new CardDataType { Item = service.HydrateTokenData(token) }; } else if (transactionId != null) { block1.GatewayTxnId = transactionId.Value; block1.GatewayTxnIdSpecified = true; } if (details != null) { block1.AdditionalTxnFields = service.HydrateAdditionalTxnFields(details); } var transaction = new PosRequestVer10Transaction { Item = new PosCreditReversalReqType { Block1 = block1 }, ItemElementName = ItemChoiceType1.CreditReversal }; var clientTransactionId = service.GetClientTransactionId(details); var response = service.SubmitTransaction(transaction, clientTransactionId); return(new HpsReversal().FromResponse(response)); }
public override HpsReportTransactionDetails Execute() { base.Execute(); var transaction = new PosRequestVer10Transaction { Item = new PosReportTxnDetailReqType { TxnId = transactionId.Value }, ItemElementName = ItemChoiceType1.ReportTxnDetail }; var response = service.SubmitTransaction(transaction); return(new HpsReportTransactionDetails().FromResponse(response)); }
internal HpsDebitAuthorization SubmitTransaction(PosRequestVer10Transaction transaction, long?clientTransactionId = null) { var rsp = DoTransaction(transaction, clientTransactionId).Ver10; decimal?amount = null; if (transaction.ItemElementName == ItemChoiceType1.DebitSale) { amount = ((PosDebitSaleReqType)transaction.Item).Block1.Amt; } ProcessGatewayResponse(rsp, transaction.ItemElementName, amount); ProcessIssuerResponse(rsp, transaction.ItemElementName, amount); return(new HpsDebitAuthorization().FromResponse(rsp)); }
public override HpsEbtAuthorization Execute() { base.Execute(); var block1 = new EBTCashBenefitWithdrawalReqBlock1Type { Amt = amount.Value, AllowDup = allowDuplicates ? booleanType.Y : booleanType.N, AllowDupSpecified = true, CashBackAmount = cashBack }; var cardData = new CardDataType(); if (card != null) { cardData.Item = service.HydrateCardManualEntry(card); if (card.EncryptionData != null) { cardData.EncryptionData = service.HydrateEncryptionData(card.EncryptionData); } } if (token != null) { cardData.Item = service.HydrateTokenData(token); } if (trackData != null) { cardData.Item = service.HydrateCardTrackData(trackData); if (trackData.EncryptionData != null) { cardData.EncryptionData = service.HydrateEncryptionData(trackData.EncryptionData); } } cardData.TokenRequest = requestMultiUseToken ? booleanType.Y : booleanType.N; block1.PinBlock = pinBlock; var transaction = new PosRequestVer10Transaction { Item = new PosEBTCashBenefitWithdrawalReqType { Block1 = block1 }, ItemElementName = ItemChoiceType1.EBTCashBenefitWithdrawal }; return(service.SubmitTransaction(transaction)); }
public override HpsGiftCardResponse Execute() { base.Execute(); var transaction = new PosRequestVer10Transaction { Item = new PosGiftCardVoidReqType { Block1 = new GiftCardVoidReqBlock1Type { GatewayTxnId = transactionId.Value } }, ItemElementName = ItemChoiceType1.GiftCardVoid }; var response = service.SubmitTransaction(transaction); return(new HpsGiftCardResponse().FromResponse(response)); }
public override HpsDebitAuthorization Execute() { base.Execute(); HpsInputValidation.CheckAmount(amount.Value); var block1 = new DebitReversalReqBlock1Type { Amt = amount.Value }; block1.AuthAmtSpecified = authorizedAmount.HasValue; if (block1.AuthAmtSpecified) { block1.AuthAmt = authorizedAmount.Value; } if (trackData != null) { block1.TrackData = trackData.Value; if (trackData.EncryptionData != null) { block1.EncryptionData = service.HydrateEncryptionData(trackData.EncryptionData); } } if (transactionId != null) { block1.GatewayTxnId = transactionId.Value; block1.GatewayTxnIdSpecified = true; } if (details != null) { block1.AdditionalTxnFields = service.HydrateAdditionalTxnFields(details); } var transaction = new PosRequestVer10Transaction { Item = new PosDebitReversalReqType { Block1 = block1 }, ItemElementName = ItemChoiceType1.DebitReversal }; var clientTxnId = service.GetClientTransactionId(details); return(service.SubmitTransaction(transaction, clientTxnId)); }
public override HpsGiftCardResponse Execute() { base.Execute(); var transaction = new PosRequestVer10Transaction { Item = new PosGiftCardDeactivateReqType { Block1 = new GiftCardDeactivateReqBlock1Type { CardData = service.HydrateGiftCardData(card) } }, ItemElementName = ItemChoiceType1.GiftCardDeactivate }; var response = service.SubmitTransaction(transaction); return(new HpsGiftCardResponse().FromResponse(response)); }
public override HpsEbtAuthorization Execute() { base.Execute(); var block1 = new EBTBalanceInquiryReqBlock1Type { Amt = amount.Value }; var cardData = new CardDataType(); if (card != null) { cardData.Item = service.HydrateCardManualEntry(card); if (card.EncryptionData != null) { cardData.EncryptionData = service.HydrateEncryptionData(card.EncryptionData); } } if (token != null) { cardData.Item = service.HydrateTokenData(token); } if (trackData != null) { cardData.Item = service.HydrateCardTrackData(trackData); if (trackData.EncryptionData != null) { cardData.EncryptionData = service.HydrateEncryptionData(trackData.EncryptionData); } } cardData.TokenRequest = requestMultiUseToken ? booleanType.Y : booleanType.N; block1.CardData = cardData; block1.PinBlock = pinBlock; block1.BalanceInquiryType = inquiryType; var transaction = new PosRequestVer10Transaction { Item = new PosEBTBalanceInquiryReqType { Block1 = block1 }, ItemElementName = ItemChoiceType1.EBTBalanceInquiry }; return(service.SubmitTransaction(transaction)); }
public override HpsTransaction Execute() { base.Execute(); var transaction = new PosRequestVer10Transaction { Item = new PosCreditCPCEditReqType { GatewayTxnId = transactionId.Value, CPCData = service.HydrateCpcData(cpcData) }, ItemElementName = ItemChoiceType1.CreditCPCEdit }; var response = service.SubmitTransaction(transaction); var trans = new HpsTransaction().FromResponse(response); trans.ResponseCode = "00"; trans.ResponseText = string.Empty; return(trans); }