From eda0f7327e55507a1677264f67b3474355b30308 Mon Sep 17 00:00:00 2001 From: Kukks Date: Mon, 21 Nov 2022 19:55:13 +0100 Subject: [PATCH] fix monero issue --- .../Altcoins/Monero/Payments/MoneroLikePaymentData.cs | 9 ++++++++- .../Services/Altcoins/Monero/Services/MoneroListener.cs | 9 +++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/BTCPayServer/Services/Altcoins/Monero/Payments/MoneroLikePaymentData.cs b/BTCPayServer/Services/Altcoins/Monero/Payments/MoneroLikePaymentData.cs index e572fe2dd..6dc73e922 100644 --- a/BTCPayServer/Services/Altcoins/Monero/Payments/MoneroLikePaymentData.cs +++ b/BTCPayServer/Services/Altcoins/Monero/Payments/MoneroLikePaymentData.cs @@ -17,6 +17,7 @@ namespace BTCPayServer.Services.Altcoins.Monero.Payments public string TransactionId { get; set; } public BTCPayNetworkBase Network { get; set; } + public long LockTime { get; set; } = 0; public string GetPaymentId() { @@ -35,11 +36,17 @@ namespace BTCPayServer.Services.Altcoins.Monero.Payments public bool PaymentCompleted(PaymentEntity entity) { - return ConfirmationCount >= (Network as MoneroLikeSpecificBtcPayNetwork).MaxTrackedConfirmation; + return + ConfirmationCount >= LockTime && + ConfirmationCount >= (Network as MoneroLikeSpecificBtcPayNetwork).MaxTrackedConfirmation; } public bool PaymentConfirmed(PaymentEntity entity, SpeedPolicy speedPolicy) { + if (ConfirmationCount < LockTime) + { + return false; + } switch (speedPolicy) { case SpeedPolicy.HighSpeed: diff --git a/BTCPayServer/Services/Altcoins/Monero/Services/MoneroListener.cs b/BTCPayServer/Services/Altcoins/Monero/Services/MoneroListener.cs index 897fc0454..905e96770 100644 --- a/BTCPayServer/Services/Altcoins/Monero/Services/MoneroListener.cs +++ b/BTCPayServer/Services/Altcoins/Monero/Services/MoneroListener.cs @@ -240,7 +240,7 @@ namespace BTCPayServer.Services.Altcoins.Monero.Services return HandlePaymentData(cryptoCode, transfer.Address, transfer.Amount, transfer.SubaddrIndex.Major, - transfer.SubaddrIndex.Minor, transfer.Txid, transfer.Confirmations, transfer.Height, invoice, + transfer.SubaddrIndex.Minor, transfer.Txid, transfer.Confirmations, transfer.Height, transfer.UnlockTime,invoice, updatedPaymentEntities); })); } @@ -302,7 +302,7 @@ namespace BTCPayServer.Services.Altcoins.Monero.Services transfer.Transfer.Txid, transfer.Transfer.Confirmations, transfer.Transfer.Height - , invoice, paymentsToUpdate); + , transfer.Transfer.UnlockTime,invoice, paymentsToUpdate); } if (paymentsToUpdate.Any()) @@ -320,7 +320,7 @@ namespace BTCPayServer.Services.Altcoins.Monero.Services private async Task HandlePaymentData(string cryptoCode, string address, long totalAmount, long subaccountIndex, long subaddressIndex, - string txId, long confirmations, long blockHeight, InvoiceEntity invoice, + string txId, long confirmations, long blockHeight, long locktime, InvoiceEntity invoice, BlockingCollection<(PaymentEntity Payment, InvoiceEntity invoice)> paymentsToUpdate) { //construct the payment data @@ -333,7 +333,8 @@ namespace BTCPayServer.Services.Altcoins.Monero.Services ConfirmationCount = confirmations, Amount = totalAmount, BlockHeight = blockHeight, - Network = _networkProvider.GetNetwork(cryptoCode) + Network = _networkProvider.GetNetwork(cryptoCode), + LockTime = locktime }; //check if this tx exists as a payment to this invoice already