コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <summary>
        /// A <b>Balance</b> transaction is used to check the balance of a gift card.
        /// </summary>
        /// <param name="giftCard">The gift card information.</param>
        /// <returns>The <see cref="HpsGiftCardBalance"/>.</returns>
        public HpsGiftCardResponse GetBalance(HpsGiftCard giftCard)
        {
            /* Build the transaction request. */
            var transaction = new PosRequestVer10Transaction
            {
                Item = new PosGiftCardBalanceReqType
                {
                    Block1 = new GiftCardBalanceReqBlock1Type
                    {
                        CardData = HydrateGiftCardData(giftCard)
                    }
                },
                ItemElementName = ItemChoiceType1.GiftCardBalance
            };

            /* Submit the transaction. */
            var rsp = DoTransaction(transaction).Ver10;

            HpsGatewayResponseValidation.CheckResponse(rsp, ItemChoiceType2.GiftCardBalance);

            var balanceRsp = (PosGiftCardBalanceRspType)rsp.Transaction.Item;

            HpsIssuerResponseValidation.CheckResponse(rsp.Header.GatewayTxnId,
                                                      balanceRsp.RspCode.ToString(CultureInfo.InvariantCulture), balanceRsp.RspText, HpsCardType.Gift);

            /* Start to fill out a new transaction response (HpsGiftCardAddValue). */
            var response = new HpsGiftCardResponse
            {
                Header              = HydrateTransactionHeader(rsp.Header),
                TransactionId       = rsp.Header.GatewayTxnId,
                AuthorizationCode   = balanceRsp.AuthCode,
                BalanceAmount       = balanceRsp.BalanceAmt,
                PointsBalanceAmount = balanceRsp.PointsBalanceAmt,
                Rewards             = balanceRsp.Rewards,
                Notes        = balanceRsp.Notes,
                ResponseCode = balanceRsp.RspCode.ToString(CultureInfo.InvariantCulture),
                ResponseText = balanceRsp.RspText
            };

            return(response);
        }
コード例 #3
0
        /// <summary>
        /// A <b>Void</b> transaction is used to cancel a previously approved Sale, Activate, Add Value, Deactivate, or Replace.
        /// If successful, the gift card is credited with the amount of the sale.
        /// </summary>
        /// <param name="transactionId">Transaction identifier assigned by Portico Gateway of the Sale transaction to void.</param>
        /// <returns>The <see cref="HpsGiftCardReward"/>.</returns>
        public HpsGiftCardResponse VoidTransaction(int transactionId)
        {
            /* Build the transaction request. */
            var transaction = new PosRequestVer10Transaction
            {
                Item = new PosGiftCardVoidReqType
                {
                    Block1 = new GiftCardVoidReqBlock1Type
                    {
                        GatewayTxnId = transactionId
                    }
                },
                ItemElementName = ItemChoiceType1.GiftCardVoid
            };

            /* Submit the transaction. */
            var rsp = DoTransaction(transaction).Ver10;

            HpsGatewayResponseValidation.CheckResponse(rsp, ItemChoiceType2.GiftCardVoid);

            var voidRsp = (PosGiftCardVoidRspType)rsp.Transaction.Item;

            HpsIssuerResponseValidation.CheckResponse(rsp.Header.GatewayTxnId,
                                                      voidRsp.RspCode.ToString(CultureInfo.InvariantCulture), voidRsp.RspText);

            /* Start to fill out a new transaction response. */
            var response = new HpsGiftCardResponse
            {
                Header              = HydrateTransactionHeader(rsp.Header),
                TransactionId       = rsp.Header.GatewayTxnId,
                AuthorizationCode   = voidRsp.AuthCode,
                BalanceAmount       = voidRsp.BalanceAmt,
                PointsBalanceAmount = voidRsp.PointsBalanceAmt,
                Notes        = voidRsp.Notes,
                ResponseCode = voidRsp.RspCode.ToString(CultureInfo.InvariantCulture),
                ResponseText = voidRsp.RspText
            };

            return(response);
        }
コード例 #4
0
        /// <summary>Helper method for reversal transactions (supporting multiple reversal methods).</summary>
        /// <param name="transaction">The gateway response.</param>
        /// <returns>The <see cref="HpsGiftCardActivate"/>.</returns>
        private HpsGiftCardResponse SubmitReversal(PosRequestVer10Transaction transaction)
        {
            var rsp = DoTransaction(transaction).Ver10;

            HpsGatewayResponseValidation.CheckResponse(rsp, ItemChoiceType2.GiftCardReversal);

            var reversalRsp = (PosGiftCardReversalRspType)rsp.Transaction.Item;

            HpsIssuerResponseValidation.CheckResponse(rsp.Header.GatewayTxnId,
                                                      reversalRsp.RspCode.ToString(CultureInfo.InvariantCulture), reversalRsp.RspText, HpsCardType.Gift);

            /* Start to fill out a new transaction response. */
            var reversal = new HpsGiftCardResponse
            {
                Header            = HydrateTransactionHeader(rsp.Header),
                TransactionId     = rsp.Header.GatewayTxnId,
                AuthorizationCode = reversalRsp.AuthCode,
                BalanceAmount     = reversalRsp.BalanceAmt,
                ResponseCode      = reversalRsp.RspCode.ToString(CultureInfo.InvariantCulture),
                ResponseText      = reversalRsp.RspText
            };

            return(reversal);
        }
コード例 #5
0
        /// <summary>
        /// A <b>Reward</b> transaction is used to add rewards to a stored value account when a
        /// purchase is made with a credit card, debit card, cash or other form of payment. The
        /// Reward transaction amount is not deduced from or loaded to the stored value account,
        /// but is used to determine the potential rewards that may be added to the account
        /// based on the merchant’s loyalty and rewards program.
        /// </summary>
        /// <param name="giftCard">The gift card information.</param>
        /// <param name="amount">The amount of purchase to be used in rewards calculation.</param>
        /// <param name="currency">Identifies the currency of a financial transaction ("usd" or "points")</param>
        /// <param name="gratuity">The portion of the purchase amount that is a gratuity</param>
        /// <param name="tax">The portion of the purchase amount that is tax</param>
        /// <returns>The <see cref="HpsGiftCardReward"/>.</returns>
        public HpsGiftCardResponse Reward(HpsGiftCard giftCard, decimal amount, string currency = "usd",
                                          decimal?gratuity = null, decimal?tax = null)
        {
            currency = currency.ToLower();
            HpsInputValidation.CheckAmount(amount);

            /* Build the transaction request. */
            var transaction = new PosRequestVer10Transaction
            {
                Item = new PosGiftCardRewardReqType
                {
                    Block1 = new GiftCardRewardReqBlock1Type
                    {
                        Amt      = amount,
                        CardData = HydrateGiftCardData(giftCard)
                    }
                },
                ItemElementName = ItemChoiceType1.GiftCardReward
            };

            var block = ((PosGiftCardRewardReqType)transaction.Item).Block1;

            if (currency == "usd" || currency == "points")
            {
                block.Currency          = currency == "usd" ? currencyType.USD : currencyType.POINTS;
                block.CurrencySpecified = true;
            }

            if (gratuity != null)
            {
                block.GratuityAmtInfo          = gratuity.Value;
                block.GratuityAmtInfoSpecified = true;
            }

            if (tax != null)
            {
                block.TaxAmtInfo          = tax.Value;
                block.TaxAmtInfoSpecified = true;
            }

            /* Submit the transaction. */
            var rsp = DoTransaction(transaction).Ver10;

            HpsGatewayResponseValidation.CheckResponse(rsp, ItemChoiceType2.GiftCardReward);

            var rewardRsp = (PosGiftCardRewardRspType)rsp.Transaction.Item;

            HpsIssuerResponseValidation.CheckResponse(rsp.Header.GatewayTxnId,
                                                      rewardRsp.RspCode.ToString(CultureInfo.InvariantCulture), rewardRsp.RspText, HpsCardType.Gift);

            /* Start to fill out a new transaction response. */
            var response = new HpsGiftCardResponse
            {
                Header              = HydrateTransactionHeader(rsp.Header),
                TransactionId       = rsp.Header.GatewayTxnId,
                AuthorizationCode   = rewardRsp.AuthCode,
                BalanceAmount       = rewardRsp.BalanceAmt,
                PointsBalanceAmount = rewardRsp.PointsBalanceAmt,
                ResponseCode        = rewardRsp.RspCode.ToString(CultureInfo.InvariantCulture),
                ResponseText        = rewardRsp.RspText
            };

            return(response);
        }