mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-18 22:44:29 +01:00
Fix: Payment Request status does not update on invoice marked events or when pr amount is changed (#2700)
fixes #2689
This commit is contained in:
@@ -150,17 +150,20 @@ namespace BTCPayServer.PaymentRequest
|
|||||||
{
|
{
|
||||||
foreach (var paymentId in PaymentRequestRepository.GetPaymentIdsFromInternalTags(invoiceEvent.Invoice))
|
foreach (var paymentId in PaymentRequestRepository.GetPaymentIdsFromInternalTags(invoiceEvent.Invoice))
|
||||||
{
|
{
|
||||||
if (invoiceEvent.Name == InvoiceEvent.ReceivedPayment)
|
if (invoiceEvent.Name == InvoiceEvent.ReceivedPayment || invoiceEvent.Name == InvoiceEvent.MarkedCompleted || invoiceEvent.Name == InvoiceEvent.MarkedInvalid)
|
||||||
{
|
{
|
||||||
await _PaymentRequestService.UpdatePaymentRequestStateIfNeeded(paymentId);
|
await _PaymentRequestService.UpdatePaymentRequestStateIfNeeded(paymentId);
|
||||||
var data = invoiceEvent.Payment.GetCryptoPaymentData();
|
var data = invoiceEvent.Payment?.GetCryptoPaymentData();
|
||||||
await _HubContext.Clients.Group(paymentId).SendCoreAsync(PaymentRequestHub.PaymentReceived,
|
if (data != null)
|
||||||
new object[]
|
{
|
||||||
{
|
await _HubContext.Clients.Group(paymentId).SendCoreAsync(PaymentRequestHub.PaymentReceived,
|
||||||
data.GetValue(),
|
new object[]
|
||||||
invoiceEvent.Payment.GetCryptoCode(),
|
{
|
||||||
invoiceEvent.Payment.GetPaymentMethodId()?.PaymentType?.ToString()
|
data.GetValue(),
|
||||||
});
|
invoiceEvent.Payment.GetCryptoCode(),
|
||||||
|
invoiceEvent.Payment.GetPaymentMethodId()?.PaymentType?.ToString()
|
||||||
|
}, cancellationToken);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await InfoUpdated(paymentId);
|
await InfoUpdated(paymentId);
|
||||||
@@ -168,6 +171,7 @@ namespace BTCPayServer.PaymentRequest
|
|||||||
}
|
}
|
||||||
else if (evt is PaymentRequestUpdated updated)
|
else if (evt is PaymentRequestUpdated updated)
|
||||||
{
|
{
|
||||||
|
await _PaymentRequestService.UpdatePaymentRequestStateIfNeeded(updated.PaymentRequestId);
|
||||||
await InfoUpdated(updated.PaymentRequestId);
|
await InfoUpdated(updated.PaymentRequestId);
|
||||||
|
|
||||||
var expiry = updated.Data.GetBlob().ExpiryDate;
|
var expiry = updated.Data.GetBlob().ExpiryDate;
|
||||||
|
|||||||
@@ -50,15 +50,16 @@ namespace BTCPayServer.PaymentRequest
|
|||||||
currentStatus = Client.Models.PaymentRequestData.PaymentRequestStatus.Expired;
|
currentStatus = Client.Models.PaymentRequestData.PaymentRequestStatus.Expired;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentStatus == Client.Models.PaymentRequestData.PaymentRequestStatus.Pending)
|
if (currentStatus != Client.Models.PaymentRequestData.PaymentRequestStatus.Expired)
|
||||||
{
|
{
|
||||||
var rateRules = pr.StoreData.GetStoreBlob().GetRateRules(_BtcPayNetworkProvider);
|
var rateRules = pr.StoreData.GetStoreBlob().GetRateRules(_BtcPayNetworkProvider);
|
||||||
var invoices = await _PaymentRequestRepository.GetInvoicesForPaymentRequest(pr.Id);
|
var invoices = await _PaymentRequestRepository.GetInvoicesForPaymentRequest(pr.Id);
|
||||||
var contributions = _AppService.GetContributionsByPaymentMethodId(blob.Currency, invoices, true);
|
var contributions = _AppService.GetContributionsByPaymentMethodId(blob.Currency, invoices, true);
|
||||||
if (contributions.TotalCurrency >= blob.Amount)
|
|
||||||
{
|
currentStatus = contributions.TotalCurrency >= blob.Amount
|
||||||
currentStatus = Client.Models.PaymentRequestData.PaymentRequestStatus.Completed;
|
? Client.Models.PaymentRequestData.PaymentRequestStatus.Completed
|
||||||
}
|
: Client.Models.PaymentRequestData.PaymentRequestStatus.Pending;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentStatus != pr.Status)
|
if (currentStatus != pr.Status)
|
||||||
|
|||||||
Reference in New Issue
Block a user