From 2d2c1d5f2d5ca6444987274f54af6fbab71f6a46 Mon Sep 17 00:00:00 2001 From: jackstar12 <62219658+jackstar12@users.noreply.github.com> Date: Tue, 17 Sep 2024 14:41:04 +0200 Subject: [PATCH] fix: check lightning payment status (#6219) --- .../UILightningLikePayoutController.cs | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/BTCPayServer/Data/Payouts/LightningLike/UILightningLikePayoutController.cs b/BTCPayServer/Data/Payouts/LightningLike/UILightningLikePayoutController.cs index ab8b14a08..357ff58ab 100644 --- a/BTCPayServer/Data/Payouts/LightningLike/UILightningLikePayoutController.cs +++ b/BTCPayServer/Data/Payouts/LightningLike/UILightningLikePayoutController.cs @@ -319,23 +319,34 @@ namespace BTCPayServer.Data.Payouts.LightningLike string message = null; if (result.Result == PayResult.Ok) { - message = result.Details?.TotalAmount != null - ? $"Paid out {result.Details.TotalAmount.ToDecimal(LightMoneyUnit.BTC)}" - : null; - payoutData.State = PayoutState.Completed; - try + payoutData.State = result.Details?.Status switch { - var payment = await lightningClient.GetPayment(bolt11PaymentRequest.PaymentHash.ToString(), cancellationToken); - proofBlob.Preimage = payment.Preimage; - } - catch (Exception) + LightningPaymentStatus.Pending => PayoutState.InProgress, + _ => PayoutState.Completed, + }; + if (payoutData.State == PayoutState.Completed) { - // ignored + message = result.Details?.TotalAmount != null + ? $"Paid out {result.Details.TotalAmount.ToDecimal(LightMoneyUnit.BTC)}" + : null; + try + { + var payment = await lightningClient.GetPayment(bolt11PaymentRequest.PaymentHash.ToString(), + cancellationToken); + proofBlob.Preimage = payment.Preimage; + } + catch (Exception) + { + // ignored + } } } else if (result.Result == PayResult.Unknown) { payoutData.State = PayoutState.InProgress; + } + if (payoutData.State == PayoutState.InProgress) + { message = "The payment has been initiated but is still in-flight."; }