private async Task HandlePaymentRejected(string[] topics, string data) { var rejectedPaymentModel = _eventDecoder.DecodeTransferRejectedEvent(topics, data); var statusUpdateResult = await _paymentsStatusUpdater.TokensRefundSucceedAsync(rejectedPaymentModel.PaymentRequestId); if (statusUpdateResult != PaymentStatusUpdateErrorCodes.None) { _log.Error(message: "Could not mark payment as RefundSucceeded/ExpirationTokensRefundSucceeded because of error", context: new { Error = statusUpdateResult, Payment = rejectedPaymentModel }); return; } var partnerPayment = await GetPaymentRequest(rejectedPaymentModel.PaymentRequestId); //We should have value for Sending amount at this stage for sure rejectedPaymentModel.Amount = partnerPayment.TokensSendingAmount.Value; await PublishPaymentProcessedEvent(rejectedPaymentModel, ProcessedPartnerPaymentStatus.Rejected); }
private async Task HandleTransferRejected(string[] topics, string data) { var rejectedTransferModel = _eventDecoder.DecodeTransferRejectedEvent(topics, data); var resultError = await _paymentsService.RejectPaymentTransferAsync(rejectedTransferModel.TransferId); if (resultError != PaymentTransfersErrorCodes.None) { _log.Error(message: "Unable reject a payment transfer because of error", context: new { Error = resultError, rejectedTransferModel.TransferId }); return; } _log.Info("Payment transfer was successfully marked as rejected", context: rejectedTransferModel.TransferId); var paymentTransfer = await _paymentTransfersRepository.GetByTransferIdAsync(rejectedTransferModel.TransferId); if (paymentTransfer == null) { throw new InvalidOperationException( $"Payment transfer with id: {rejectedTransferModel.TransferId} which was just rejected was not found in DB"); } await _transferProcessedPublisher.PublishAsync(new PaymentTransferProcessedEvent { TransferId = paymentTransfer.TransferId, Status = ProcessedPaymentTransferStatus.Rejected, InvoiceId = paymentTransfer.InvoiceId, CampaignId = paymentTransfer.SpendRuleId, CustomerId = paymentTransfer.CustomerId, Timestamp = DateTime.UtcNow, Amount = paymentTransfer.AmountInTokens, InstalmentName = paymentTransfer.InstalmentName, LocationCode = paymentTransfer.LocationCode, }); _log.Info("Payment transfer processed event published", context: rejectedTransferModel.TransferId); }