Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        public override Transaction DoCapture(CaptureTransactionRequest captureRequest)
        {
            Payment payment = captureRequest.Payment;

            if (payment == null)
            {
                throw new ArgumentNullException("request.Payment");
            }
            return(CreateTransaction(captureRequest.TransactionType, captureRequest.Amount));
        }
Ejemplo n.º 5
0
        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.");
            }
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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.");
 }
Ejemplo n.º 9
0
 public ApiResponse <Transaction> CaptureTransaction(CaptureTransactionRequest request)
 {
     return(SendApiRequest <CaptureTransactionRequest, Transaction>(request));
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Not Supported.
 /// </summary>
 /// <param name="captureRequest"></param>
 /// <returns></returns>
 public override Transaction DoCapture(CaptureTransactionRequest captureRequest)
 {
     throw new NotSupportedException("Operation Not Supported.");
 }
Ejemplo n.º 11
0
 public override Transaction DoCapture(CaptureTransactionRequest captureRequest)
 {
     return(AC.AcNotifier.ChargeOrder(this, captureRequest));
 }
Ejemplo n.º 12
0
 /// <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);
Ejemplo n.º 13
0
        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.");
            }
        }