public void RefundTransaction_PartialRefund_Success() { var response = transactionService.CreateTransaction(createTransactionRequest); CaptureTransactionRequest captureRequest = new CaptureTransactionRequest() { Amount = createTransactionRequest.Amount, Currency = createTransactionRequest.Currency, TransactionId = response.Content.Id }; var captureResponse = transactionService.CaptureTransaction(captureRequest); var refundRequest = new RefundTransactionRequest() { TransactionId = captureResponse.Content.Id, Amount = captureResponse.Content.Amount - 1 }; var refundResponse = transactionService.RefundTransaction(refundRequest); var transaction = refundResponse.Content; Assert.IsFalse(refundResponse.IsError); Assert.AreEqual(201, refundResponse.ResponseCode); Assert.IsNotNull(transaction.Id); Assert.AreEqual(captureResponse.Content.Amount - 1, transaction.RefundedAmount); Assert.AreEqual(createTransactionRequest.Amount, transaction.CapturedAmount); }
public void VoidTransaction_Success() { var transactionId = transactionService.CreateTransaction(createTransactionRequest).Content.Id; CaptureTransactionRequest captureRequest = new CaptureTransactionRequest() { Amount = createTransactionRequest.Amount, Currency = createTransactionRequest.Currency, TransactionId = transactionId }; var voidRequest = new VoidTransactionRequest() { TransactionId = transactionId, Amount = createTransactionRequest.Amount }; var voidResponse = transactionService.VoidTransaction(voidRequest); var transaction = voidResponse.Content; Assert.IsFalse(voidResponse.IsError); Assert.AreEqual(201, voidResponse.ResponseCode); Assert.IsNotNull(transaction.Id); Assert.AreEqual(createTransactionRequest.Amount, transaction.VoidedAmount); }
public CapturePaymentResult Capture(CapturePaymentRequest capturePaymentRequest) { var result = new CapturePaymentResult(); var primaryStoreCurrency = _currencyService.GetCurrencyById(_currencySettings.PrimaryStoreCurrencyId); var captureRequest = new CaptureTransactionRequest() { Amount = (int)(Math.Round(capturePaymentRequest.Order.OrderTotal, 2) * 100), Currency = primaryStoreCurrency.CurrencyCode, Descriptor = _paylikePaymentSettings.CaptureDescriptor, TransactionId = capturePaymentRequest.Order.AuthorizationTransactionId }; var captureResponse = _paylikeTransactionService.CaptureTransaction(captureRequest); if (captureResponse.IsError) { result.AddError(captureResponse.ErrorMessage); result.AddError(captureResponse.ErrorContent); } else { result.CaptureTransactionId = captureResponse.Content.Id; result.NewPaymentStatus = PaymentStatus.Paid; } return(result); }
public override Transaction DoCapture(CaptureTransactionRequest captureRequest) { Payment payment = captureRequest.Payment; if (payment == null) { throw new ArgumentNullException("request.Payment"); } return(CreateTransaction(captureRequest.TransactionType, captureRequest.Amount)); }
public override Transaction DoCapture(CaptureTransactionRequest captureRequest) { VerifyStatus(); Payment payment = captureRequest.Payment; if (payment == null) { throw new ArgumentNullException("request.Payment"); } Transaction authorizeTransaction = captureRequest.AuthorizeTransaction; if (authorizeTransaction == null) { throw new ArgumentNullException("transactionRequest.AuthorizeTransaction"); } CreditCardRequest request = InitializeCaptureRequest(payment, authorizeTransaction, captureRequest.Amount); CreditCardResponse response = null; //RECORD REQUEST if (this.UseDebugMode) { string reqDebug = BuildRequestDebug(request); this.RecordCommunication(this.Name, CommunicationDirection.Send, reqDebug, null); } //TODO : Test mode is not supported. if (this.UseTestMode) { response = (CreditCardResponse)TransactionClient.doTransaction(request, this.AccountToken); } else { response = (CreditCardResponse)TransactionClient.doTransaction(request, this.AccountToken); } if (response != null) { //RECORD RESPONSE if (this.UseDebugMode) { string respDebug = BuildResponseDebug(response); this.RecordCommunication(this.Name, CommunicationDirection.Receive, respDebug, null); } return(ProcessResponse(payment, response, captureRequest.TransactionType, captureRequest.Amount)); } else { throw new Exception("Operation Failed, Response is null."); } }
public static Transaction ChargeOrder(GoogleCheckout instance, CaptureTransactionRequest captureRequest) { string env = instance.UseTestMode ? "Sandbox" : "Production"; string merchantId = instance.MerchantID; string merchantKey = instance.MerchantKey; string orderNum = captureRequest.Payment.Order.GoogleOrderNumber; string currency = captureRequest.Payment.CurrencyCode; if (currency == null || currency.Length == 0) { currency = "USD"; } LSDecimal amount = captureRequest.Amount; LSDecimal remainingCapture = captureRequest.Payment.Transactions.GetTotalAuthorized() - captureRequest.Payment.Transactions.GetTotalCaptured(); ChargeOrderRequest request = new ChargeOrderRequest(merchantId, merchantKey, env, orderNum, currency, amount); Util.GCheckoutResponse response = request.Send(); Transaction transaction = new Transaction(); transaction.Amount = captureRequest.Amount; transaction.ProviderTransactionId = orderNum; transaction.PaymentGatewayId = instance.PaymentGatewayId; if (remainingCapture > amount) { transaction.TransactionType = TransactionType.PartialCapture; } else { transaction.TransactionType = TransactionType.Capture; } if (response.IsGood) { transaction.TransactionStatus = TransactionStatus.Pending; } else { transaction.TransactionStatus = TransactionStatus.Failed; transaction.ResponseMessage = response.ErrorMessage; } return(transaction); }
public void CaptureTransaction_Success() { var response = transactionService.CreateTransaction(createTransactionRequest); CaptureTransactionRequest captureRequest = new CaptureTransactionRequest() { Amount = createTransactionRequest.Amount, Currency = createTransactionRequest.Currency, TransactionId = response.Content.Id }; var captureResponse = transactionService.CaptureTransaction(captureRequest); var transaction = captureResponse.Content; Assert.IsFalse(captureResponse.IsError); Assert.AreEqual(201, captureResponse.ResponseCode); Assert.IsNotNull(transaction.Id); Assert.AreEqual(createTransactionRequest.Amount, transaction.Amount); Assert.AreEqual(createTransactionRequest.Currency, transaction.Currency); Assert.AreEqual(createTransactionRequest.Amount, transaction.CapturedAmount); Assert.IsTrue(transaction.Trail[0].Capture); }
public override Transaction DoCapture(CaptureTransactionRequest captureRequest) { throw new Exception("Capture is not supported by the InternetSecure gateway."); }
public ApiResponse <Transaction> CaptureTransaction(CaptureTransactionRequest request) { return(SendApiRequest <CaptureTransactionRequest, Transaction>(request)); }
/// <summary> /// Not Supported. /// </summary> /// <param name="captureRequest"></param> /// <returns></returns> public override Transaction DoCapture(CaptureTransactionRequest captureRequest) { throw new NotSupportedException("Operation Not Supported."); }
public override Transaction DoCapture(CaptureTransactionRequest captureRequest) { return(AC.AcNotifier.ChargeOrder(this, captureRequest)); }
/// <summary> /// Submits a capture request for a previously authorized transaction /// </summary> /// <param name="captureRequest">The capture request</param> /// <returns>Transaction that represents the result of the capture request</returns> public abstract Transaction DoCapture(CaptureTransactionRequest captureRequest);
public override Transaction DoCapture(CaptureTransactionRequest captureRequest) { VerifyStatus(); Payment payment = captureRequest.Payment; if (payment == null) { throw new ArgumentNullException("request.Payment"); } Transaction authorizeTransaction = captureRequest.AuthorizeTransaction; if (authorizeTransaction == null) { throw new ArgumentNullException("transactionRequest.AuthorizeTransaction"); } //YOU CAN ONLY CAPTURE THE AMOUNT OF THE AUTHORIZATION LSDecimal totalAuthorized = payment.Transactions.GetTotalAuthorized(); if (captureRequest.Amount != totalAuthorized) { Transaction transaction = new Transaction(); transaction.PaymentGatewayId = this.PaymentGatewayId; transaction.TransactionType = captureRequest.TransactionType; transaction.TransactionStatus = TransactionStatus.Failed; transaction.TransactionDate = DateTime.UtcNow; transaction.Amount = captureRequest.Amount; transaction.ResponseMessage = "You can only capture the authorization amount. Capture amount must be " + totalAuthorized.ToString("F2") + "."; return(transaction); } Dictionary <string, string> sensitiveData = new Dictionary <string, string>(); string requestData = InitializeCaptureRequest(payment, authorizeTransaction, captureRequest.Amount, sensitiveData); //RECORD REQUEST if (this.UseDebugMode) { this.RecordCommunication(this.Name, CommunicationDirection.Send, requestData, sensitiveData); } string responseData = SendRequestToGateway(requestData); if (responseData != null) { //RECORD RESPONSE if (this.UseDebugMode) { this.RecordCommunication(this.Name, CommunicationDirection.Receive, responseData, null); } Transaction transaction = ProcessResponse(payment, responseData, captureRequest.TransactionType, captureRequest.Amount); //PAYJUNCTION DOES NOT INCLUDE TRANSACTION ID WITH CAPTURES //IT IS THE SAME TRANSACTION ID AS AUTHORIZATION if (string.IsNullOrEmpty(transaction.ProviderTransactionId)) { transaction.ProviderTransactionId = authorizeTransaction.ProviderTransactionId; } return(transaction); } else { throw new Exception("Operation Failed, Response is null."); } }