/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }