예제 #1
0
        public void TestSimpleAuthSettleScenarioWithVoid()
        {
            var paymentRequest = new PaymentRequest(merchantInfo, sessionToken, currency, amount, paymentOptionCard)
            {
                TransactionType = ApiConstants.TransactionTypeAuth,
                Items           = items
            };

            var paymentResponse = requestExecutor.Payment(paymentRequest).GetAwaiter().GetResult();

            var settleRequest = new SettleTransactionRequest(
                merchantInfo,
                sessionToken,
                currency,
                amount,
                paymentResponse.TransactionId);

            var settleResponse = requestExecutor.SettleTransaction(settleRequest).GetAwaiter().GetResult();

            var request = new VoidTransactionRequest(
                merchantInfo,
                sessionToken,
                currency,
                amount,
                settleResponse.TransactionId);

            var response = requestExecutor.VoidTransaction(request).GetAwaiter().GetResult();

            Assert.IsNotNull(response);
            Assert.IsEmpty(response.Reason);
            Assert.AreEqual(ResponseStatus.Success, response.Status);
            Assert.IsNull(response.GwErrorReason);
            Assert.IsNull(response.PaymentMethodErrorReason);
            Assert.AreNotEqual(ApiConstants.TransactionStatusError, response.TransactionStatus);
        }
예제 #2
0
        private void VoidTransactionButton_Click(object sender, EventArgs e)
        {
            VoidTransactionRequest request = new VoidTransactionRequest();

            //request.OriginalRequestUUID = ;
            cloverConnector.VoidTransaction(new VoidTransactionRequest());
        }
예제 #3
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);
        }
예제 #4
0
        public override Transaction DoVoid(VoidTransactionRequest voidRequest)
        {
            VerifyStatus();
            Payment payment = voidRequest.Payment;

            if (payment == null)
            {
                throw new ArgumentNullException("request.Payment");
            }
            Transaction authorizeTransaction = voidRequest.AuthorizeTransaction;

            if (authorizeTransaction == null)
            {
                throw new ArgumentNullException("transactionRequest.AuthorizeTransaction");
            }

            CreditCardRequest request = InitializeVoidRequest(payment, authorizeTransaction);

            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, TransactionType.Void, voidRequest.Amount));
            }
            else
            {
                throw new Exception("Operation Failed, Response is null.");
            }
        }
예제 #5
0
        public override Transaction DoVoid(VoidTransactionRequest voidRequest)
        {
            Payment payment = voidRequest.Payment;

            if (payment == null)
            {
                throw new ArgumentNullException("request.Payment");
            }
            Transaction authorizeTransaction = voidRequest.AuthorizeTransaction;

            if (authorizeTransaction == null)
            {
                throw new ArgumentNullException("voidRequest.AuthorizeTransaction");
            }
            return(CreateTransaction(voidRequest.TransactionType, voidRequest.Amount));
        }
        public void TestEmptyConstructorsUsedForMappingFromConfigFile()
        {
            _ = new PaymentRequest();
            _ = new SettleTransactionRequest();
            _ = new VoidTransactionRequest();
            _ = new RefundTransactionRequest();
            _ = new GetPaymentStatusRequest();
            _ = new OpenOrderRequest();
            _ = new InitPaymentRequest();
            _ = new Authorize3dRequest();
            _ = new Verify3dRequest();
            _ = new PayoutRequest();
            _ = new GetCardDetailsRequest();
            _ = new GetMerchantPaymentMethodsRequest();

            Assert.Pass();
        }
예제 #7
0
        public async Task <VoidTransactionResponse> VoidTransaction(
            string currency,
            string amount,
            string relatedTransactionId,
            string clientUniqueId         = null,
            string clientRequestId        = null,
            string userId                 = null,
            UrlDetails urlDetails         = null,
            string authCode               = null,
            string customData             = null,
            string comment                = null,
            string customSiteName         = null,
            string productId              = null,
            DeviceDetails deviceDetails   = null,
            string rebillingType          = null,
            string authenticationTypeOnly = null,
            SubMerchant subMerchant       = null,
            Addendums addendums           = null)
        {
            var request = new VoidTransactionRequest(
                merchantInfo,
                sessionToken,
                currency,
                amount,
                relatedTransactionId)
            {
                AuthCode               = authCode,
                ClientUniqueId         = clientUniqueId,
                ClientRequestId        = clientRequestId,
                UserId                 = userId,
                UrlDetails             = urlDetails,
                CustomData             = customData,
                Comment                = comment,
                CustomSiteName         = customSiteName,
                ProductId              = productId,
                DeviceDetails          = deviceDetails,
                RebillingType          = rebillingType,
                AuthenticationTypeOnly = authenticationTypeOnly,
                SubMerchant            = subMerchant,
                Addendums              = addendums
            };

            return(await safechargeRequestExecutor.VoidTransaction(request));
        }
예제 #8
0
        public VoidPaymentResult Void(VoidPaymentRequest voidPaymentRequest)
        {
            var result = new VoidPaymentResult();

            var voidRequest = new VoidTransactionRequest()
            {
                Amount        = (int)(Math.Round(voidPaymentRequest.Order.OrderTotal, 2) * 100),
                TransactionId = voidPaymentRequest.Order.AuthorizationTransactionId
            };

            var voidResponse = _paylikeTransactionService.VoidTransaction(voidRequest);

            if (voidResponse.IsError)
            {
                result.AddError(voidResponse.ErrorMessage);
                result.AddError(voidResponse.ErrorContent);
            }
            else
            {
                result.NewPaymentStatus = PaymentStatus.Voided;
            }

            return(result);
        }
 public int VoidTransaction(VoidTransactionRequest request)
 {
     Send("/VoidTransaction", request);
     return(0);
 }
예제 #10
0
 public override Transaction DoVoid(VoidTransactionRequest voidRequest)
 {
     //Cancel order is different from void. Void is not supported
     //return AC.AcNotifier.CancelOrder(this, voidRequest);
     throw new NotSupportedException("Voiding of authorizations is not supported.");
 }
 public override Transaction DoVoid(VoidTransactionRequest voidRequest)
 {
     throw new Exception("Void is not supported by the InternetSecure gateway.");
 }
 private void VoidTransactionButton_Click(object sender, EventArgs e)
 {
     VoidTransactionRequest request = new VoidTransactionRequest();
     //request.OriginalRequestUUID = ;
     cloverConnector.VoidTransaction(new VoidTransactionRequest());
 }
 public int VoidTransaction(VoidTransactionRequest request)
 {
     throw new NotImplementedException();
 }
예제 #14
0
        public override Transaction DoVoid(VoidTransactionRequest voidRequest)
        {
            VerifyStatus();
            Payment payment = voidRequest.Payment;

            if (payment == null)
            {
                throw new ArgumentNullException("request.Payment");
            }
            Transaction authorizeTransaction = voidRequest.AuthorizeTransaction;

            if (authorizeTransaction == null)
            {
                throw new ArgumentNullException("transactionRequest.AuthorizeTransaction");
            }

            //HAVE WE CAPTURED ANY?
            LSDecimal capturedAmount = payment.Transactions.GetTotalCaptured();

            if (capturedAmount > 0)
            {
                //PAYJUNCTION CANNOT 'PARTIAL VOID'
                //JUST RETURN A SUCCESSFUL RESPONSE, THE REMAINING AUTHORIZATION WILL BE
                //RELEASED BY THE BANK WHEN IT IS NOT CAPTURED
                Transaction transaction = new Transaction();
                transaction.PaymentGatewayId      = this.PaymentGatewayId;
                transaction.ProviderTransactionId = authorizeTransaction.ProviderTransactionId;
                transaction.TransactionType       = voidRequest.TransactionType;
                transaction.TransactionStatus     = TransactionStatus.Successful;
                transaction.TransactionDate       = DateTime.UtcNow;
                transaction.Amount = voidRequest.Amount;
                return(transaction);
            }

            Dictionary <string, string> sensitiveData = new Dictionary <string, string>();
            string requestData = InitializeVoidRequest(payment, authorizeTransaction, 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, TransactionType.Void, voidRequest.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.");
            }
        }
예제 #15
0
 /// <summary>
 /// Not Supported.
 /// </summary>
 /// <param name="voidRequest"></param>
 /// <returns></returns>
 public override Transaction DoVoid(VoidTransactionRequest voidRequest)
 {
     throw new NotSupportedException("Operation Not Supported.");
 }
예제 #16
0
 public ApiResponse <Transaction> VoidTransaction(VoidTransactionRequest request)
 {
     return(SendApiRequest <VoidTransactionRequest, Transaction>(request));
 }
예제 #17
0
 /// <summary>
 /// Submits a void request for a previously authorized transaction
 /// </summary>
 /// <param name="voidRequest">The void request</param>
 /// <returns>Transaction that represents the result of the void request</returns>
 public abstract Transaction DoVoid(VoidTransactionRequest voidRequest);
예제 #18
0
        /// <summary>
        /// Voids this payment
        /// </summary>
        /// <param name="remoteIP">Remote IP of the user initiating the request</param>
        public virtual void Void(string remoteIP)
        {
            VoidTransactionRequest request = new VoidTransactionRequest(this, remoteIP);

            PaymentEngine.DoVoid(request);
        }
예제 #19
0
 public async Task <VoidTransactionResponse> VoidTransaction(VoidTransactionRequest voidTransactionRequest)
 {
     return(await this.PostAsync <VoidTransactionResponse, VoidTransactionRequest>(voidTransactionRequest));
 }