public void SaleWithInvoiceNumber() { var card = new HpsGiftCard() { Value = "5022440000000000098" }; _device.OnMessageSent += (message) => { Assert.IsNotNull(message); Assert.IsTrue(message.StartsWith("[STX]T06[FS]1.35[FS]01[FS]800[FS]5022440000000000098[FS]4[US]1234[FS][FS][ETX]")); }; var details = new HpsTransactionDetails { InvoiceNumber = "1234" }; var response = _device.GiftSale(4, 8m) .WithCard(card) .WithDetails(details) .Execute(); Assert.IsNotNull(response); Assert.AreEqual("0", response.ResponseCode); }
/// <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 CreditChargeBuilder WithRewards(string cardNumber) { this.rewards = new HpsGiftCard { Value = cardNumber, ValueType = ItemChoiceType.CardNbr }; return(this); }
internal GiftCardDataType HydrateGiftCardData(HpsGiftCard card, string elementName = "CardData") { GiftCardDataType cardElement = new GiftCardDataType { Item = card.Value, ItemElementName = card.ValueType, EncryptionData = HydrateEncryptionData(card.EncryptionData), PIN = card.Pin }; return(cardElement); }
/// <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); }
private static GiftCardDataType HydrateGiftCardData(HpsGiftCard giftCard) { return(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 } }); }
public void SaleManual() { var card = new HpsGiftCard() { Value = "5022440000000000098" }; _device.OnMessageSent += (message) => { Assert.IsNotNull(message); Assert.IsTrue(message.StartsWith("[STX]T06[FS]1.35[FS]01[FS]1000[FS]5022440000000000098[FS]2[FS][FS][ETX]")); }; var response = _device.GiftSale(2, 10m) .WithCard(card) .Execute(); Assert.IsNotNull(response); Assert.AreEqual("0", response.ResponseCode); }
/// <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); }
public void BalanceLoyaltyManual() { var card = new HpsGiftCard() { Value = "5022440000000000098" }; _device.OnMessageSent += (message) => { Assert.IsNotNull(message); Assert.IsTrue(message.StartsWith("[STX]T08[FS]1.35[FS]23[FS][FS]5022440000000000098[FS]18[FS][FS][ETX]")); }; var response = _device.GiftBalance(18) .WithCard(card) .WithCurrency(currencyType.POINTS) .Execute(); Assert.IsNotNull(response); Assert.AreEqual("0", response.ResponseCode); }
public void VoidManual() { var card = new HpsGiftCard() { Value = "5022440000000000098" }; var saleResponse = _device.GiftSale(13).WithAmount(10m).WithCard(card).Execute(); _device.OnMessageSent += (message) => { Assert.IsNotNull(message); Assert.IsTrue(message.StartsWith("[STX]T06[FS]1.35[FS]16[FS][FS][FS]13[FS][FS]HREF=" + saleResponse.TransactionId + "[ETX]")); }; var voidResponse = _device.GiftVoid(13) .WithTransactionId(saleResponse.TransactionId) .Execute(); Assert.IsNotNull(voidResponse); Assert.AreEqual("0", voidResponse.ResponseCode); }
/// <summary> /// A <b>Reverse</b> transaction is used to cancel a previously approved Sale, Activate, or AddValue /// from the current open batch. If successful, the gift card balance is restored to the amount prior /// to the transaction being reversed. /// </summary> /// <param name="giftCard">The gift card information.</param> /// <param name="amount">Amount of the transaction to be reversed.</param> /// <param name="currency">Identifies the currency of a financial transaction ("usd" or "points")</param> /// <returns>The <see cref="HpsGiftCardReward"/>.</returns> public HpsGiftCardResponse Reverse(HpsGiftCard giftCard, decimal amount, string currency = "usd") { HpsInputValidation.CheckAmount(amount); HpsInputValidation.CheckCurrency(currency); /* Build the transaction request. */ var transaction = new PosRequestVer10Transaction { Item = new PosGiftCardReversalReqType { Block1 = new GiftCardReversalReqBlock1Type { Amt = amount, CardData = HydrateGiftCardData(giftCard) } }, ItemElementName = ItemChoiceType1.GiftCardReversal }; /* Submit the transaction. */ return(SubmitReversal(transaction)); }
public CreditChargeBuilder WithRewards(HpsGiftCard card) { this.rewards = card; return(this); }
public GiftBalanceBuilder WithCard(HpsGiftCard value) { this.card = value; return(this); }
public GiftCardReverseBuilder WithCard(HpsGiftCard value) { this.card = value; return(this); }
/// <summary> /// A <b>Sale</b> transaction is used to record a sale against the gift card. If successful, the card /// amount is subtracted from the gift card amount. /// </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 HpsGiftCardSale Sale(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 PosGiftCardSaleReqType { Block1 = new GiftCardSaleReqBlock1Type { Amt = amount, CardData = HydrateGiftCardData(giftCard) } }, ItemElementName = ItemChoiceType1.GiftCardSale }; var block = ((PosGiftCardSaleReqType)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.GiftCardSale); var saleRsp = (PosGiftCardSaleRspType)rsp.Transaction.Item; HpsIssuerResponseValidation.CheckResponse(rsp.Header.GatewayTxnId, saleRsp.RspCode.ToString(CultureInfo.InvariantCulture), saleRsp.RspText, HpsCardType.Gift); /* Start to fill out a new transaction response. */ var response = new HpsGiftCardSale { Header = HydrateTransactionHeader(rsp.Header), TransactionId = rsp.Header.GatewayTxnId, AuthorizationCode = saleRsp.AuthCode, BalanceAmount = saleRsp.BalanceAmt, SplitTenderCardAmount = saleRsp.SplitTenderCardAmt, SplitTenderBalanceDue = saleRsp.SplitTenderBalanceDueAmt, PointsBalanceAmount = saleRsp.PointsBalanceAmt, ResponseCode = saleRsp.RspCode.ToString(CultureInfo.InvariantCulture), ResponseText = saleRsp.RspText }; return(response); }
public GiftCardActivateBuilder WithCard(HpsGiftCard value) { this.card = value; return(this); }
public GiftCardReplaceBuilder WithOldCard(HpsGiftCard value) { this.oldCard = value; return(this); }