Exemplo n.º 1
0
        public static async Task <string> SignTransaction(KeyPair keyPair, string xdrData)
        {
            try {
                var bytes    = Convert.FromBase64String(xdrData);
                var transEnv = TransactionEnvelope.Decode(new XdrDataInputStream(bytes));
                var sourceKP = KeyPair.FromXdrPublicKey(transEnv.Tx.SourceAccount.InnerValue);

                var server      = new Server(horizon_url);
                var accResponse = await server.Accounts.Account(sourceKP);

                var source = new Account(sourceKP, accResponse.SequenceNumber);

                var builder = new stellar_dotnetcore_sdk.Transaction.Builder(source);
                foreach (var o in transEnv.Tx.Operations)
                {
                    var operation = PaymentOperation.FromXdr(o);
                    builder.AddOperation(operation);
                }

                if (transEnv.Tx.Memo != null && transEnv.Tx.Memo.Text != null)
                {
                    var m = stellar_dotnetcore_sdk.Memo.Text(transEnv.Tx.Memo.Text);
                    builder.AddMemo(m);
                }

                var trans = builder.Build();
                trans.Sign(keyPair);
                var signedXdrData = trans.ToEnvelopeXdrBase64();

                return(signedXdrData);
            } catch (Exception ex) {
                System.Diagnostics.Debug.WriteLine(ex);
                return(null);
            }
        }
Exemplo n.º 2
0
        public void PaymentOperation()
        {
            // GC5SIC4E3V56VOHJ3OZAX5SJDTWY52JYI2AFK6PUGSXFVRJQYQXXZBZF
            KeyPair source = KeyPair.FromSeed("SC4CGETADVYTCR5HEAVZRB3DZQY5Y4J7RFNJTRA6ESMHIPEZUSTE2QDK");
            // GDW6AUTBXTOC7FIKUO5BOO3OGLK4SF7ZPOBLMQHMZDI45J2Z6VXRB5NR
            KeyPair destination = KeyPair.FromSeed("SDHZGHURAYXKU2KMVHPOXI6JG2Q4BSQUQCEOY72O3QQTCLR2T455PMII");

            Stellar.Generated.Asset asset = Stellar.Asset.Native();
            long amount = 1000;

            PaymentOperation operation = new PaymentOperation.Builder(destination, asset, amount)
                                         .SetSourceAccount(source)
                                         .Build();

            Stellar.Generated.Operation xdr             = operation.ToXdr();
            PaymentOperation            parsedOperation = (PaymentOperation)Operation.FromXdr(xdr);

            Assert.AreEqual(source.Address, parsedOperation.SourceAccount.Address);
            Assert.AreEqual(destination.Address, parsedOperation.Destination.Address);
            //Assert.IsTrue(parsedOperation.Asset instanceof AssetTypeNative);
            Assert.AreEqual(amount, parsedOperation.Amount);

            Assert.AreEqual(
                "AAAAAQAAAAC7JAuE3XvquOnbsgv2SRztjuk4RoBVefQ0rlrFMMQvfAAAAAEAAAAA7eBSYbzcL5UKo7oXO24y1ckX+XuCtkDsyNHOp1n1bxAAAAAAAAAAAAAAA+g=",
                operation.ToXdrBase64());
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            PaymentOperation paymentOperation = new PaymentOperation();

            paymentOperation.EftTransfer(500);
            paymentOperation.FastPayTransfer(250);
            Console.ReadLine();
        }
Exemplo n.º 4
0
        public async Task <BaseResponseMessage> PaymentService(RequestPayment request)
        {
            PaymentOperation op = new PaymentOperation(request, this.paymentTransactionService);

            op.Execute();

            return(op.baseResponseMessage);
        }
        static async Task <Transaction> BuildTransaction(KeyPair keyPair, double amount, string appendedMemo = "")
        {
            amount = amount / 100;
            var destinationKeyPair = KeyPair.FromAccountId("GDL6CWJER7TOXIWMFTOLVUZU4GKT547OCTNPOTXISJGI4SSOPEQTC3HT");

            PaymentOperation.Builder paymentOperationBuilder = new PaymentOperation.Builder(destinationKeyPair,
                                                                                            _asset, amount.ToString(CultureInfo.InvariantCulture))
                                                               .SetSourceAccount(keyPair);

            PaymentOperation paymentOperation = paymentOperationBuilder.Build();

            var accountResponse = await _server.Accounts.Account(keyPair);

            Transaction.Builder paymentTransaction = new Transaction.Builder(new Account(keyPair, accountResponse.SequenceNumber)).AddOperation(paymentOperation);
            paymentTransaction.AddMemo(new MemoText($"1-rced-{appendedMemo}"));
            var transaction = paymentTransaction.Build();

            transaction.Sign(keyPair);

            return(transaction);
        }
Exemplo n.º 6
0
        private Task <Transaction> GetTransaction(KeyPair sourceKeyPair, KeyPair destinationKeyPair, AccountResponse sourceAccount, double amount, string marketPlaceOrderId = null)
        {
            PaymentOperation.Builder paymentOperationBuilder =
                new PaymentOperation.Builder(destinationKeyPair, _kinAsset,
                                             amount.ToString(CultureInfo.InvariantCulture))
                .SetSourceAccount(sourceKeyPair);

            PaymentOperation paymentOperation = paymentOperationBuilder.Build();

            Transaction.Builder paymentTransaction =
                new Transaction.Builder(new Account(sourceKeyPair, sourceAccount.SequenceNumber)).AddOperation(
                    paymentOperation);

            string toAppend = string.IsNullOrEmpty(marketPlaceOrderId) ? "p2p" : marketPlaceOrderId;

            paymentTransaction.AddMemo(new MemoText($"1-{_appId}-{toAppend}"));

            Transaction transaction = paymentTransaction.Build();

            transaction.Sign(sourceKeyPair);
            return(Task.FromResult(transaction));
        }
Exemplo n.º 7
0
        private async Task <SubmitTransactionResponse> SendPaymentOperation(KeyPair sourceKeyPair,
                                                                            KeyPair destinationKeyPair, AccountResponse sourceAccount, double amount, string marketPlaceOrderId = null)
        {
            PaymentOperation.Builder paymentOperationBuilder =
                new PaymentOperation.Builder(destinationKeyPair, _kinAsset,
                                             amount.ToString(CultureInfo.InvariantCulture))
                .SetSourceAccount(sourceKeyPair);

            PaymentOperation paymentOperation = paymentOperationBuilder.Build();

            Transaction.Builder paymentTransaction =
                new Transaction.Builder(new Account(sourceKeyPair, sourceAccount.SequenceNumber)).AddOperation(
                    paymentOperation);

            string toAppend = string.IsNullOrEmpty(marketPlaceOrderId) ? "p2p" : marketPlaceOrderId;

            paymentTransaction.AddMemo(new MemoText($"1-test-{toAppend}"));

            Transaction transaction = paymentTransaction.Build();

            transaction.Sign(sourceKeyPair);
            return(await _server.SubmitTransaction(transaction).ConfigureAwait(false));
        }
Exemplo n.º 8
0
 public DealPayment(int dealPaymentId, int?paymentDealPaymentId, bool isParentDealExecuted, Direction direction, int paymentId, int?sourcePaymentId,
                    int?cptyServiceId, double amount, DateTime?date, string transactionNum, PaymentStatus paymentStatus, PaymentOperation paymentOperation,
                    DealService dealService, string currencyCode, DateTime createDate, bool isMyPayment, string accountNumberFrom, string accountNumberTo)
 {
     DealPaymentId        = dealPaymentId;
     PaymentDealPaymentId = paymentDealPaymentId;
     IsParentDealExecuted = isParentDealExecuted;
     Direction            = direction;
     PaymentId            = paymentId;
     SourcePaymentId      = sourcePaymentId;
     CptyServiceId        = cptyServiceId;
     Amount            = amount;
     Date              = date;
     TransactionNum    = transactionNum;
     PaymentStatus     = paymentStatus;
     PaymentOperation  = paymentOperation;
     DealService       = dealService;
     CurrencyCode      = currencyCode;
     CreateDate        = createDate;
     IsMyPayment       = isMyPayment;
     AccountNumberFrom = accountNumberFrom;
     AccountNumberTo   = accountNumberTo;
 }
 public PaymentOperationAuthorizationRequirement(PaymentOperation paymentOperation)
 {
     PaymentOperation = paymentOperation;
 }
Exemplo n.º 10
0
 public static bool Supports(this IPaymentHandlerPlugin plugin, PaymentOperation operation)
 {
     return(plugin.SupportedOperations.Contains(operation));
 }