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));
        }
예제 #2
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));
        }
        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));
        }
예제 #4
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));
        }
예제 #5
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));
        }
예제 #6
0
        public override HpsAuthorization Execute()
        {
            base.Execute();

            var block1 = new PrePaidBalanceInquiryReqBlock1Type();

            if (cardHolder != null)
            {
                block1.CardHolderData = service.HydrateCardHolderData(cardHolder);
            }

            var cardData = new CardDataType();

            if (card != null)
            {
                cardData.Item = service.HydrateCardManualEntry(card);
            }
            if (trackData != null)
            {
                cardData.Item = service.HydrateCardTrackData(trackData);
            }
            if (token != null)
            {
                cardData.Item = service.HydrateTokenData(token);
            }
            block1.CardData = cardData;

            var transaction = new PosRequestVer10Transaction {
                Item = new PosPrePaidBalanceInquiryReqType {
                    Block1 = block1
                },
                ItemElementName = ItemChoiceType1.PrePaidBalanceInquiry
            };

            var response = service.SubmitTransaction(transaction);

            return(new HpsAuthorization().FromResponse(response));
        }
        public override HpsAuthorization Execute()
        {
            base.Execute();

            var block1 = new CreditAuthReqBlock1Type {
                AllowDup                  = allowDuplicates ? booleanType.Y : booleanType.N,
                AllowDupSpecified         = true,
                AllowPartialAuth          = allowPartialAuth ? booleanType.Y : booleanType.N,
                AllowPartialAuthSpecified = true,
                Amt = amount.Value,
            };

            block1.GratuityAmtInfoSpecified = gratuity.HasValue;
            if (block1.GratuityAmtInfoSpecified)
            {
                block1.GratuityAmtInfo = gratuity.Value;
            }

            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;

            if (cpcReq)
            {
                block1.CPCReq          = booleanType.Y;
                block1.CPCReqSpecified = true;
            }

            if (details != null)
            {
                block1.AdditionalTxnFields = service.HydrateAdditionalTxnFields(details);
            }
            if (txnDescriptor != null)
            {
                block1.TxnDescriptor = txnDescriptor;
            }
            if (autoSubstantiation != null)
            {
                block1.AutoSubstantiation = service.HydrateAutoSubstantiation(autoSubstantiation);
            }
            if (originalTxnReferenceData != null)
            {
                block1.OrigTxnRefData = new origTxnRefDataType {
                    AuthCode        = originalTxnReferenceData.AuthorizationCode,
                    CardNbrLastFour = originalTxnReferenceData.CardNumberLast4
                }
            }
            ;
            if (directMarketData != null)
            {
                block1.DirectMktData = service.HydrateDirectMktData(directMarketData);
            }
            block1.CardData = cardData;

            var transaction = new PosRequestVer10Transaction {
                Item = new PosCreditAuthReqType {
                    Block1 = block1
                },
                ItemElementName = ItemChoiceType1.CreditAuth
            };

            var clientTransactionId = service.GetClientTransactionId(details);
            var response            = service.SubmitTransaction(transaction, clientTransactionId);

            return(new HpsAuthorization().FromResponse(response));
        }
예제 #8
0
        public override HpsCharge Execute()
        {
            base.Execute();

            var block1 = new CreditSaleReqBlock1Type {
                AllowDup                  = allowDuplicates ? booleanType.Y : booleanType.N,
                AllowDupSpecified         = true,
                AllowPartialAuth          = allowPartialAuth ? booleanType.Y : booleanType.N,
                AllowPartialAuthSpecified = true,
                Amt = amount.Value
            };

            block1.GratuityAmtInfoSpecified = gratuity.HasValue;
            if (block1.GratuityAmtInfoSpecified)
            {
                block1.GratuityAmtInfo = gratuity.Value;
            }

            block1.ConvenienceAmtInfoSpecified = convenienceAmt.HasValue;
            if (block1.ConvenienceAmtInfoSpecified)
            {
                block1.ConvenienceAmtInfo = convenienceAmt.Value;
                HpsInputValidation.CheckAmount(block1.ConvenienceAmtInfo);
            }
            block1.ShippingAmtInfoSpecified = shippingAmt.HasValue;
            if (block1.ShippingAmtInfoSpecified)
            {
                block1.ShippingAmtInfo = shippingAmt.Value;
                HpsInputValidation.CheckAmount(block1.ShippingAmtInfo);
            }

            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;

            if (cpcReq)
            {
                block1.CPCReq          = booleanType.Y;
                block1.CPCReqSpecified = true;
            }

            if (details != null)
            {
                block1.AdditionalTxnFields = service.HydrateAdditionalTxnFields(details);
            }
            if (txnDescriptor != null)
            {
                block1.TxnDescriptor = txnDescriptor;
            }
            if (autoSubstantiation != null)
            {
                block1.AutoSubstantiation = service.HydrateAutoSubstantiation(autoSubstantiation);
            }
            if (originalTxnReferenceData != null)
            {
                block1.OrigTxnRefData = new origTxnRefDataType {
                    AuthCode        = originalTxnReferenceData.AuthorizationCode,
                    CardNbrLastFour = originalTxnReferenceData.CardNumberLast4
                }
            }
            ;
            if (directMarketData != null)
            {
                block1.DirectMktData = service.HydrateDirectMktData(directMarketData);
            }
            block1.CardData = cardData;

            if (tagData != null)
            {
                block1.TagData = service.HydrateTagData(tagData);
            }

            if (secureEcommerce != null)
            {
                block1.SecureECommerce = service.HydrateSecureEcommerce(secureEcommerce);
            }

            var transaction = new PosRequestVer10Transaction {
                Item = new PosCreditSaleReqType {
                    Block1 = block1
                },
                ItemElementName = ItemChoiceType1.CreditSale
            };

            var clientTransactionId = service.GetClientTransactionId(details);
            var response            = service.SubmitTransaction(transaction, clientTransactionId);
            var charge = new HpsCharge().FromResponse(response);

            if (rewards != null && charge.ResponseCode == "00")
            {
                var giftClient = new HpsFluentGiftCardService(service.ServicesConfig);
                try {
                    charge.RewardsResponse = giftClient.Reward(amount).WithCard(rewards).Execute();
                }
                catch (HpsException) { /* NOM NOM */ }
            }

            return(charge);
        }
        public override HpsTransaction Execute()
        {
            base.Execute();

            var block1 = new CreditOfflineSaleReqBlock1Type {
                AllowDup          = allowDuplicates ? booleanType.Y : booleanType.N,
                AllowDupSpecified = true,
                Amt = amount.Value
            };

            block1.GratuityAmtInfoSpecified = gratuity.HasValue;
            if (block1.GratuityAmtInfoSpecified)
            {
                block1.GratuityAmtInfo = gratuity.Value;
            }

            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 (cpcReq)
            {
                block1.CPCReq          = booleanType.Y;
                block1.CPCReqSpecified = true;
            }

            if (details != null)
            {
                block1.AdditionalTxnFields = service.HydrateAdditionalTxnFields(details);
            }
            if (autoSubstantiation != null)
            {
                block1.AutoSubstantiation = service.HydrateAutoSubstantiation(autoSubstantiation);
            }
            if (directMarketData != null)
            {
                block1.DirectMktData = service.HydrateDirectMktData(directMarketData);
            }
            block1.OfflineAuthCode = offlineAuthCode;

            var transaction = new PosRequestVer10Transaction {
                Item = new PosCreditOfflineSaleReqType {
                    Block1 = block1
                },
                ItemElementName = ItemChoiceType1.CreditOfflineSale
            };

            var            clientTransactionId = service.GetClientTransactionId(details);
            var            response            = service.SubmitTransaction(transaction, clientTransactionId);
            HpsTransaction trans = new HpsTransaction().FromResponse(response);

            trans.ResponseCode = "00";
            trans.ResponseText = string.Empty;
            return(trans);
        }