示例#1
0
        public async Task <IActionResult> PushUserTransaction(long accountId, [FromBody] SpUserTransactionRequestDto spUserTransactionRequest)
        {
            AccountDescriptor account       = _accountsService.GetById(accountId);
            string            transactionId = Guid.NewGuid().ToString();
            long registrationId             = long.Parse(spUserTransactionRequest.RegistrationId);
            long userTransactionId          = _dataAccessService.AddSpUserTransaction(accountId, registrationId, transactionId, spUserTransactionRequest.Description);
            var  registration = _dataAccessService.GetServiceProviderRegistration(registrationId);

            TransactionConsentRequest consentRequest = new TransactionConsentRequest
            {
                RegistrationCommitment = registration.Commitment.ToHexString(),
                TransactionId          = transactionId,
                WithKnowledgeProof     = true,
                Description            = spUserTransactionRequest.Description,
                PublicSpendKey         = account.PublicSpendKey.ToHexString(),
                PublicViewKey          = account.PublicViewKey?.ToHexString()
            };

            await _restApiConfiguration.ConsentManagementUri
            .AppendPathSegments("ConsentManagement", "TransactionForConsent")
            .PostJsonAsync(consentRequest).ContinueWith(t =>
            {
                if (!t.IsCompletedSuccessfully)
                {
                    _logger.Error($"Failed to register transaction for consent. {JsonConvert.SerializeObject(consentRequest)}", t.Exception);
                }
            }, TaskScheduler.Current).ConfigureAwait(false);

            return(Ok(new SpUserTransactionDto
            {
                SpUserTransactionId = userTransactionId.ToString(),
                TransactionId = transactionId,
                RegistrationId = spUserTransactionRequest.RegistrationId.ToString(),
                Description = spUserTransactionRequest.Description
            }));
        }