public async Task <Result> PayAsync(PayInputModel input) { try { var payment = new Data.Models.Payment { OrderId = input.OrderId, TotalPrice = input.TotalPrice }; var messageData = new PaymentCompletedMessage { OrderId = payment.OrderId }; var message = new Message(messageData); await this.SaveAsync(payment, message); await this.publisher.Publish(messageData); await this.MarkMessageAsPublished(message.Id); return(Result.Success); } catch (Exception e) { var errorMessage = "Failed to save order"; this.logger.LogError(e, errorMessage); return(Result.Failure(new[] { errorMessage })); } }
public Task <AsyncTaskResult> HandleAsync(PaymentCompletedMessage message) { return(_commandService.SendAsync(new ConfirmPayment(message.OrderId, true))); }