示例#1
0
        /*  public EzeResult takePayment(PaymentType type, double amount, PaymentOptions options)
         * {
         *            EzeResult result = null;
         *            Console.WriteLine("...Take Payment <"+type.ToString()+",amount="+amount+","+">");
         *            TxnInput.Types.TxnType txnType = TxnInput.Types.TxnType.CARD_PRE_AUTH;
         *
         *    switch(type)
         *    {
         *            case PaymentType.CARD:
         *        {
         *            txnType = TxnInput.Types.TxnType.CARD_AUTH;
         *                        break;
         *        }
         *                case PaymentType.CASH:
         *        {
         *                        txnType = TxnInput.Types.TxnType.CASH;
         *                        break;
         *        }
         *                case PaymentType.CHEQUE:
         *        {
         *                        txnType = TxnInput.Types.TxnType.CHEQUE;
         *                        break;
         *        }
         *                default:
         *        {
         *                        txnType = TxnInput.Types.TxnType.CARD_PRE_AUTH;
         *            break;
         *        }
         *            }
         *
         *    if (amount <= 0) throw new EzeException("Amount is 0 or negative");
         *            if (txnType == TxnInput.Types.TxnType.CHEQUE)
         *    {
         *                    if ((null == options) ||
         *                            (null == options.getChequeNo()) || (options.getChequeNo().Length == 0) ||
         *                            (null == options.getBankCode()) || (options.getBankCode().Length == 0) ||
         *                            (null == options.getChequeDate()))
         *        {
         *                throw new EzeException("Cheque details not passed for a Cheque transaction");
         *                    }
         *            }
         *
         *            TxnInput tInput = TxnInput.CreateBuilder()
         *
         *                            .SetTxnType(txnType)
         *                            .SetAmount(amount)
         *                            .Build();
         *
         *            if (null != options) {
         *                    if (null != options.getOrderId()) tInput = TxnInput.CreateBuilder(tInput).SetOrderId(options.getOrderId()).Build();
         *                    if (null != options.getReceiptType()) tInput = TxnInput.CreateBuilder(tInput).SetReceiptType(options.getReceiptType()).Build();
         *                    if (null != options.getChequeNo()) tInput = TxnInput.CreateBuilder(tInput).SetChequeNumber(options.getChequeNo()).Build();
         *                    if (null != options.getBankCode()) tInput = TxnInput.CreateBuilder(tInput).SetBankCode(options.getBankCode()).Build();
         *                    if (null != options.getChequeDate()) tInput = TxnInput.CreateBuilder(tInput).SetChequeDate(options.getChequeDate().ToString()).Build();
         *            }
         *
         *            ApiInput apiInput = ApiInput.CreateBuilder()
         *                            .SetMsgType(ApiInput.Types.MessageType.TXN)
         *                            .SetMsgData(tInput.ToByteString()).Build();
         *
         *            this.send(apiInput);
         *
         *            while (true)
         *    {
         *                    result = this.getResult(this.receive());
         *
         *        if (result.getEventName() == EventName.TAKE_PAYMENT)
         *        {
         *            if (result.getStatus() == Status.SUCCESS) EzeEvent("Payment Successful", new EventArgs());
         *            else EzeEvent("Payment Failed", new EventArgs());
         *            break;
         *        }
         *            }
         *
         *    return result;
         *    } */

        public EzeResult sendReceipt(string txnId, string mobileNo, String email)
        {
            Console.Error.WriteLine("...sendReceipt <" + txnId + ">");

            ForwardReceiptInput receiptInput = ForwardReceiptInput.CreateBuilder()
                                               .SetTxnId(txnId)
                                               .SetCustomerMobile(mobileNo)
                                               .SetCustomerEmail(email).Build();

            ApiInput apiInput = ApiInput.CreateBuilder()
                                .SetMsgType(ApiInput.Types.MessageType.FORWARD_RECEIPT)
                                .SetMsgData(receiptInput.ToByteString()).Build();

            this.send(apiInput);
            EzeResult result = null;

            while (true)
            {
                result = this.getResult(this.receive());
                if (result.getEventName() == EventName.SEND_RECEIPT)
                {
                    break;
                }
            }

            return(result);
        }
示例#2
0
        /**
         * Method attaches a signature (captured) from the UI to a successfully executed transaction
         */
        public EzeResult attachSignature(string txnId, ImageType imageType, ByteString imageData, int height, int width, double tipAmount)
        {
            Console.Error.WriteLine("...attachSignature <" + txnId + ">");

            SignatureInput signatureInput = SignatureInput.CreateBuilder()
                                            .SetTxnId(txnId)
                                            .SetImageType(MapImageType(imageType))
                                            .SetImageBytes(imageData)
                                            .SetHeight(height)
                                            .SetWidth(width)
                                            .SetTipAmount(tipAmount)
                                            .Build();

            ApiInput apiInput = ApiInput.CreateBuilder()
                                .SetMsgType(ApiInput.Types.MessageType.ATTACH_SIGNATURE)
                                .SetMsgData(signatureInput.ToByteString()).Build();

            this.send(apiInput);
            EzeResult result = null;

            while (true)
            {
                result = this.getResult(this.receive());
                if (result.getEventName() == EventName.ATTACH_SIGNATURE)
                {
                    break;
                }
            }
            return(result);
        }
示例#3
0
        public EzeResult getTransaction(String txId)
        {
            Console.WriteLine("Fetching transaction details for " + txId);
            TxnDetailsInput txnInput = TxnDetailsInput.CreateBuilder().SetTxnId(txId).Build();
            ApiInput        input    = ApiInput.CreateBuilder().SetMsgType(ApiInput.Types.MessageType.TXN_DETAILS).SetMsgData(txnInput.ToByteString()).Build();

            this.send(input);
            EzeResult result = null;

            while (true)
            {
                result = this.getResult(this.receive());

                if (result.getEventName() == EventName.TRANSACTION_DETAILS)
                {
                    if (result.getStatus() == Status.SUCCESS)
                    {
                        EzeEvent("Fetching Transaction Successful", new EventArgs());
                    }
                    else
                    {
                        EzeEvent("Fetching Transaction Details Failed", new EventArgs());
                    }
                    break;
                }
            }

            return(result);
        }
示例#4
0
        private EzeResult login(LoginMode mode, string userName, string passkey)
        {
            Console.WriteLine("...Login User <" + mode + ":" + userName + ":" + passkey + ">");

            LoginInput loginInput = LoginInput.CreateBuilder()
                                    .SetLoginMode(MapLoginMode(mode))
                                    .SetUsername(userName)
                                    .SetPasskey(passkey).Build();

            ApiInput apiInput = ApiInput.CreateBuilder()
                                .SetMsgType(ApiInput.Types.MessageType.LOGIN)
                                .SetMsgData(loginInput.ToByteString()).Build();

            this.send(apiInput);

            EzeResult result = null;

            while (true)
            {
                result = this.getResult(this.receive());
                if (result.getEventName() != EventName.LOGIN)
                {
                    continue;
                }
                if ((result.getStatus().ToString() == com.eze.ezecli.ApiOutput.Types.ResultStatus.FAILURE.ToString()))
                {
                    throw new EzeException("Login failed. " + result.ToString());
                }
                break;
            }
            Console.WriteLine("2......" + result);
            return(result);
        }
示例#5
0
        private EzeResult logout()
        {
            Console.WriteLine("...logging out");

            ApiInput apiInput = ApiInput.CreateBuilder()
                                .SetMsgType(ApiInput.Types.MessageType.LOGOUT)
                                .Build();

            this.send(apiInput);
            EzeResult result = null;

            while (true)
            {
                result = this.getResult(this.receive());
                if (result.getEventName() != EventName.LOGOUT)
                {
                    continue;
                }
                if ((result.getStatus().ToString() == ApiOutput.Types.ResultStatus.FAILURE.ToString()))
                {
                    Console.WriteLine("Error logout");
                }
                else
                {
                    Console.WriteLine(" logout success");
                    break;
                }
            }
            return(result);
        }
示例#6
0
        private EzeResult exit()
        {
            Console.WriteLine("...exiting");
            ApiInput apiInput = ApiInput.CreateBuilder()
                                .SetMsgType(ApiInput.Types.MessageType.EXIT)
                                .Build();

            this.send(apiInput);
            EzeResult result = null;

            while (true)
            {
                result = this.getResult(this.receive());
                if (result.getEventName() != EventName.EXIT)
                {
                    continue;
                }
                if ((result.getStatus().ToString() == ApiOutput.Types.ResultStatus.FAILURE.ToString()))
                {
                    EzeEvent("Initialization succesful", new EventArgs());
                    return(result);;
                }
                break;
            }
            return(result);
        }
示例#7
0
        public EzeResult voidTransaction(String txnId)
        {
            Console.WriteLine("Void....");
            VoidTxnInput voidTaxInput = VoidTxnInput.CreateBuilder().SetTxnId(txnId).Build();
            ApiInput     apiInput     = ApiInput.CreateBuilder().SetMsgType(ApiInput.Types.MessageType.VOID_TXN).SetMsgData(voidTaxInput.ToByteString()).Build();

            this.send(apiInput);
            EzeResult result = null;

            while (true)
            {
                result = this.getResult(this.receive());
                if (result.getEventName() == EventName.VOID_PAYMENT)
                {
                    Console.WriteLine(result);
                    break;
                }
            }
            return(result);
        }
示例#8
0
        /// <summary>
        ///
        /// </summary>
        /// <returns>EzeResult - instance </returns>
        public EzeResult prepareDevice()
        {
            Console.WriteLine("...Preparing Device");

            ApiInput apiInput = ApiInput.CreateBuilder()
                                .SetMsgType(ApiInput.Types.MessageType.PREPARE_DEVICE)
                                .Build();

            this.send(apiInput);
            EzeResult result = null;

            while (true)
            {
                result = this.getResult(this.receive());
                if (result.getEventName() == EventName.PREPARE_DEVICE)
                {
                    break;
                }
            }
            Console.WriteLine("99: " + result);
            return(result);
        }
示例#9
0
 public EzeResult close()
 {
     if (null != API)
     {
         EzeResult result = API.logout();
         if (result.getStatus() == Status.SUCCESS)
         {
             result = API.exit();
             if (result.getStatus() == Status.SUCCESS)
             {
                 API.destroyInstance();
                 result = new EzeResult();
                 result.setEventName(EventName.LOGOUT);
                 result.setStatus(Status.SUCCESS);
                 return(result);
             }
             else
             {
                 EzeEvent("Exit UnSuccesful", new EventArgs());
                 return(result);
             }
         }
         else
         {
             EzeEvent("Close UnSuccesful", new EventArgs());
             return(result);
         }
     }
     else
     {
         EzeEvent("Close UnSuccesful", new EventArgs());
         EzeResult result = new EzeResult();
         result.setEventName(EventName.LOGOUT);
         result.setStatus(Status.FAILURE);
         return(result);
     }
 }
示例#10
0
        public EzeResult getTransactionHistory(string startDate, string endDate)
        {
            Console.Error.WriteLine("...Transaction History < >");

            TxnHistoryInput historyInput = TxnHistoryInput.CreateBuilder().SetStrtDate(startDate).SetEndDate(endDate)
                                           .Build();

            ApiInput apiInput = ApiInput.CreateBuilder()
                                .SetMsgType(ApiInput.Types.MessageType.TXN_HISTORY)
                                .SetMsgData(historyInput.ToByteString()).Build();

            this.send(apiInput);
            EzeResult result = null;

            while (true)
            {
                result = this.getResult(this.receive());
                if (result.getEventName() == EventName.HISTORY_RESULT)
                {
                    break;
                }
            }
            return(result);
        }
示例#11
0
        private EzeResult getResult(ApiOutput apiOutput)
        {
            EzeResult result = new EzeResult();
            Result paymentResult = new Result();
            paymentResult.setMessage("Ezeeeeeeeeeeeeeeeee");
            if (null == apiOutput) throw new EzeException("Invalid response from EPIC. ApiOutput is null");
            Console.WriteLine("1.."+apiOutput.EventType);

            Console.WriteLine("2. "+ MapEventName(apiOutput.EventType));
            result.setEventName(MapEventName(apiOutput.EventType));
            if (apiOutput.HasStatus) result.setStatus(MapStatus(apiOutput.Status));
            if (apiOutput.HasMsgText)
            {

                paymentResult.setMessage(apiOutput.MsgText);
                result.setResult(paymentResult);
            }
            Console.WriteLine("3.."+apiOutput.MsgText);
            Console.WriteLine("4.." + result);
            if (apiOutput.HasOutData)
            {
                 try
                 {
                     StatusInfo statusInfo = StatusInfo.ParseFrom(apiOutput.OutData);
                     if (apiOutput.HasStatus)
                     {

                         if (result.getStatus() == Status.FAILURE)
                         {
                             Console.WriteLine("Failure");
                             if (null != statusInfo)
                             {
                                 Error error = new Error();
                             error.setCode(statusInfo.Code);
                             error.setMessage(statusInfo.Message);
                             result.setError(error);
                             }
                         }

                     }

                 }
                 catch (InvalidProtocolBufferException e)
                 {
                     Console.WriteLine(e.Message);
                 }

                if ((apiOutput.Status == ApiOutput.Types.ResultStatus.SUCCESS) && (apiOutput.EventType.Equals(ApiOutput.Types.EventType.TXN_HISTORY_RESULT)))
                {
                    try
                    {
                        Console.WriteLine("history parsing begins... ");
                        TxnHistory txHistory = TxnHistory.ParseFrom(apiOutput.OutData);
                        Console.WriteLine("Null history "+txHistory);

                        if (null != txHistory)
                        {

                            Console.WriteLine(txHistory.TotalCount);
                          //  IList<Txn> list = txHistory.

                        }
                        else
                        {
                            Console.WriteLine("Null histpry");
                        }
                    }
                    catch (InvalidProtocolBufferException e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
                if ((apiOutput.Status == ApiOutput.Types.ResultStatus.SUCCESS) && (apiOutput.EventType.Equals(ApiOutput.Types.EventType.TXN_RESULT) || (apiOutput.EventType.Equals(ApiOutput.Types.EventType.TXN_DETAILS_RESULT))))
                {

                    TransactionDetails tDetails = new TransactionDetails();
                    Card card = new Card();
                    Merchant merchant = new Merchant();
                    Customer cust = new Customer();
                    Receipt receipt = new Receipt();
                    Cheque cheque = new Cheque();
                    Txn txnOutput;
                    try
                    {
                        txnOutput = Txn.ParseFrom(apiOutput.OutData);
                        tDetails.setPmtType(txnOutput.TxnType.ToString());
                        tDetails.setStatus(txnOutput.Status);
                        tDetails.setTxnId(txnOutput.TransactionId);
                        tDetails.setAmount(txnOutput.Amount);
                        tDetails.setSettlementStatus(txnOutput.SettlementStatus);
                        tDetails.setVoidable(txnOutput.Voidable);
                        tDetails.setAuthCode(txnOutput.AuthCode);
                        tDetails.setCardType(txnOutput.CardBrand);
                        tDetails.setOrderId(txnOutput.OrderId);
                        tDetails.setTid(txnOutput.Tid);
                        paymentResult.setTransactionDetails(tDetails);
                       merchant.setMerchantCode(txnOutput.Mid);
                        // merchant.setMerchantName(txnOutput.m);
                        paymentResult.setMerchant(merchant);
                        cust.setMobileNumber(txnOutput.CustomerMobileNumber);
                        // cust.setemailId(txnOutput.);
                        paymentResult.setCustomer(cust);
                        receipt.setReceiptUrl(txnOutput.ReceiptUrl);
                        receipt.setReceiptDate(txnOutput.Timestamp);
                        paymentResult.setReceipt(receipt);
                        cheque.setChequeNumber(txnOutput.ChequeNumber);
                        cheque.setChequeDate(txnOutput.ChequeDate);
                        cheque.setBankCode(txnOutput.BankCode);
                        // cheque.setBankName(txnOutput.b);
                        paymentResult.setCheque(cheque);
                        card.setCardBrand(txnOutput.CardBrand);
                        //  card.setMaskedCardNumber(txnOutput.LastFoundDigits);
                        paymentResult.setCard(card);
                    }
                    catch (InvalidProtocolBufferException e)
                    {
                        throw new EzeException("Error reading payment result. ex=" + e.Message);
                    }
                   // PaymentResult list = new List<PaymentResult>();
                    result.setResult(paymentResult);
                }
            }

            //Console.Write("ApiOutput: " + apiOutput.ToString());

            if ((result.getEventName() == EventName.NOTIFICATION) && (null != EzeEvent))
            {
                Result res = result.getResult();
                Console.WriteLine("5.."+res);
                if (res!=null)
                EzeEvent(result.getResult().getMessage(), new EventArgs());
            }

            return result;
        }
示例#12
0
        //// private static EzeAPI getAPI()
        // {
        //   if (null == API)
        //    {
        //        API = new EzeAPI();
        //       API.initialize();
        //    }
        //   return API;
        //  }
        public EzeResult initialize(EzeConfig config)
        {
            if (!initialized)
            {
                    Boolean init = initializeEzeCli();
                    if (init)
                    {
                        Console.WriteLine(" " + config.getLoginMode() + " " + config.getUserName() + " " + config.getAppKey()+" "+API);
                        API.setServerType(config.getServerType());
                        EzeResult result = API.login(config.getLoginMode(), config.getUserName(), config.getAppKey());
                        Console.WriteLine(result);
                        if (result.getStatus() == Status.SUCCESS)
                        {
                            Console.WriteLine("Logged in succesfully");
                            result = API.prepareDevice();
                            if (result.getStatus() == Status.SUCCESS)
                            {
                                EzeEvent("Initialization succesful", new EventArgs());
                                return result;
                            }
                            else
                            {
                            result = API.prepareDevice();
                            if ((result.getStatus() == Status.SUCCESS) && (EzeEvent!=null))
                                EzeEvent("Initialization succesful", new EventArgs());
                            else if   (EzeEvent != null)
                            EzeEvent("Prepare Device failed", new EventArgs());
                                return result;
                            }
                        }
                        else
                        {
                            EzeEvent("Login Failed", new EventArgs());
                        Console.WriteLine("--------------- failed");
                           return result;

                    }

                     }
                    else
                    {
                         EzeEvent("Initialization failed", new EventArgs());
                        EzeResult result = new EzeResult();
                        result.setStatus(Status.FAILURE);
                        result.setEventName(EventName.INITIALIZATION);
                    Error err = new Error();
                    err.setMessage("Initialization Failed");
                    result.setError(err);
                         return result;
                    }
            }
            else
            {
                EzeResult result = new EzeResult();
                result.setStatus(Status.FAILURE);
                result.setEventName(EventName.INITIALIZATION);
                Error err = new Error();
                err.setMessage("Already initialized");
                result.setError(err);
                return result;
            }
        }
示例#13
0
 public EzeResult close()
 {
     if (null != API)
     {
         EzeResult result = API.logout();
         if (result.getStatus() == Status.SUCCESS)
         {
             result = API.exit();
             if (result.getStatus() == Status.SUCCESS)
             {
                 API.destroyInstance();
                 result = new EzeResult();
                 result.setEventName(EventName.LOGOUT);
                 result.setStatus(Status.SUCCESS);
                 return result;
             }
             else
             {
                 EzeEvent("Exit UnSuccesful", new EventArgs());
                 return result;
             }
         }
         else
         {
             EzeEvent("Close UnSuccesful", new EventArgs());
             return result;
         }
     }
     else
     {
         EzeEvent("Close UnSuccesful", new EventArgs());
         EzeResult result = new EzeResult();
         result.setEventName(EventName.LOGOUT);
         result.setStatus(Status.FAILURE);
         return result;
     }
 }
示例#14
0
文件: EzeAPI.cs 项目: adonisk/csapi
        private EzeResult getResult(ApiOutput apiOutput)
        {
            EzeResult result = new EzeResult();

            if (null == apiOutput) throw new EzeException("Invalid response from EPIC. ApiOutput is null");

            result.setEventName(MapEventName(apiOutput.EventType));
            if (apiOutput.HasStatus) result.setStatus(MapStatus(apiOutput.Status));
            if (apiOutput.HasMsgText) result.setMessage(apiOutput.MsgText);

            if (apiOutput.HasOutData)
            {
            try
            {
                StatusInfo statusInfo = StatusInfo.ParseFrom(apiOutput.OutData);

                if (null != statusInfo)
                {
                    if (statusInfo.HasCode) result.setCode(statusInfo.Code);
                    if (statusInfo.HasMessage) result.setMessage(statusInfo.Message);
                }
            }
            catch (InvalidProtocolBufferException e)
            {
                Console.WriteLine(e.Message);
            }

            if ((apiOutput.Status == ApiOutput.Types.ResultStatus.SUCCESS) && (apiOutput.EventType.Equals(ApiOutput.Types.EventType.TXN_RESULT)))
            {
                PaymentResult paymentResult = new PaymentResult();
                Txn txnOutput;
                try
                {
                    txnOutput = Txn.ParseFrom(apiOutput.OutData);

                    paymentResult.setPmtType(txnOutput.TxnType.ToString());
                    paymentResult.setStatus(txnOutput.Status);
                    paymentResult.setTxnId(txnOutput.TransactionId);
                    paymentResult.setAmount(txnOutput.Amount);
                    paymentResult.setSettlementStatus(txnOutput.SettlementStatus);
                    paymentResult.setVoidable(txnOutput.Voidable);
                    paymentResult.setChequeNo(txnOutput.ChequeNumber);
                    paymentResult.setChequeDate(txnOutput.ChequeDate);
                    paymentResult.setAuthCode(txnOutput.AuthCode);
                    paymentResult.setCardType(txnOutput.CardBrand);
                    paymentResult.setOrderId(txnOutput.OrderId);
                    paymentResult.setTid(txnOutput.Tid);
                    paymentResult.setMerchantId(txnOutput.Mid);

                }
                catch (InvalidProtocolBufferException e)
                {
                    throw new EzeException("Error reading payment result. ex=" + e.Message);
                }
                result.setPaymentResult(paymentResult);
            }
            }

            //Console.Write("ApiOutput: " + apiOutput.ToString());

            if ((result.getEventName() == EventName.NOTIFICATION) && (null != EzeEvent))
            {
            EzeEvent(result.getMessage(), new EventArgs());
            }

            return result;
        }
示例#15
0
        public EzeResult chequeTransaction(double amount, Cheque cDetails, OptionalParams options)
        {
            EzeResult result = null;

            Console.WriteLine("...Take Payment By Cash <" + ",amount=" + amount + "," + ">");
            TxnInput.Types.TxnType txnType = TxnInput.Types.TxnType.CHEQUE;

            if (amount <= 0)
            {
                throw new EzeException("Amount is 0 or negative");
            }

            TxnInput tInput = TxnInput.CreateBuilder()
                              .SetTxnType(txnType)
                              .SetAmount(amount)
                              .Build();

            if ((null == cDetails) ||
                (null == cDetails.getChequeNumber()) || (cDetails.getChequeNumber().Length == 0) ||
                (null == cDetails.getChequeDate()) || (cDetails.getChequeDate().Length == 0) ||
                (null == cDetails.getBankName()))
            {
                throw new EzeException("Cheque details not passed for a Cheque transaction");
            }

            if (null != cDetails.getChequeNumber())
            {
                tInput = TxnInput.CreateBuilder(tInput).SetChequeNumber(cDetails.getChequeNumber()).Build();
            }
            if (null != cDetails.getChequeDate())
            {
                tInput = TxnInput.CreateBuilder(tInput).SetChequeDate(cDetails.getChequeDate()).Build();
            }
            if (null != cDetails.getBankCode())
            {
                tInput = TxnInput.CreateBuilder(tInput).SetBankCode(cDetails.getBankCode()).Build();
            }
            //  if (null != cDetails.getBankName()) tInput = TxnInput.CreateBuilder(tInput).SetBankName(cDetails.getBankName()).Build();
            //  if (null != options.getChequeDate()) tInput = TxnInput.CreateBuilder(tInput).SetChequeDate(options.getChequeDate().ToString()).Build();


            if (null != options)
            {
                if (null != options.getReference())
                {
                    if (null != options.getReference().getReference1())
                    {
                        tInput = TxnInput.CreateBuilder(tInput).SetOrderId(options.getReference().getReference1()).Build();
                    }
                    if (null != options.getReference().getReference2())
                    {
                        tInput = TxnInput.CreateBuilder(tInput).SetExternalReference2(options.getReference().getReference2()).Build();
                    }
                    if (null != options.getReference().getReference3())
                    {
                        tInput = TxnInput.CreateBuilder(tInput).SetExternalReference3(options.getReference().getReference3()).Build();
                    }
                }

                if (null != options.getCustomer())
                {
                    String mobileNumber = options.getCustomer().getMobileNumber();
                    String emailId      = options.getCustomer().getEmailId();
                    if (null != mobileNumber)
                    {
                        tInput = TxnInput.CreateBuilder(tInput).SetCustomerMobile(mobileNumber).Build();
                    }
                    if (null != emailId)
                    {
                        tInput = TxnInput.CreateBuilder(tInput).SetCustomerEmail(emailId).Build();
                    }
                }
            }

            ApiInput apiInput = ApiInput.CreateBuilder()
                                .SetMsgType(ApiInput.Types.MessageType.TXN)
                                .SetMsgData(tInput.ToByteString()).Build();

            this.send(apiInput);

            while (true)
            {
                result = this.getResult(this.receive());

                if (result.getEventName() == EventName.TAKE_PAYMENT)
                {
                    if (result.getStatus() == Status.SUCCESS)
                    {
                        EzeEvent("Payment Successful", new EventArgs());
                    }
                    else
                    {
                        EzeEvent("Payment Failed", new EventArgs());
                    }
                    break;
                }
            }

            return(result);
        }
示例#16
0
        private EzeResult getResult(ApiOutput apiOutput)
        {
            EzeResult result        = new EzeResult();
            Result    paymentResult = new Result();

            paymentResult.setMessage("Ezeeeeeeeeeeeeeeeee");
            if (null == apiOutput)
            {
                throw new EzeException("Invalid response from EPIC. ApiOutput is null");
            }
            Console.WriteLine("1.." + apiOutput.EventType);

            Console.WriteLine("2. " + MapEventName(apiOutput.EventType));
            result.setEventName(MapEventName(apiOutput.EventType));
            if (apiOutput.HasStatus)
            {
                result.setStatus(MapStatus(apiOutput.Status));
            }
            if (apiOutput.HasMsgText)
            {
                paymentResult.setMessage(apiOutput.MsgText);
                result.setResult(paymentResult);
            }
            Console.WriteLine("3.." + apiOutput.MsgText);
            Console.WriteLine("4.." + result);
            if (apiOutput.HasOutData)
            {
                try
                {
                    StatusInfo statusInfo = StatusInfo.ParseFrom(apiOutput.OutData);
                    if (apiOutput.HasStatus)
                    {
                        if (result.getStatus() == Status.FAILURE)
                        {
                            Console.WriteLine("Failure");
                            if (null != statusInfo)
                            {
                                Error error = new Error();
                                error.setCode(statusInfo.Code);
                                error.setMessage(statusInfo.Message);
                                result.setError(error);
                            }
                        }
                    }
                }
                catch (InvalidProtocolBufferException e)
                {
                    Console.WriteLine(e.Message);
                }

                if ((apiOutput.Status == ApiOutput.Types.ResultStatus.SUCCESS) && (apiOutput.EventType.Equals(ApiOutput.Types.EventType.TXN_HISTORY_RESULT)))
                {
                    try
                    {
                        Console.WriteLine("history parsing begins... ");
                        TxnHistory txHistory = TxnHistory.ParseFrom(apiOutput.OutData);
                        Console.WriteLine("Null history " + txHistory);

                        if (null != txHistory)
                        {
                            Console.WriteLine(txHistory.TotalCount);
                            //  IList<Txn> list = txHistory.
                        }
                        else
                        {
                            Console.WriteLine("Null histpry");
                        }
                    }
                    catch (InvalidProtocolBufferException e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
                if ((apiOutput.Status == ApiOutput.Types.ResultStatus.SUCCESS) && (apiOutput.EventType.Equals(ApiOutput.Types.EventType.TXN_RESULT) || (apiOutput.EventType.Equals(ApiOutput.Types.EventType.TXN_DETAILS_RESULT))))
                {
                    TransactionDetails tDetails = new TransactionDetails();
                    Card     card     = new Card();
                    Merchant merchant = new Merchant();
                    Customer cust     = new Customer();
                    Receipt  receipt  = new Receipt();
                    Cheque   cheque   = new Cheque();
                    Txn      txnOutput;
                    try
                    {
                        txnOutput = Txn.ParseFrom(apiOutput.OutData);
                        tDetails.setPmtType(txnOutput.TxnType.ToString());
                        tDetails.setStatus(txnOutput.Status);
                        tDetails.setTxnId(txnOutput.TransactionId);
                        tDetails.setAmount(txnOutput.Amount);
                        tDetails.setSettlementStatus(txnOutput.SettlementStatus);
                        tDetails.setVoidable(txnOutput.Voidable);
                        tDetails.setAuthCode(txnOutput.AuthCode);
                        tDetails.setCardType(txnOutput.CardBrand);
                        tDetails.setOrderId(txnOutput.OrderId);
                        tDetails.setTid(txnOutput.Tid);
                        paymentResult.setTransactionDetails(tDetails);
                        merchant.setMerchantCode(txnOutput.Mid);
                        // merchant.setMerchantName(txnOutput.m);
                        paymentResult.setMerchant(merchant);
                        cust.setMobileNumber(txnOutput.CustomerMobileNumber);
                        // cust.setemailId(txnOutput.);
                        paymentResult.setCustomer(cust);
                        receipt.setReceiptUrl(txnOutput.ReceiptUrl);
                        receipt.setReceiptDate(txnOutput.Timestamp);
                        paymentResult.setReceipt(receipt);
                        cheque.setChequeNumber(txnOutput.ChequeNumber);
                        cheque.setChequeDate(txnOutput.ChequeDate);
                        cheque.setBankCode(txnOutput.BankCode);
                        // cheque.setBankName(txnOutput.b);
                        paymentResult.setCheque(cheque);
                        card.setCardBrand(txnOutput.CardBrand);
                        //  card.setMaskedCardNumber(txnOutput.LastFoundDigits);
                        paymentResult.setCard(card);
                    }
                    catch (InvalidProtocolBufferException e)
                    {
                        throw new EzeException("Error reading payment result. ex=" + e.Message);
                    }
                    // PaymentResult list = new List<PaymentResult>();
                    result.setResult(paymentResult);
                }
            }

            //Console.Write("ApiOutput: " + apiOutput.ToString());

            if ((result.getEventName() == EventName.NOTIFICATION) && (null != EzeEvent))
            {
                Result res = result.getResult();
                Console.WriteLine("5.." + res);
                if (res != null)
                {
                    EzeEvent(result.getResult().getMessage(), new EventArgs());
                }
            }

            return(result);
        }
示例#17
0
        public EzeResult cardTransaction(double amount, PaymentMode mode, OptionalParams options)
        {
            EzeResult result = null;

            Console.WriteLine("...Take Payment <" + mode + ",amount=" + amount + "," + ">");
            TxnInput.Types.TxnType txnType = TxnInput.Types.TxnType.CARD_AUTH;

            if (amount <= 0)
            {
                throw new EzeException("Amount is 0 or negative");
            }

            TxnInput tInput = TxnInput.CreateBuilder()
                              .SetTxnType(txnType)
                              .SetAmount(amount)
                              .Build();

            if (null != options)
            {
                if (null != options.getReference())
                {
                    if (null != options.getReference().getReference1())
                    {
                        tInput = TxnInput.CreateBuilder(tInput).SetOrderId(options.getReference().getReference1()).Build();
                    }
                    if (null != options.getReference().getReference2())
                    {
                        tInput = TxnInput.CreateBuilder(tInput).SetExternalReference2(options.getReference().getReference2()).Build();
                    }
                    if (null != options.getReference().getReference3())
                    {
                        tInput = TxnInput.CreateBuilder(tInput).SetExternalReference3(options.getReference().getReference3()).Build();
                    }
                }
                if (0 != options.getAmountCashback())
                {
                    tInput = TxnInput.CreateBuilder(tInput).SetAmountOther(options.getAmountCashback()).Build();
                }
                //  if (0 != options.getAamountTip()) tInput = TxnInput.CreateBuilder(tInput).Set(options.getBankCode()).Build();
                if (null != options.getCustomer())
                {
                    String mobileNumber = options.getCustomer().getMobileNumber();
                    String emailId      = options.getCustomer().getEmailId();
                    if (null != mobileNumber)
                    {
                        tInput = TxnInput.CreateBuilder(tInput).SetCustomerMobile(mobileNumber).Build();
                    }
                    if (null != emailId)
                    {
                        tInput = TxnInput.CreateBuilder(tInput).SetCustomerEmail(emailId).Build();
                    }
                }
            }

            ApiInput apiInput = ApiInput.CreateBuilder()
                                .SetMsgType(ApiInput.Types.MessageType.TXN)
                                .SetMsgData(tInput.ToByteString()).Build();

            this.send(apiInput);

            while (true)
            {
                result = this.getResult(this.receive());

                if (result.getEventName() == EventName.TAKE_PAYMENT)
                {
                    if (result.getStatus() == Status.SUCCESS)
                    {
                        EzeEvent("Payment Successful", new EventArgs());
                    }
                    else
                    {
                        EzeEvent("Payment Failed", new EventArgs());
                    }
                    break;
                }
            }

            return(result);
        }
示例#18
0
        //// private static EzeAPI getAPI()
        // {
        //   if (null == API)
        //    {
        //        API = new EzeAPI();
        //       API.initialize();
        //    }
        //   return API;
        //  }


        public EzeResult initialize(EzeConfig config)
        {
            if (!initialized)
            {
                Boolean init = initializeEzeCli();
                if (init)
                {
                    Console.WriteLine(" " + config.getLoginMode() + " " + config.getUserName() + " " + config.getAppKey() + " " + API);
                    API.setServerType(config.getServerType());
                    EzeResult result = API.login(config.getLoginMode(), config.getUserName(), config.getAppKey());
                    Console.WriteLine(result);
                    if (result.getStatus() == Status.SUCCESS)
                    {
                        Console.WriteLine("Logged in succesfully");
                        result = API.prepareDevice();
                        if (result.getStatus() == Status.SUCCESS)
                        {
                            EzeEvent("Initialization succesful", new EventArgs());
                            return(result);
                        }
                        else
                        {
                            result = API.prepareDevice();
                            if ((result.getStatus() == Status.SUCCESS) && (EzeEvent != null))
                            {
                                EzeEvent("Initialization succesful", new EventArgs());
                            }
                            else if (EzeEvent != null)
                            {
                                EzeEvent("Prepare Device failed", new EventArgs());
                            }
                            return(result);
                        }
                    }
                    else
                    {
                        EzeEvent("Login Failed", new EventArgs());
                        Console.WriteLine("--------------- failed");
                        return(result);
                    }
                }
                else
                {
                    EzeEvent("Initialization failed", new EventArgs());
                    EzeResult result = new EzeResult();
                    result.setStatus(Status.FAILURE);
                    result.setEventName(EventName.INITIALIZATION);
                    Error err = new Error();
                    err.setMessage("Initialization Failed");
                    result.setError(err);
                    return(result);
                }
            }
            else
            {
                EzeResult result = new EzeResult();
                result.setStatus(Status.FAILURE);
                result.setEventName(EventName.INITIALIZATION);
                Error err = new Error();
                err.setMessage("Already initialized");
                result.setError(err);
                return(result);
            }
        }