public void TestSuccessCreditCardTransaction_PreAuthorizeVoid_TransactionIsSuccess() { _extendedInformation.InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"); //Test PreAuthorize method. ServiceNetResponse result = _paymentService.PreAuthorize(_amount, _currency, _goodcard, _extendedInformation).Result; Assert.AreEqual(result.Success, true); Assert.IsNotNull(result.TransactionResponse); var tranResult = result.TransactionResponse; //Assert.AreEqual(tranResult.ResultCode, "0"); //Assert.AreEqual(tranResult.ResultMessage, TransactionStatus.Approved.ToString("g"), true); Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); Assert.IsNotNull(tranResult.TransactionKey); string transactionKey = tranResult.TransactionKey; //Test Void method. result = _paymentService.Void(transactionKey, _extendedInformation).Result; Assert.AreEqual(result.Success, true); Assert.IsNotNull(result.TransactionResponse); tranResult = result.TransactionResponse; Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); }
public void ValidatePreAuthorizeMethod_CardInformationIsEmpty_PreAuthozationFail() { Card card = new Card(); // No card information is provided ServiceNetResponse result = _paymentService.PreAuthorize(_amount, _currency, card, _extendedInformation).Result; Assert.AreEqual(result.Success, false); }
public void ValidatePreAuthorizeMethod_CardInformationIsIncorrect_PreAuthozationFail() { _extendedInformation.InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"); Card card = this._badcard; if (isAuthorizeNet) { card = new Card { CardHolder = new CardHolder { FirstName = "PantsON", LastName = "Fire", }, Account = "4111111111111111", Cvc = "532", ExpirationDate = "0925", Billto = new Address { City = "Wheton", Country = "USA", Line1 = "218 Esat Avenue", State = "IL", Zip = "46282", Email = "*****@*****.**" } }; } ServiceNetResponse result = _paymentService.PreAuthorize(_amount, _currency, card, _extendedInformation).Result; Assert.AreEqual(false, result.Success); }
private async Task ParseTransactionReponse(ServiceNetResponse serviceResponse, HttpResponseMessage responseMessage) { serviceResponse.RawResponse = responseMessage; serviceResponse.ResponseCode = ((int)responseMessage.StatusCode).ToString(); if (responseMessage.StatusCode == HttpStatusCode.OK) { string responseConent = await responseMessage.Content.ReadAsStringAsync(); var transResponse = JsonConvert.DeserializeObject <TransactionResponse>(responseConent); serviceResponse.TransactionResponse = transResponse; TransactionStatus status; Enum.TryParse <TransactionStatus>(transResponse.Status, out status); serviceResponse.TransactionStatus = status; if (TransactionStatus.Approved == serviceResponse.TransactionStatus) { serviceResponse.Success = true; } } else { string responseConent = await responseMessage.Content.ReadAsStringAsync(); this.logger.LogError($"Transaction Error, HttpStatus:{responseMessage.StatusCode}\r\n Message: {responseMessage.ReasonPhrase}\r\n Content: {responseConent}"); } }
public async Task ValidatePreAuthorizeMethod_CurrencyIsEmpty_PreAuthozationFail() { _currency = ""; _extendedInformation.InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"); ServiceNetResponse result = await _paymentService.PreAuthorize(_amount, _currency, _goodcard, _extendedInformation); //Currency is empty "" Assert.AreEqual(result.Success, false); }
/// <summary> /// Process a reference transaction, Capture, Refund, Void transaction call this function. /// </summary> /// <param name="setupTransaction">Setup the transaction, the <see cref="TransactionType">transaction type</see> and ReferenceKey must be set in the setupTransaction call back function. </param> /// <returns></returns> public virtual async Task <ServiceNetResponse> ProcessReferenceTransaction(Action <Transaction> setupTransaction) { ServiceNetResponse result = new ServiceNetResponse(); var transaction = new Transaction(); if (setupTransaction != null) { setupTransaction(transaction); } if (string.IsNullOrWhiteSpace(transaction.ReferenceKey)) { throw new Exception("The ReferenceKey must be set."); } if (string.IsNullOrWhiteSpace(transaction.Type)) { throw new Exception("The transaction type must be set for a reference transaction."); } HttpRequestMessage message = new HttpRequestMessage(); string urlPath = $"/transaction/process"; message.RequestUri = this.parseUri(urlPath); message.Method = HttpMethod.Post; JsonSerializerSettings settings = new JsonSerializerSettings(); settings.NullValueHandling = NullValueHandling.Ignore; string payloadString = JsonConvert.SerializeObject(transaction, settings); message.Content = new StringContent(payloadString, Encoding.UTF8, "application/json"); if (this.logger.IsEnabled(LogLevel.Trace)) { logger.LogTrace("Process Reference Transaction - PayLoad:{0}", payloadString); } try { using (HttpResponseMessage responseMessage = await this.httpClient.SendAsync(message)) { await TraceResponse(responseMessage); await ParseTransactionReponse(result, responseMessage); } } catch (Exception ex) { result.ServiceException = ex; string cn = transaction.Card?.Account; if (!string.IsNullOrWhiteSpace(cn) && cn.Length >= 4) { cn = cn.Substring(cn.Length - 4); } logger.LogError(ex, $"Exception in Create Transaction, Transaction Type: {transaction.Type}, Customer: {transaction.Customer}, Card Id: {transaction.Card?.ID}, Card Number End With: {cn} "); } return(result); }
public void TestSuccessCreditCardTransaction_PreAuthorizeCaptureRefundWithReferencedTransaction_TransactionIsSuccess() { _extendedInformation.InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"); //Test PreAuthorize method. ServiceNetResponse result = _paymentService.PreAuthorize(_amount, _currency, _goodcard, _extendedInformation).Result; Assert.AreEqual(result.Success, true); Assert.IsNotNull(result.TransactionResponse); var tranResult = result.TransactionResponse; //Assert.AreEqual(tranResult.ResultCode, "0"); //Assert.AreEqual(tranResult.ResultMessage, TransactionStatus.Approved.ToString("g"), true); Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); Assert.IsNotNull(tranResult.TransactionKey); string transactionKey = tranResult.TransactionKey; //Test Capture method. result = _paymentService.Capture(transactionKey, _amount, _extendedInformation).Result; Assert.AreEqual(result.Success, true); Assert.IsNotNull(result.TransactionResponse); tranResult = result.TransactionResponse; Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); transactionKey = tranResult.TransactionKey; // Test Refund if (!isAuthorizeNet)//TODO: The authorize.net failed { string referencekey = transactionKey; _amount = 22.99M; result = _paymentService.Credit(_amount, _currency, _goodcard, _extendedInformation).Result; Assert.AreEqual(result.Success, true); Assert.IsNotNull(result.TransactionResponse); tranResult = result.TransactionResponse; //Assert.AreEqual(tranResult.ResultCode, "0"); //Assert.AreEqual(tranResult.ResultMessage, TransactionStatus.Approved.ToString("g"), true); Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); } else { //try to void at first result = _paymentService.Void(transactionKey, _extendedInformation).Result; if (!result.Success) { result = _paymentService.Refund(transactionKey, null, _extendedInformation).Result; } Assert.AreEqual(result.Success, true); Assert.IsNotNull(result.TransactionResponse); } }
public void ValidatePreAuthorizeMethod_Invalid_Account_Number_PreAuthozationFail() { _extendedInformation.InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"); _goodcard.Account = "000000000000000"; ServiceNetResponse result = _paymentService.PreAuthorize(_amount, _currency, _goodcard, _extendedInformation).Result; var tranResult = result.TransactionResponse; Assert.AreEqual(TransactionStatus.Failure, result.TransactionStatus); }
public void TestSuccessCreditCardTransaction_PreAuthorizeCaptureCredit_TransactionIsSuccess() { _extendedInformation.InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"); //Test PreAuthorize method. ServiceNetResponse result = _paymentService.PreAuthorize(_amount, _currency, _goodcard, _extendedInformation).Result; Assert.AreEqual(result.Success, true); Assert.IsNotNull(result.TransactionResponse); var tranResult = result.TransactionResponse; //Assert.AreEqual(tranResult.ResultCode, "0"); //Authorize.Net ResultCode 1 Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); //Assert.AreEqual(result.TransactionStatusCode, TransactionStatus.Approved.ToString("g"), true); Assert.IsNotNull(tranResult.TransactionKey); string transactionKey = tranResult.TransactionKey; //Test Capture method. result = _paymentService.Capture(transactionKey, _amount, _extendedInformation).Result; Assert.AreEqual(result.Success, true); Assert.IsNotNull(result.TransactionResponse); tranResult = result.TransactionResponse; Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); //Re-assigning latest transaction key for next Void method to pass. transactionKey = tranResult.TransactionKey; //Test Credit method. //TODO: need check this late, Authorize.Net does not support this credit if (!isAuthorizeNet) { result = _paymentService.Refund(transactionKey, null, _extendedInformation).Result; Assert.AreEqual(result.Success, true); Assert.IsNotNull(result.TransactionResponse); tranResult = result.TransactionResponse; Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); } else { //try to void at first result = _paymentService.Void(transactionKey, _extendedInformation).Result; if (!result.Success) { result = _paymentService.Refund(transactionKey, null, _extendedInformation).Result; } Assert.AreEqual(result.Success, true); Assert.IsNotNull(result.TransactionResponse); } }
public void ValidatePreAuthorizeMethod_CorrectAddress_TestSuccess() { _extendedInformation.InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"); _goodcard.Billto.Line1 = "218 Esat Avenue"; ServiceNetResponse result = _paymentService.PreAuthorize(_amount, _currency, _goodcard, _extendedInformation).Result; Assert.AreEqual(result.Success, true); var tranResult = result.TransactionResponse; Assert.AreEqual(tranResult.AVSAddressResponse, "Y"); }
public void ValidatePreAuthorizeMethod_AmountIsNegative_PreAuthozationFail() { _amount = -1.0M; _extendedInformation.InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"); ServiceNetResponse result = _paymentService.PreAuthorize(_amount, _currency, _goodcard, _extendedInformation).Result; Assert.AreEqual(result.Success, false); var tranResult = result.TransactionResponse; //Assert.AreEqual(tranResult.ResultCode, "4"); Assert.AreEqual(TransactionStatus.Denied, result.TransactionStatus); }
public void ValidatePreAuthorizeMethod_ExtendedInformationIsEmpty_PreAuthozationFail() { if (isAuthorizeNet) { return; } ExtendedInformation extendedInformation = new ExtendedInformation(); //Extended information is empty ServiceNetResponse result = _paymentService.PreAuthorize(_amount, _currency, _badcard, _extendedInformation).Result; Assert.AreEqual(false, result.Success); }
public void ValidatePreAuthorizeMethod_Invalid_Expiration_Date_PreAuthozationFail() { _extendedInformation.InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"); _goodcard.ExpirationDate = "0298"; //Invalid expiration date. ServiceNetResponse result = _paymentService.PreAuthorize(_amount, _currency, _goodcard, _extendedInformation).Result; Assert.AreEqual(result.Success, false); var tranResult = result.TransactionResponse; Assert.AreEqual(TransactionStatus.Denied, result.TransactionStatus); }
/// <summary> /// Process a saved transaction with payment gateway. /// </summary> /// <param name="setupTransaction">The Transaction.Key must be set in the setupTransaction call back function.</param> /// <returns>The transaction process response</returns> public virtual async Task <ServiceNetResponse> ProcessTransaction(Action <Transaction> setupTransaction) { ServiceNetResponse result = new ServiceNetResponse(); var transaction = new Transaction(); if (setupTransaction != null) { setupTransaction(transaction); } if (string.IsNullOrWhiteSpace(transaction.Key)) { throw new Exception("The transaction key must be set."); } HttpRequestMessage message = new HttpRequestMessage(); string urlPath = $"/transaction/process/{transaction.Key}"; if (!string.IsNullOrWhiteSpace(transaction.Card?.Cvc)) { urlPath += $"?cvc={transaction.Card.Cvc}"; } message.RequestUri = this.parseUri(urlPath); message.Method = HttpMethod.Get; if (this.logger.IsEnabled(LogLevel.Trace)) { logger.LogTrace("Process Saved Transaction - Key:{0}", transaction.Key); } try { using (HttpResponseMessage responseMessage = await this.httpClient.SendAsync(message)) { await TraceResponse(responseMessage); await ParseTransactionReponse(result, responseMessage); } } catch (Exception ex) { result.ServiceException = ex; string cn = transaction.Card?.Account; if (!string.IsNullOrWhiteSpace(cn) && cn.Length >= 4) { cn = cn.Substring(cn.Length - 4); } logger.LogError(ex, $"Exception in Create Transaction, Transaction Type: {transaction.Type}, Customer: {transaction.Customer}, Card Id: {transaction.Card?.ID}, Card Number End With: {cn} "); } return(result); }
public void ValidatePreAuthorizeMethod_Invalid_MerchantInformation_PreAuthozationFail() { _extendedInformation.InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"); _amount = 1005M; ServiceNetResponse result = _paymentService.PreAuthorize(_amount, _currency, _goodcard, _extendedInformation).Result; var tranResult = result.TransactionResponse; //Assert.AreEqual(tranResult.ResultCode, "5"); if (!isAuthorizeNet) { Assert.AreEqual(TransactionStatus.Denied, result.TransactionStatus); } }
public void ValidatePreAuthorizeMethod_AmountIsOver2000Range_PreAuthozationFail() { if (isAuthorizeNet) { return; } _extendedInformation.InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"); _amount = 2019M; ServiceNetResponse result = _paymentService.PreAuthorize(_amount, _currency, _goodcard, _extendedInformation).Result; var tranResult = result.TransactionResponse; Assert.AreEqual(result.Success, false); //Assert.AreEqual(tranResult.ResultCode, "12"); Assert.AreEqual(TransactionStatus.Denied, result.TransactionStatus); }
public void PreauthorizeCreditCardTransaction_SubmitRequest_PreAuthorizationIsSuccess() { _extendedInformation.InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"); //Test PreAuthorize method. ServiceNetResponse result = _paymentService.PreAuthorize(_amount, _currency, _goodcard, _extendedInformation).Result; Assert.AreEqual(true, result.Success); Assert.IsNotNull(result.TransactionResponse); var tranResult = result.TransactionResponse; //Jim: 2/26/2021, Authorize.Net result code is 1 //Assert.AreEqual(tranResult.ResultCode, "0"); Assert.AreEqual(result.TransactionStatus, TransactionStatus.Approved); //Assert.AreEqual(result.TransactionStatusCode, TransactionStatus.Approved.ToString("g"), true); Assert.IsTrue(!string.IsNullOrWhiteSpace(tranResult.AuthorizationCode)); }
public async Task TestSuccessCreditCardTransaction_ChargeVoid_TransactionIsSuccess() { ExtendedInformation extInfo = new ExtendedInformation { Customer = "TEST_0199999", InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"), DocumentHead = new LevelTwoData { DiscountAmount = 10M, DutyAmount = 110M, TaxAmount = 10M, FreightAmount = 5M, ShipFromZip = "60139", ShipToZip = "60189", PONumber = "PO_1235", OrderDate = DateTime.Now } }; //Test PreAuthorize method. ServiceNetResponse result = await _paymentService.Sale(115M, _currency, _goodcard, extInfo); Assert.AreEqual(result.Success, true); Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); Assert.IsNotNull(result.TransactionResponse); var tranResult = result.TransactionResponse; Assert.IsNotNull(tranResult.TransactionKey); string transactionKey = tranResult.TransactionKey; if (isAuthorizeNet) // skip void when gateway is Authorize.Net { return; } //Test Void method. result = _paymentService.Void(transactionKey, _extendedInformation).Result; Assert.AreEqual(true, result.Success); Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); Assert.IsNotNull(result.TransactionResponse); }
public void ValidatePreAuthorizeMethod_BILLTOSTREET_PreAuthozationFail() { _extendedInformation.InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"); _goodcard.Billto.Line1 = "668 Esat Avenue"; ServiceNetResponse result = _paymentService.PreAuthorize(_amount, _currency, _goodcard, _extendedInformation).Result; Assert.AreEqual(true, result.Success); var tranResult = result.TransactionResponse; if (!isAuthorizeNet) { Assert.AreEqual("X", tranResult.AVSAddressResponse); Assert.AreEqual("X", tranResult.AVSZipResponse); } else { Assert.AreEqual("Y", tranResult.AVSAddressResponse); Assert.AreEqual("Y", tranResult.AVSZipResponse); } }
public void ValidatePreAuthorizeMethod_InCorrectCardSecurityCode_PreAuthozationFail() { _extendedInformation.InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"); _goodcard.Cvc = "601"; if (isAuthorizeNet) { _goodcard.Cvc = "901"; } ServiceNetResponse result = _paymentService.PreAuthorize(_amount, _currency, _goodcard, _extendedInformation).Result; var tranResult = result.TransactionResponse; if (isAuthorizeNet) { Assert.AreEqual(false, result.Success); Assert.AreEqual(tranResult.CVV2Response, "N"); } else { Assert.AreEqual(true, result.Success); Assert.AreEqual(tranResult.CVV2Response, "X"); } }
public void TestSuccessCreditCardTransaction_PreAuthorize_Force_Void_TransactionIsSuccess() { var card = new Card { CardHolder = new CardHolder { FirstName = "PantsON", LastName = "Fire", }, Account = "4111111111111111", Cvc = "532", ExpirationDate = "0925", Billto = new Address { City = "wheaton", Country = "USA", Line1 = "1953 Wexford Cir", State = "IL", Zip = "60189", Email = "*****@*****.**" }, Tender = TenderTypeEnum.CreditCard }; ExtendedInformation extInfo = new ExtendedInformation { Customer = "TEST_0199999", InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"), DocumentHead = new LevelTwoData { DiscountAmount = 10M, DutyAmount = 110M, TaxAmount = 10M, FreightAmount = 5M, ShipFromZip = "60139", ShipToZip = "60189", PONumber = "PO_1235", OrderDate = DateTime.Now }, DocumentLines = new List <LevelThreeData> { new LevelThreeData { ItemDesc = "SHOE-LA01-BLACK", ItemQuantity = 1M, ItemUOM = "PAIR", ItemAmount = 55M, ItemDiscount = 5M }, new LevelThreeData { ItemDesc = "SHOE-LA02-WHITE", ItemQuantity = 1M, ItemUOM = "PAIR", ItemAmount = 55M, ItemDiscount = 5M } }, ExtentionInformation = new Dictionary <string, object>() { { "AppID", "PayFabric.Net" }, { "DisableEmailReceipt", true } } }; //Test PreAuthorize method. ServiceNetResponse result = _paymentService.PreAuthorize(115.0M, _currency, card, extInfo).Result; Assert.AreEqual(result.Success, true); Assert.IsNotNull(result.TransactionResponse); var tranResult = result.TransactionResponse; Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); Assert.IsNotNull(tranResult.TransactionKey); string authorizationCode = tranResult.AuthorizationCode; //Test Force method, set card.cvv=null; card.Cvc = null; result = _paymentService.Force(authorizationCode, 115M, _currency, card, _extendedInformation).Result; Assert.AreEqual(true, result.Success); Assert.IsNotNull(result.TransactionResponse); tranResult = result.TransactionResponse; Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); //Re-assign latest transaction key for next Void method to pass. var transactionKey = tranResult.TransactionKey; //Test Void method. result = _paymentService.Void(transactionKey, _extendedInformation).Result; Assert.AreEqual(true, result.Success); Assert.IsNotNull(result.TransactionResponse); tranResult = result.TransactionResponse; Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); }
public void TestSuccessCreditCardTransaction_PreAuthorizeCaptureVoid_TransactionIsSuccess() { ExtendedInformation extInfo = new ExtendedInformation { Customer = "TEST_0199999", InvoiceNumber = "TEST" + DateTime.Now.ToString("yyyyMMdd_HHmmss.fffff"), DocumentHead = new LevelTwoData { DiscountAmount = 10M, DutyAmount = 110M, TaxAmount = 10M, FreightAmount = 5M, ShipFromZip = "60139", ShipToZip = "60189", PONumber = "PO_1235", OrderDate = DateTime.Now }, DocumentLines = new List <LevelThreeData> { new LevelThreeData { ItemDesc = "SHOE-LA01-BLACK", ItemQuantity = 1M, ItemUOM = "PAIR", ItemAmount = 55M, ItemDiscount = 5M }, new LevelThreeData { ItemDesc = "SHOE-LA02-WHITE", ItemQuantity = 1M, ItemUOM = "PAIR", ItemAmount = 55M, ItemDiscount = 5M } }, ExtentionInformation = new Dictionary <string, object>() { { "AppID", "PayFabric.Net" }, { "DisableEmailReceipt", true } } }; //Test PreAuthorize method. ServiceNetResponse result = _paymentService.PreAuthorize(115.0M, _currency, _goodcard, extInfo).Result; Assert.AreEqual(result.Success, true); Assert.IsNotNull(result.TransactionResponse); var tranResult = result.TransactionResponse; Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); Assert.IsNotNull(tranResult.TransactionKey); string transactionKey = tranResult.TransactionKey; //Test Capture method. result = _paymentService.Capture(transactionKey, 115M, _extendedInformation).Result; Assert.AreEqual(true, result.Success); Assert.IsNotNull(result.TransactionResponse); tranResult = result.TransactionResponse; Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); //Re-assign latest transaction key for next Void method to pass. transactionKey = tranResult.TransactionKey; //Test Void method. result = _paymentService.Void(transactionKey, _extendedInformation).Result; Assert.AreEqual(true, result.Success); Assert.IsNotNull(result.TransactionResponse); tranResult = result.TransactionResponse; Assert.AreEqual(TransactionStatus.Approved, result.TransactionStatus); }