Ejemplo n.º 1
0
        public async Task NotifyStatusUpdateAsync(InvoiceStatusUpdateNotification notification)
        {
            if (!notification.Status.IsPaidStatus())
            {
                return;
            }

            Invoice invoice = await _invoiceRepository.FindByPaymentRequestIdAsync(notification.PaymentRequestId);

            if (invoice == null)
            {
                PaymentRequestModel paymentRequest = await _payInternalClient.GetPaymentRequestAsync(
                    notification.MerchantId,
                    notification.PaymentRequestId);

                if (paymentRequest.Initiator != Constants.PaymentRequestInitiator)
                {
                    return;
                }

                throw new InvoiceNotFoundException();
            }

            await _emailService.Send(new PaymentReceivedEmail
            {
                MerchantId    = invoice.MerchantId,
                EmployeeId    = invoice.EmployeeId,
                InvoiceId     = invoice.Id,
                InvoiceNumber = invoice.Number,
                PaidAmount    = notification.Amount,
                PaymentAsset  = notification.AssetId,
                PaidDate      = notification.Date,
                Payer         = invoice.ClientName
            });
        }
 public async Task MockPayment([FromBody] InvoiceStatusUpdateNotification model)
 {
     await _notificationsService.NotifyStatusUpdateAsync(model);
 }