public HpsTransaction OfflineCharge(decimal amount, string currency, HpsTrackData trackData, HpsEncryptionData encryptionData = null, decimal gratuity = 0, decimal surcharge = 0, long? clientTransactionId = null, EMVDataType emvData = null) { HpsInputValidation.CheckAmount(amount); HpsInputValidation.CheckCurrency(currency); /* Build the transaction request. */ var transaction = new PosRequestVer10Transaction { Item = new PosCreditOfflineSaleReqType { Block1 = new CreditOfflineSaleReqBlock1Type { Amt = amount, GratuityAmtInfo = gratuity, GratuityAmtInfoSpecified = gratuity != 0, SurchargeAmtInfo = surcharge, SurchargeAmtInfoSpecified = surcharge != 0, CardData = new CardDataType { Item = HydrateCardTrackData(trackData), EncryptionData = HydrateEncryptionData(encryptionData) }, EMVTagData = emvData != null ? emvData.EMVTagData : null } }, ItemElementName = ItemChoiceType1.CreditOfflineSale }; /* Submit the transaction. */ var rsp = DoTransaction(transaction, clientTransactionId).Ver10; HpsGatewayResponseValidation.CheckResponse(rsp, ItemChoiceType2.CreditOfflineSale); return new HpsTransaction { Header = HydrateTransactionHeader(rsp.Header), TransactionId = rsp.Header.GatewayTxnId, ResponseCode = "00", ResponseText = string.Empty }; }
public void offlinecharge_visa_EMV() { var trackData = new HpsTrackData { Value = ";4761739001010036=15122011184404889?" }; var emvData = new EMVDataType { EMVTagData = "9F4005F000F0A0019F02060000000001219F03060000000000009F260816AC7EB8C0DFC40982027C005F3401019F360203869F0702FF009F0802008C9F0902008C8A0259319F34031E03009F2701409F0D05F0400088009F0E0500100000009F0F05F0400098005F280208409F390105FFC605DC4000A800FFC7050010000000FFC805DC4004F8009F3303E0B8C89F1A0208409F350122950500000800005F2A0208409A031409029B02E8009F21031145219C01009F3704BEBD49924F07A00000000310109F0607A00000000310108407A00000000310109F100706010A039000029F410400000001" }; // ReSharper disable once RedundantArgumentDefaultValue var response = _creditService.OfflineCharge(25.00m) .WithTrackData(trackData) .WithEMVData(emvData) .Execute(); Assert.IsNotNull(response); Assert.AreEqual("00", response.ResponseCode); }