public void GetSchemeSettlementEntries_OnValidResponse_ReturnCount()
        {
            // arrange
            var          stlEnqMsg            = new SettlementEnquiryRequest(RequestIdHelper.Id("stlenq")).ToMessage();
            var          transactionFlowState = new TransactionFlowState("1", TransactionType.SettlementEnquiry, 0, stlEnqMsg, $"Waiting for EFTPOS connection to make a settlement enquiry");
            var          secrets = SpiClientTestUtils.SetTestSecrets();
            const string jsonStr = @"{""message"":{""data"":{""accumulacxted_purchase_count"":""1"",""accumulated_purchase_value"":""1000"",""accumulated_settle_by_acquirer_count"":""1"",""accumulated_settle_by_acquirer_value"":""1000"",""accumulated_total_count"":""1"",""accumulated_total_value"":""1000"",""bank_date"":""14062019"",""bank_time"":""160940"",""host_response_code"":""941"",""host_response_text"":""CUTOVER COMPLETE"",""merchant_acquirer"":""EFTPOS FROM BANK SA"",""merchant_address"":""213 Miller Street"",""merchant_city"":""Sydney"",""merchant_country"":""Australia"",""merchant_name"":""Merchant4"",""merchant_postcode"":""2060"",""merchant_receipt"":""EFTPOS FROM BANK SA\r\nMerchant4\r\n213 Miller Street\r\nSydney 2060\r\n\r\nAustralia\r\n\r\n\r\n SETTLEMENT CUTOVER\r\nTSP     100612348842\r\nTIME   14JUN19 16:09\r\nTRAN   001137-001137\r\nFROM   13JUN19 20:00\r\nTO     14JUN19 16:09\r\n\r\nDebit\r\nTOT     0      $0.00\r\n\r\nMasterCard\r\nTOT     0      $0.00\r\n\r\nVisa\r\nPUR     1     $10.00\r\nTOT     1     $10.00\r\n\r\nBANKED  1     $10.00\r\n\r\nAmex\r\nTOT     0      $0.00\r\n\r\nDiners\r\nTOT     0      $0.00\r\n\r\nJCB\r\nTOT     0      $0.00\r\n\r\nUnionPay\r\nTOT     0      $0.00\r\n\r\nTOTAL\r\nPUR     1     $10.00\r\nTOT     1     $10.00\r\n\r\n (941) CUTOVER COMP\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"",""schemes"":[{""scheme_name"":""Debit"",""settle_by_acquirer"":""Yes"",""total_count"":""0"",""total_value"":""0""},{""scheme_name"":""MasterCard"",""settle_by_acquirer"":""Yes"",""total_count"":""0"",""total_value"":""0""},{""scheme_name"":""Visa"",""settle_by_acquirer"":""Yes"",""total_count"":""1"",""total_purchase_count"":""1"",""total_purchase_value"":""1000"",""total_value"":""1000""},{""scheme_name"":""Amex"",""settle_by_acquirer"":""No"",""total_count"":""0"",""total_value"":""0""},{""scheme_name"":""Diners"",""settle_by_acquirer"":""No"",""total_count"":""0"",""total_value"":""0""},{""scheme_name"":""JCB"",""settle_by_acquirer"":""No"",""total_count"":""0"",""total_value"":""0""},{""scheme_name"":""UnionPay"",""settle_by_acquirer"":""No"",""total_count"":""0"",""total_value"":""0""}],""settlement_period_end_date"":""14Jun19"",""settlement_period_end_time"":""16:09"",""settlement_period_start_date"":""13Jun19"",""settlement_period_start_time"":""20:00"",""settlement_triggered_date"":""14Jun19"",""settlement_triggered_time"":""16:09:40"",""stan"":""000000"",""success"":true,""terminal_id"":""100612348842"",""transaction_range"":""001137-001137""},""datetime"":""2019-06-14T16:09:46.395"",""event"":""settle_response"",""id"":""settle116""}}";

            // act
            var msg = Message.FromJson(jsonStr, secrets);

            transactionFlowState.Response = msg;
            var comWrapper     = new ComWrapper();
            var schemeArray    = comWrapper.GetSchemeSettlementEntries(transactionFlowState);
            var settleResponse = new Settlement(transactionFlowState.Response);
            var schemes        = settleResponse.GetSchemeSettlementEntries();
            var schemeList     = new List <SchemeSettlementEntry>();

            foreach (var s in schemes)
            {
                schemeList.Add(s);
            }

            // assert
            Assert.Equal(schemeArray.ToList().Count, schemeList.Count);
        }
Пример #2
0
        private void HandleFinishedGetLastTransaction(TransactionFlowState txState)
        {
            if (txState.Response != null)
            {
                var gltResponse = new GetLastTransactionResponse(txState.Response);

                if (_lastCmd.Length > 1)
                {
                    // User specified that he intended to retrieve a specific tx by pos_ref_id
                    // This is how you can use a handy function to match it.
                    var success = _spi.GltMatch(gltResponse, _lastCmd[1]);
                    if (success == Message.SuccessState.Unknown)
                    {
                        Console.WriteLine("# Did not retrieve Expected Transaction. Here is what we got:");
                    }
                    else
                    {
                        Console.WriteLine("# Tx Matched Expected Purchase Request.");
                    }
                }

                var purchaseResponse = new PurchaseResponse(txState.Response);
                Console.WriteLine("# Scheme: {0}", purchaseResponse.SchemeName);
                Console.WriteLine("# Response: {0}", purchaseResponse.GetResponseText());
                Console.WriteLine("# RRN: {0}", purchaseResponse.GetRRN());
                Console.WriteLine("# Error: {0}", txState.Response.GetError());
                Console.WriteLine("# Customer Receipt:");
                Console.WriteLine(purchaseResponse.GetCustomerReceipt().TrimEnd());
            }
            else
            {
                // We did not even get a response, like in the case of a time-out.
                Console.WriteLine("# Could Not Retrieve Last Transaction.");
            }
        }
Пример #3
0
        public void TransactionFlowState_OnValidRequestGotGltResponse_ReturnObject()
        {
            // arrange
            var stlEnqMsg            = new SettlementEnquiryRequest(RequestIdHelper.Id("stlenq")).ToMessage();
            var transactionFlowState = new TransactionFlowState("1", TransactionType.SettlementEnquiry, 0, stlEnqMsg, $"Waiting for EFTPOS connection to make a settlement enquiry");

            // act
            transactionFlowState.GotGltResponse();

            // assert
            Assert.False(transactionFlowState.AwaitingGltResponse);
        }
Пример #4
0
        public void TransactionFlowState_OnValidRequestAuthCodeSent_ReturnObjects()
        {
            // arrange
            var stlEnqMsg            = new SettlementEnquiryRequest(RequestIdHelper.Id("stlenq")).ToMessage();
            var transactionFlowState = new TransactionFlowState("1", TransactionType.SettlementEnquiry, 0, stlEnqMsg, $"Waiting for EFTPOS connection to make a settlement enquiry");

            // act
            transactionFlowState.AuthCodeSent("AuthCodeSent");

            // assert
            Assert.False(transactionFlowState.AwaitingPhoneForAuth);
            Assert.Equal("AuthCodeSent", transactionFlowState.DisplayMessage);
        }
Пример #5
0
        public void TransactionFlowState_OnValidRequestCancelFailed_ReturnObjects()
        {
            // arrange
            var stlEnqMsg            = new SettlementEnquiryRequest(RequestIdHelper.Id("stlenq")).ToMessage();
            var transactionFlowState = new TransactionFlowState("1", TransactionType.SettlementEnquiry, 0, stlEnqMsg, $"Waiting for EFTPOS connection to make a settlement enquiry");

            // act
            transactionFlowState.CancelFailed("CancelFailed");

            // assert
            Assert.False(transactionFlowState.AttemptingToCancel);
            Assert.Equal("CancelFailed", transactionFlowState.DisplayMessage);
        }
Пример #6
0
        private void HandleFinishedPurchase(TransactionFlowState txState)
        {
            PurchaseResponse purchaseResponse;

            switch (txState.Success)
            {
            case Message.SuccessState.Success:
                Console.WriteLine($"# WOOHOO - WE GOT PAID!");
                purchaseResponse = new PurchaseResponse(txState.Response);
                Console.WriteLine("# Response: {0}", purchaseResponse.GetResponseText());
                Console.WriteLine("# RRN: {0}", purchaseResponse.GetRRN());
                Console.WriteLine("# Scheme: {0}", purchaseResponse.SchemeName);
                Console.WriteLine("# Customer Receipt:");
                Console.WriteLine(!purchaseResponse.WasCustomerReceiptPrinted() ? purchaseResponse.GetCustomerReceipt().TrimEnd() : "# PRINTED FROM EFTPOS");
                Console.WriteLine("# PURCHASE: {0}", purchaseResponse.GetPurchaseAmount());
                Console.WriteLine("# TIP: {0}", purchaseResponse.GetTipAmount());
                Console.WriteLine("# SURCHARGE: {0}", purchaseResponse.GetSurchargeAmount());
                Console.WriteLine("# CASHOUT: {0}", purchaseResponse.GetCashoutAmount());
                Console.WriteLine("# BANKED NON-CASH AMOUNT: {0}", purchaseResponse.GetBankNonCashAmount());
                Console.WriteLine("# BANKED CASH AMOUNT: {0}", purchaseResponse.GetBankCashAmount());

                break;

            case Message.SuccessState.Failed:
                Console.WriteLine($"# WE DID NOT GET PAID :(");
                if (txState.Response != null)
                {
                    purchaseResponse = new PurchaseResponse(txState.Response);
                    Console.WriteLine("# Error: {0}", txState.Response.GetError());
                    Console.WriteLine("# Error Detail: {0}", txState.Response.GetErrorDetail());
                    Console.WriteLine("# Response: {0}", purchaseResponse.GetResponseText());
                    Console.WriteLine("# RRN: {0}", purchaseResponse.GetRRN());
                    Console.WriteLine("# Scheme: {0}", purchaseResponse.SchemeName);
                    Console.WriteLine("# Customer Receipt:");
                    Console.WriteLine(!purchaseResponse.WasCustomerReceiptPrinted()
                            ? purchaseResponse.GetCustomerReceipt().TrimEnd()
                            : "# PRINTED FROM EFTPOS");
                }
                break;

            case Message.SuccessState.Unknown:
                Console.WriteLine($"# WE'RE NOT QUITE SURE WHETHER WE GOT PAID OR NOT :/");
                Console.WriteLine($"# CHECK THE LAST TRANSACTION ON THE EFTPOS ITSELF FROM THE APPROPRIATE MENU ITEM.");
                Console.WriteLine($"# IF YOU CONFIRM THAT THE CUSTOMER PAID, CLOSE THE ORDER.");
                Console.WriteLine($"# OTHERWISE, RETRY THE PAYMENT FROM SCRATCH.");
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #7
0
        public void TransactionFlowState_OnValidRequestCallingGlt_ReturnObjects()
        {
            // arrange
            var stlEnqMsg            = new SettlementEnquiryRequest(RequestIdHelper.Id("stlenq")).ToMessage();
            var transactionFlowState = new TransactionFlowState("1", TransactionType.SettlementEnquiry, 0, stlEnqMsg, $"Waiting for EFTPOS connection to make a settlement enquiry");

            // act
            transactionFlowState.CallingGlt("25");

            // assert
            Assert.True(transactionFlowState.AwaitingGltResponse);
            Assert.NotNull(transactionFlowState.LastStateRequestTime);
            Assert.Equal("25", transactionFlowState.LastGltRequestId);
        }
Пример #8
0
        private static void HandleFinishedSettlementEnquiry(TransactionFlowState txState)
        {
            switch (txState.Success)
            {
            case Message.SuccessState.Success:
                Console.WriteLine($"# SETTLEMENT ENQUIRY SUCCESSFUL!");
                if (txState.Response != null)
                {
                    var settleResponse = new Settlement(txState.Response);
                    Console.WriteLine("# Response: {0}", settleResponse.GetResponseText());
                    Console.WriteLine("# Merchant Receipt:");
                    Console.WriteLine(settleResponse.GetReceipt().TrimEnd());
                    Console.WriteLine("# Period Start: " + settleResponse.GetPeriodStartTime());
                    Console.WriteLine("# Period End: " + settleResponse.GetPeriodEndTime());
                    Console.WriteLine("# Settlement Time: " + settleResponse.GetTriggeredTime());
                    Console.WriteLine("# Transaction Range: " + settleResponse.GetTransactionRange());
                    Console.WriteLine("# Terminal Id: " + settleResponse.GetTerminalId());
                    Console.WriteLine("# Total TX Count: " + settleResponse.GetTotalCount());
                    Console.WriteLine($"# Total TX Value: {settleResponse.GetTotalValue() / 100.0}");
                    Console.WriteLine("# By Aquirer TX Count: " + settleResponse.GetSettleByAcquirerCount());
                    Console.WriteLine($"# By Aquirere TX Value: {settleResponse.GetSettleByAcquirerValue() / 100.0}");
                    Console.WriteLine("# SCHEME SETTLEMENTS:");
                    var schemes = settleResponse.GetSchemeSettlementEntries();
                    foreach (var s in schemes)
                    {
                        Console.WriteLine("# " + s);
                    }
                }
                break;

            case Message.SuccessState.Failed:
                Console.WriteLine($"# SETTLEMENT ENQUIRY FAILED!");
                if (txState.Response != null)
                {
                    var settleResponse = new Settlement(txState.Response);
                    Console.WriteLine("# Response: {0}", settleResponse.GetResponseText());
                    Console.WriteLine("# Error: {0}", txState.Response.GetError());
                    Console.WriteLine("# Merchant Receipt:");
                    Console.WriteLine(settleResponse.GetReceipt().TrimEnd());
                }
                break;

            case Message.SuccessState.Unknown:
                Console.WriteLine($"# SETTLEMENT ENQUIRY RESULT UNKNOWN!");
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #9
0
        public void TransactionFlowState_OnValidRequestFailed_ReturnObjects()
        {
            // arrange
            var stlEnqMsg            = new SettlementEnquiryRequest(RequestIdHelper.Id("stlenq")).ToMessage();
            var transactionFlowState = new TransactionFlowState("1", TransactionType.SettlementEnquiry, 0, stlEnqMsg, $"Waiting for EFTPOS connection to make a settlement enquiry");

            // act
            transactionFlowState.Failed(stlEnqMsg, "Failed");

            // assert
            Assert.Equal(stlEnqMsg, transactionFlowState.Response);
            Assert.True(transactionFlowState.Finished);
            Assert.Equal(Message.SuccessState.Failed, transactionFlowState.Success);
            Assert.Equal("Failed", transactionFlowState.DisplayMessage);
        }
Пример #10
0
        private void HandleFinishedMoto(TransactionFlowState txState)
        {
            MotoPurchaseResponse motoResponse;
            PurchaseResponse     purchaseResponse;

            switch (txState.Success)
            {
            case Message.SuccessState.Success:
                Console.WriteLine($"# WOOHOO - WE GOT MOTO-PAID!");
                motoResponse     = new MotoPurchaseResponse(txState.Response);
                purchaseResponse = motoResponse.PurchaseResponse;
                Console.WriteLine("# Response: {0}", purchaseResponse.GetResponseText());
                Console.WriteLine("# RRN: {0}", purchaseResponse.GetRRN());
                Console.WriteLine("# Scheme: {0}", purchaseResponse.SchemeName);
                Console.WriteLine("# Card Entry: {0}", purchaseResponse.GetCardEntry());
                Console.WriteLine("# Customer Receipt:");
                Console.WriteLine(!purchaseResponse.WasCustomerReceiptPrinted() ? purchaseResponse.GetCustomerReceipt().TrimEnd() : "# PRINTED FROM EFTPOS");
                Console.WriteLine("# PURCHASE: {0}", purchaseResponse.GetPurchaseAmount());
                Console.WriteLine("# BANKED NON-CASH AMOUNT: {0}", purchaseResponse.GetBankNonCashAmount());
                Console.WriteLine("# BANKED CASH AMOUNT: {0}", purchaseResponse.GetBankCashAmount());
                break;

            case Message.SuccessState.Failed:
                Console.WriteLine($"# WE DID NOT GET MOTO-PAID :(");
                if (txState.Response != null)
                {
                    motoResponse     = new MotoPurchaseResponse(txState.Response);
                    purchaseResponse = motoResponse.PurchaseResponse;
                    Console.WriteLine("# Error: {0}", txState.Response.GetError());
                    Console.WriteLine("# Error Detail: {0}", txState.Response.GetErrorDetail());
                    Console.WriteLine("# Response: {0}", purchaseResponse.GetResponseText());
                    Console.WriteLine("# RRN: {0}", purchaseResponse.GetRRN());
                    Console.WriteLine("# Scheme: {0}", purchaseResponse.SchemeName);
                    Console.WriteLine("# Customer Receipt:");
                    Console.WriteLine(purchaseResponse.GetCustomerReceipt().TrimEnd());
                }
                break;

            case Message.SuccessState.Unknown:
                Console.WriteLine($"# WE'RE NOT QUITE SURE WHETHER THE MOTO WENT THROUGH OR NOT :/");
                Console.WriteLine($"# CHECK THE LAST TRANSACTION ON THE EFTPOS ITSELF FROM THE APPROPRIATE MENU ITEM.");
                Console.WriteLine($"# YOU CAN THE TAKE THE APPROPRIATE ACTION.");
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #11
0
        public void TransactionFlowState_OnValidRequestPhoneForAuthRequired_ReturnObjects()
        {
            // arrnge
            var          secrets = SpiClientTestUtils.SetTestSecrets();
            const string jsonStr = @"{""message"":{""event"":""authorisation_code_required"",""id"":""20"",""datetime"":""2017-11-01T06:09:33.918"",""data"":{""merchant_id"":""12345678"",""auth_centre_phone_number"":""1800999999"",""pos_ref_id"": ""xyz""}}}";
            var          msg     = Message.FromJson(jsonStr, secrets);
            var          request = new PhoneForAuthRequired(msg);
            var          transactionFlowState = new TransactionFlowState("1", TransactionType.SettlementEnquiry, 0, msg, $"Waiting for EFTPOS connection to make a settlement enquiry");

            // act
            transactionFlowState.PhoneForAuthRequired(request, "PhoneForAuthRequired");

            // assert
            Assert.Equal(request, transactionFlowState.PhoneForAuthRequiredMessage);
            Assert.True(transactionFlowState.AwaitingPhoneForAuth);
            Assert.Equal("PhoneForAuthRequired", transactionFlowState.DisplayMessage);
        }
Пример #12
0
        public void TransactionFlowState_OnValidResponseSignatureRequired_ReturnObjects()
        {
            // arrange
            var          secrets = SpiClientTestUtils.SetTestSecrets();
            const string jsonStr = @"{""message"":{""data"":{""merchant_receipt"": ""\nEFTPOS FROM WESTPAC\nVAAS Product 2\n275 Kent St\nSydney 2000\nAustralia\n\n\nMID         02447506\nTSP     100381990116\nTIME 26APR17   11:29\nRRN     170426000358\nTRAN 000358   CREDIT\nAmex               S\nCARD............4477\nAUTH          764167\n\nPURCHASE   AUD100.00\nTIP          AUD5.00\n\nTOTAL      AUD105.00\n\n\n (001) APPROVE WITH\n     SIGNATURE\n\n\n\n\n\n\nSIGN:_______________\n\n\n\n\n\n\n\n"",""pos_ref_id"":""prchs-06-06-2019-11-49-05""},""datetime"": ""2017-04-26T11:30:21.000"",""event"": ""signature_required"",""id"": ""24""}}";

            // act
            var msg                  = Message.FromJson(jsonStr, secrets);
            var response             = new SignatureRequired(msg);
            var transactionFlowState = new TransactionFlowState("1", TransactionType.SettlementEnquiry, 0, msg, $"Waiting for EFTPOS connection to make a settlement enquiry");

            transactionFlowState.SignatureRequired(response, "SignatureRequired");

            // assert
            Assert.Equal(response, transactionFlowState.SignatureRequiredMessage);
            Assert.True(transactionFlowState.AwaitingSignatureCheck);
            Assert.Equal("SignatureRequired", transactionFlowState.DisplayMessage);
        }
Пример #13
0
        private void HandleFinishedCashout(TransactionFlowState txState)
        {
            CashoutOnlyResponse cashoutResponse;

            switch (txState.Success)
            {
            case Message.SuccessState.Success:
                Console.WriteLine($"# CASH-OUT SUCCESSFUL - HAND THEM THE CASH!");
                cashoutResponse = new CashoutOnlyResponse(txState.Response);
                Console.WriteLine("# Response: {0}", cashoutResponse.GetResponseText());
                Console.WriteLine("# RRN: {0}", cashoutResponse.GetRRN());
                Console.WriteLine("# Scheme: {0}", cashoutResponse.SchemeName);
                Console.WriteLine("# Customer Receipt:");
                Console.WriteLine(!cashoutResponse.WasCustomerReceiptPrinted() ? cashoutResponse.GetCustomerReceipt().TrimEnd() : "# PRINTED FROM EFTPOS");
                Console.WriteLine("# CASHOUT: {0}", cashoutResponse.GetCashoutAmount());
                Console.WriteLine("# BANKED NON-CASH AMOUNT: {0}", cashoutResponse.GetBankNonCashAmount());
                Console.WriteLine("# BANKED CASH AMOUNT: {0}", cashoutResponse.GetBankCashAmount());
                break;

            case Message.SuccessState.Failed:
                Console.WriteLine($"# CASHOUT FAILED!");
                if (txState.Response != null)
                {
                    cashoutResponse = new CashoutOnlyResponse(txState.Response);
                    Console.WriteLine("# Error: {0}", txState.Response.GetError());
                    Console.WriteLine("# Error Detail: {0}", txState.Response.GetErrorDetail());
                    Console.WriteLine("# Response: {0}", cashoutResponse.GetResponseText());
                    Console.WriteLine("# RRN: {0}", cashoutResponse.GetRRN());
                    Console.WriteLine("# Scheme: {0}", cashoutResponse.SchemeName);
                    Console.WriteLine("# Customer Receipt:");
                    Console.WriteLine(cashoutResponse.GetCustomerReceipt().TrimEnd());
                }
                break;

            case Message.SuccessState.Unknown:
                Console.WriteLine($"# WE'RE NOT QUITE SURE WHETHER THE CASHOUT WENT THROUGH OR NOT :/");
                Console.WriteLine($"# CHECK THE LAST TRANSACTION ON THE EFTPOS ITSELF FROM THE APPROPRIATE MENU ITEM.");
                Console.WriteLine($"# YOU CAN THE TAKE THE APPROPRIATE ACTION.");
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #14
0
        public void TransactionFlowState_OnValidState_ReturnObjects()
        {
            // arrange
            var stlEnqMsg = new SettlementEnquiryRequest(RequestIdHelper.Id("stlenq")).ToMessage();

            // act
            var transactionFlowState = new TransactionFlowState("1", TransactionType.SettlementEnquiry, 0, stlEnqMsg, $"Waiting for EFTPOS connection to make a settlement enquiry");

            // assert
            Assert.Equal("1", transactionFlowState.PosRefId);
            Assert.Equal("1", transactionFlowState.Id);
            Assert.Equal(TransactionType.SettlementEnquiry, transactionFlowState.Type);
            Assert.Equal(0, transactionFlowState.AmountCents);
            Assert.False(transactionFlowState.AwaitingSignatureCheck);
            Assert.False(transactionFlowState.RequestSent);
            Assert.False(transactionFlowState.Finished);
            Assert.Equal(Message.SuccessState.Unknown, transactionFlowState.Success);
            Assert.Equal($"Waiting for EFTPOS connection to make a settlement enquiry", transactionFlowState.DisplayMessage);
        }
Пример #15
0
        private void HandleFinishedRefund(TransactionFlowState txState)
        {
            RefundResponse refundResponse;

            switch (txState.Success)
            {
            case Message.SuccessState.Success:
                Console.WriteLine($"# REFUND GIVEN- OH WELL!");
                refundResponse = new RefundResponse(txState.Response);
                Console.WriteLine("# Response: {0}", refundResponse.GetResponseText());
                Console.WriteLine("# RRN: {0}", refundResponse.GetRRN());
                Console.WriteLine("# Scheme: {0}", refundResponse.SchemeName);
                Console.WriteLine("# Customer Receipt:");
                Console.WriteLine(!refundResponse.WasCustomerReceiptPrinted() ? refundResponse.GetCustomerReceipt().TrimEnd() : "# PRINTED FROM EFTPOS");
                Console.WriteLine("# REFUNDED AMOUNT: {0}", refundResponse.GetRefundAmount());
                break;

            case Message.SuccessState.Failed:
                Console.WriteLine($"# REFUND FAILED!");
                if (txState.Response != null)
                {
                    refundResponse = new RefundResponse(txState.Response);
                    Console.WriteLine("# Error: {0}", txState.Response.GetError());
                    Console.WriteLine("# Error Detail: {0}", txState.Response.GetErrorDetail());
                    Console.WriteLine("# Response: {0}", refundResponse.GetResponseText());
                    Console.WriteLine("# RRN: {0}", refundResponse.GetRRN());
                    Console.WriteLine("# Scheme: {0}", refundResponse.SchemeName);
                    Console.WriteLine("# Customer Receipt:");
                    Console.WriteLine(!refundResponse.WasCustomerReceiptPrinted() ? refundResponse.GetCustomerReceipt().TrimEnd() : "# PRINTED FROM EFTPOS");
                }
                break;

            case Message.SuccessState.Unknown:
                Console.WriteLine($"# WE'RE NOT QUITE SURE WHETHER THE REFUND WENT THROUGH OR NOT :/");
                Console.WriteLine($"# CHECK THE LAST TRANSACTION ON THE EFTPOS ITSELF FROM THE APPROPRIATE MENU ITEM.");
                Console.WriteLine($"# YOU CAN THE TAKE THE APPROPRIATE ACTION.");
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #16
0
 private void OnTxFlowStateChanged(object sender, TransactionFlowState txState)
 {
     Console.Clear();
     PrintStatusAndActions();
     Console.Write("> ");
 }
Пример #17
0
 private void OnTxFlowStateChanged(object sender, TransactionFlowState e)
 {
     SpiFlowInfo();
     SpiPairingStatus();
 }