コード例 #1
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);

            /* 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;
        }
コード例 #2
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);

            /* 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;
        }
コード例 #3
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);

            /* 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;
        }
コード例 #4
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;
        }
コード例 #5
0
        /// <summary>
        /// A <b>Replace</b> transaction is used to replace an active gift card with another gift card.
        /// Once replaced, the old gift card is permanently deactivated. The new gift card is assigned
        /// the current amount of the old gift card.
        /// </summary>
        /// <param name="oldGiftCard">The old gift card information.</param>
        /// <param name="newGiftCard">The new gift card information.</param>
        /// <returns>The <see cref="HpsGiftCardReplace"/>.</returns>
        public HpsGiftCardResponse ReplaceCard(HpsGiftCard oldGiftCard, HpsGiftCard newGiftCard)
        {
            /* Build the transaction request. */
            var transaction = new PosRequestVer10Transaction
            {
                Item = new PosGiftCardReplaceReqType
                {
                    Block1 = new GiftCardReplaceReqBlock1Type
                    {
                        OldCardData = HydrateGiftCardData(oldGiftCard),
                        NewCardData = HydrateGiftCardData(newGiftCard)
                    }
                },
                ItemElementName = ItemChoiceType1.GiftCardReplace
            };

            /* Submit the transaction. */
            var rsp = DoTransaction(transaction).Ver10;
            HpsGatewayResponseValidation.CheckResponse(rsp, ItemChoiceType2.GiftCardReplace);

            var replaceRsp = (PosGiftCardReplaceRspType)rsp.Transaction.Item;
            HpsIssuerResponseValidation.CheckResponse(rsp.Header.GatewayTxnId,
                replaceRsp.RspCode.ToString(CultureInfo.InvariantCulture), replaceRsp.RspText);

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

            return response;
        }