public async Task PublishTransactionAsync(FullTransaction transaction) { foreach (var producer in _producers) { await producer.PublishAsync(transaction); } }
public ActionResult Status() { var token = Request.Form["token_ws"]; var result = FullTransaction.Status(token); var urlHelper = new UrlHelper(ControllerContext.RequestContext); var returnUrl = urlHelper.Action("Refund", "TransaccionCompleta", null, Request.Url.Scheme); ViewBag.Action = returnUrl; ViewBag.Token = token; ViewBag.Result = result; return(View()); }
private async Task PublishTransactionAsync(FullTransaction transaction) { foreach (var producer in _producers) { try { await producer.PublishAsync(transaction); } catch (Exception e) { Console.WriteLine(e); throw; } } }
public ActionResult Commit() { var token = Request.Form["token_ws"]; var idQueryInstallments = int.Parse(Request.Form["id_query_installments"]); var deferredPeriodsIndex = 10; var gracePeriods = false; var result = FullTransaction.Commit(token, idQueryInstallments, deferredPeriodsIndex, gracePeriods); UrlHelper urlHelper = new UrlHelper(ControllerContext.RequestContext); var returnUrl = urlHelper.Action("Status", "TransaccionCompleta", null, Request.Url.Scheme); ViewBag.SaveIdQueryInstallments = idQueryInstallments; ViewBag.DeferredPeriodIndex = deferredPeriodsIndex; ViewBag.GracePrediods = gracePeriods; ViewBag.Action = returnUrl; ViewBag.Token = token; ViewBag.Result = result; return(View()); }
private void KeepProcessingJobs() { foreach (ReplayJob job in _jobs.GetConsumingEnumerable(_cancellationSource.Token)) { if (_cancellationSource.IsCancellationRequested) { break; } if (job.IsCancellationRequested) { continue; } for (long i = job.StartBlock; i < job.EndBlock; i++) { if (job.IsCancellationRequested || _cancellationSource.IsCancellationRequested) { break; } Block block = _blockTree.FindBlock(i); _subscription.PublishBlockAsync(block); for (int txIndex = 0; txIndex < block.Transactions.Length; txIndex++) { if (job.IsCancellationRequested) { break; } TxReceipt receipt = _receiptStorage.Find(block.Transactions[txIndex].Hash); FullTransaction fullTx = new FullTransaction(txIndex, block.Transactions[txIndex], receipt); _subscription.PublishTransactionAsync(fullTx); } } } }
public ActionResult Installments() { var token = Request.Form["token_ws"]; var installments_number = 10; ViewBag.Token = token; UrlHelper urlHelper = new UrlHelper(ControllerContext.RequestContext); ViewBag.SaveToken = token; var returnUrl = urlHelper.Action("Commit", "TransaccionCompleta", null, Request.Url.Scheme); ViewBag.Action = returnUrl; var result = FullTransaction.Installments( token, installments_number); ViewBag.InstallmentsNumber = installments_number; ViewBag.SaveIdQueryInstallments = result.IdQueryInstallments.ToString(); ViewBag.Result = result; ViewBag.ReturnUrl = returnUrl; return(View()); }
public ActionResult Create() { var random = new Random(); var buy_order = random.Next(999999999).ToString(); var session_id = random.Next(9999999).ToString(); var amount = 10000; var cvv = 123; var card_number = "4051885600446623"; var card_expiration_date = "22/10"; UrlHelper urlHelper = new UrlHelper(ControllerContext.RequestContext); var returnUrl = urlHelper.Action("Installments", "TransaccionCompleta", null, Request.Url.Scheme); var result = FullTransaction.Create( buyOrder: buy_order, sessionId: session_id, amount: amount, cvv: cvv, cardNumber: card_number, cardExpirationDate: card_expiration_date); ViewBag.Action = returnUrl; ViewBag.ReturnUrl = returnUrl; ViewBag.Token = result.Token; ViewBag.Result = result; ViewBag.BuyOrder = buy_order; ViewBag.SessionId = session_id; ViewBag.Amount = amount; ViewBag.Cvv = cvv; ViewBag.CardNumber = card_number; ViewBag.CardExpirationDate = card_expiration_date; return(View()); }
public Task PublishTransactionAsync(FullTransaction transaction) => Task.CompletedTask;
private static void StartConsumingAvro <T>(string topic) where T : ISpecificRecord { bool consuming = true; ConsumerBuilder <Ignore, T> consumerBuilder = new ConsumerBuilder <Ignore, T>(Configuration.ConsumerConfig); consumerBuilder.SetErrorHandler((s, e) => { consuming = !e.IsFatal; Log(e.ToString()); }); CachedSchemaRegistryClient schemaRegistry = new CachedSchemaRegistryClient(new[] { new KeyValuePair <string, string>(SchemaRegistryConfig.PropertyNames.SchemaRegistryUrl, Configuration.SchemaRegistryUrl) }); var deserializer = new AvroDeserializer <T>(schemaRegistry).AsSyncOverAsync(); consumerBuilder.SetValueDeserializer(deserializer); IConsumer <Ignore, T> consumer = consumerBuilder.Build(); using (consumer) { ConsumerConfig consumerConfig = Configuration.ConsumerConfig; Log($"Consumer for group: '{consumerConfig.GroupId}' was created. Data type: '{Configuration.Type}'."); consumer.Subscribe(new[] { topic }); Log($"Subscribed to topic: '{topic}'."); while (consuming) { try { ConsumeResult <Ignore, T> consumeResult = consumer.Consume(); Type type = typeof(T); if (type == typeof(Avro.Models.Block)) { ConsumeResult <Ignore, Avro.Models.Block> result = consumeResult as ConsumeResult <Ignore, Avro.Models.Block>; Avro.Models.Block block = result.Value; Log($"Block: {block.blockNumber} {block.blockHash}"); } else if (type == typeof(Avro.Models.FullTransaction)) { ConsumeResult <Ignore, FullTransaction> result = consumeResult as ConsumeResult <Ignore, Avro.Models.FullTransaction>; FullTransaction transaction = result.Value; Log($"Transaction for block: {transaction.blockNumber} {transaction.receipt.blockHash}"); } else { Log($"Unknown data type: {type.Name}"); continue; } Log($"Consumed value at '{consumeResult.TopicPartitionOffset}'."); } catch (ConsumeException exception) { Log($"Consumer error occured: {exception.Error.Reason}"); } catch (Exception exception) { Log(exception.Message); } } consumer.Close(); } }