/// <summary>
        /// This method allows you void an authorized but not captured payment. In this case a Void button will be visible on the
        /// order details page in admin area. Note that an order should be authorized and SupportVoid property should return true.
        /// </summary>
        /// <param name="voidPaymentRequest">Request</param>
        /// <returns>Result</returns>
        public VoidPaymentResult Void(VoidPaymentRequest voidPaymentRequest)
        {
            var result = new VoidPaymentResult();

            Order order = voidPaymentRequest.Order;

            if (int.TryParse(order.AuthorizationTransactionId, out int transactionNumber))
            {
                PayexInterface payex        = GetPayexInterface();
                CancelResult   cancelResult = payex.Cancel(transactionNumber).GetAwaiter().GetResult();

                if (cancelResult.IsRequestSuccessful)
                {
                    result.NewPaymentStatus = PaymentStatus.Voided;
                }
                else
                {
                    result.AddError(cancelResult.GetErrorDescription());
                }
            }
            else
            {
                result.AddError(
                    string.Format(
                        "The order did not contain a valid TransactionNumber in the AuthorizationTransactionId field ('{0}').",
                        order.AuthorizationTransactionId));
            }

            return(result);
        }
示例#2
0
        public static CancelResult ParseCancelResult(string xmlText)
        {
            var result = new CancelResult {
                RawXml = xmlText
            };
            var root = result.GetRootElement();

            ParseTransactionResult(result, root);
            return(result);
        }
        private static void Main(string[] args)
        {
            // Declare credentials to be used with the Stage Transaction Request
            string credentialsName   = "TEST MERCHANT";
            string credentialsSiteID = "XXXXXXXX";
            string credentialsKey    = "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX";
            string ipAddress         = "192.168.0.123";

            // Build Transport request details
            Console.WriteLine("Staging Transaction{0}", Environment.NewLine);
            TransportServiceSoapClient transportServiceSoapClient = new TransportServiceSoapClient();
            TransportRequest           transportRequest           = new TransportRequest
            {
                TransactionType = "sale",
                Amount          = 1.01M,
                ClerkId         = "1",
                OrderNumber     = "1126",
                Dba             = "Test DBA",
                SoftwareName    = "Test Software",
                SoftwareVersion = "1.0",
                TransactionId   = "102911",
                TerminalId      = "01",
                PoNumber        = "PO12345",
                ForceDuplicate  = true,
            };

            // Stage Transaction
            TransportResponse transportResponse = transportServiceSoapClient.CreateTransaction(credentialsName, credentialsSiteID, credentialsKey, transportRequest);
            string            transportKey      = transportResponse.TransportKey;

            Console.WriteLine("TransportKey Received = {0}{1}", transportKey, Environment.NewLine);
            // Initiate transaction thread with received TransportKey
            Task <object> transactionResultTask = GeniusRequest($"http://{ipAddress}:8080/v2/pos?TransportKey={transportKey}&Format=XML", typeof(TransactionResult));

            // Wait 5 seconds
            Console.WriteLine("Waiting 5 seconds before canceling transaction");
            Thread.Sleep(5000);
            CancelResult cancelResult = (CancelResult)GeniusRequest($"http://{ipAddress}:8080/pos?Action=Cancel&Format=XML", typeof(CancelResult)).Result;

            Console.WriteLine("Cancel Result: {0}", cancelResult.Status);
            // Wait for Transaction Results then output
            transactionResultTask.Wait();
            TransactionResult transactionResult = (TransactionResult)transactionResultTask.Result;

            Console.WriteLine("Transaction Result: {0}", transactionResult.Status);
            Console.WriteLine("Amount: {0}", transactionResult.AmountApproved);
            Console.WriteLine("AuthCode: {0}", transactionResult.AuthorizationCode);
            Console.WriteLine("Token: {0}", transactionResult.Token);
            Console.WriteLine("Account Number: {0}", transactionResult.AccountNumber);

            // Close application
            Console.WriteLine("Press Any Key to Close");
            Console.ReadKey();
        }
示例#4
0
 /// <summary>
 /// Returns the current state.
 /// If the state == <see cref="State.InArena"/>
 /// then the arena is not cancelled.
 /// Call LeaveArena to cancel that.
 /// </summary>
 /// <returns></returns>
 public CancelResult Cancel()
 {
     lock (mutex)
     {
         var result = new CancelResult
         {
             match_decl = match_player_decl
         };
         if (state == State.InArena)
         {
             result.new_state = State.InArena;
             return(result);
         }
         state            = State.NotQueued;
         result.new_state = State.NotQueued;
         return(result);
     }
 }
        private static void Main(string[] args)
        {
            string ipAddress = "192.168.0.123";

            // Initiate Cancel
            WebRequest webReq = WebRequest.Create($"http://{ipAddress}:8080/pos?Action=Cancel&Format=XML");

            using (WebResponse webResp = webReq.GetResponse())
            {
                using (Stream responseStream = webResp.GetResponseStream())
                {
                    // Validate XML to Genius XSD class
                    StreamReader  streamReader      = new StreamReader(responseStream);
                    XmlSerializer xmlSerializer     = new XmlSerializer(typeof(CancelResult));
                    CancelResult  transactionResult = (CancelResult)xmlSerializer.Deserialize(streamReader);
                    Console.WriteLine("Cancel Result: {0}", transactionResult.Status);
                    Console.WriteLine("Response Message: {0}", transactionResult.ResponseMessage);
                }
            }

            // Close application
            Console.WriteLine("Press Any Key to Close");
            Console.ReadKey();
        }
示例#6
0
 public CancelArgs(CancelResult result)
 {
     Result = result;
 }
示例#7
0
 public CancelArgs(CancelResult result)
 {
     Result = result;
 }
示例#8
0
        /// <summary>
        /// Cancel a scheduled SMS
        /// </summary>
        /// <param name="messageId"></param>
        /// <returns></returns>
        public CancelResult CancelScheduledMessage(int messageId)
        {
            IRestResponse response = this.Request(RestSharp.Method.DELETE, $"mtsms/{messageId}");

            return(CancelResult.ParseResponse(messageId, response.StatusCode));
        }