Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 7
0
        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));
        }
Esempio n. 8
0
        /// <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));
        }
Esempio n. 10
0
        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));
        }
Esempio n. 11
0
        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));
        }
Esempio n. 12
0
        /// <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);
        }
Esempio n. 13
0
        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));
        }
Esempio n. 16
0
        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));
        }
Esempio n. 17
0
        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));
        }
Esempio n. 18
0
        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));
        }
Esempio n. 21
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
            });
        }
        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));
        }
Esempio n. 25
0
        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));
        }
Esempio n. 26
0
        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));
        }
Esempio n. 28
0
        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));
        }
Esempio n. 29
0
        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);
        }