private void SendCoin(string sender, string recipient, double amount, float fee) { var Txnin = new TxnInput { SenderAddress = sender, TimeStamp = Utils.GetTime() }; var TxnOut = new TxnOutput { RecipientAddress = recipient, Amount = amount, Fee = fee, }; var TxnHash = Utils.GetTransactionHash(Txnin, TxnOut); var signature = account.CreateSignature(TxnHash); Txnin.Signature = signature; var sendRequest = new SendRequest { TxnId = TxnHash, PublicKey = account.GetPubKeyHex(), TxnInput = Txnin, TxnOutput = TxnOut }; try { var responseSend = service.SendCoin(sendRequest); if (responseSend.Result.ToLower() == "success") { Console.WriteLine("== success == "); } else { Console.WriteLine("Error: {0}", responseSend.Result); } } catch (Exception e) { Console.WriteLine("Error: {0}", e.Message); } }
public static string GetTransactionHash(TxnInput input, TxnOutput output) { var TxnId = GenHash(GenHash(input.TimeStamp + input.SenderAddress + output.Amount + output.Fee + output.RecipientAddress)); return(TxnId); }
private void DoSendCoin() { Console.Clear(); Console.WriteLine("\n\n\n\nTransfer Coin"); Console.WriteLine("Time: {0}", DateTime.Now); Console.WriteLine("======================"); Console.WriteLine("Sender address:"); string sender = account.GetAddress(); Console.WriteLine(sender); Console.WriteLine("\nPlease enter the recipient address!:"); string recipient = Console.ReadLine(); Console.WriteLine("\nPlease enter the amount (number)!:"); string strAmount = Console.ReadLine(); Console.WriteLine("\nPlease enter fee (number)!:"); string strFee = Console.ReadLine(); double amount; if (string.IsNullOrEmpty(sender) || string.IsNullOrEmpty(recipient) || string.IsNullOrEmpty(strAmount) || string.IsNullOrEmpty(strFee)) { Console.WriteLine("\n\nError, Please input all data: sender, recipient, amount and fee!\n"); return; } try { amount = double.Parse(strAmount); } catch { Console.WriteLine("\nError! You have inputted the wrong value for the amount!"); return; } float fee; try { fee = float.Parse(strFee); } catch { Console.WriteLine("\nError! You have inputted the wrong value for the fee!"); return; } var response = service.GetBalance(new CommonRequest { Address = sender }); var senderBalance = response.Balance; if ((amount + fee) > senderBalance) { Console.WriteLine("\nError! Sender ({0}) don't have enough balance!", sender); Console.WriteLine("Sender ({0}) balance is {1}", sender, senderBalance); return; } var Txnin = new TxnInput { SenderAddress = account.GetAddress(), TimeStamp = Utils.GetTime(), }; var TxnOut = new TxnOutput { RecipientAddress = recipient, Amount = amount, Fee = fee, }; var TxnHash = Utils.GetTransactionHash(Txnin, TxnOut); var signature = account.CreateSignature(TxnHash); Txnin.Signature = signature; var sendRequest = new SendRequest { TxnId = TxnHash, PublicKey = account.GetPubKeyHex(), TxnInput = Txnin, TxnOutput = TxnOut }; try { var responseSend = service.SendCoin(sendRequest); if (responseSend.Result.ToLower() == "success") { DateTime utcDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(Convert.ToDouble(Txnin.TimeStamp)); Console.Clear(); Console.WriteLine("\n\n\n\nTransaction has send to Blockchain.!."); Console.WriteLine("Timestamp: {0}", utcDate.ToLocalTime()); Console.WriteLine("Sender: {0}", Txnin.SenderAddress); Console.WriteLine("Recipient {0}", TxnOut.RecipientAddress); Console.WriteLine("Amount: {0}", TxnOut.Amount); Console.WriteLine("Fee: {0}", TxnOut.Fee); Console.WriteLine("-------------------"); Console.WriteLine("Need around 1 minute to be processed!"); } else { Console.WriteLine("Error: {0}", responseSend.Result); } } catch (Exception e) { Console.WriteLine("Error: {0}", e.Message); } }
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); }
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); }