mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-18 22:44:29 +01:00
Show better error message for invalid destination in PullPayments (#5969)
This commit is contained in:
@@ -229,6 +229,7 @@ namespace BTCPayServer.Controllers
|
|||||||
PayoutMethodId payoutMethodId = null;
|
PayoutMethodId payoutMethodId = null;
|
||||||
IClaimDestination destination = null;
|
IClaimDestination destination = null;
|
||||||
IPayoutHandler payoutHandler = null;
|
IPayoutHandler payoutHandler = null;
|
||||||
|
string error = null;
|
||||||
if (string.IsNullOrEmpty(vm.SelectedPayoutMethod))
|
if (string.IsNullOrEmpty(vm.SelectedPayoutMethod))
|
||||||
{
|
{
|
||||||
foreach (var pmId in supported)
|
foreach (var pmId in supported)
|
||||||
@@ -237,6 +238,7 @@ namespace BTCPayServer.Controllers
|
|||||||
(IClaimDestination dst, string err) = handler == null
|
(IClaimDestination dst, string err) = handler == null
|
||||||
? (null, "No payment handler found for this payment method")
|
? (null, "No payment handler found for this payment method")
|
||||||
: await handler.ParseAndValidateClaimDestination(vm.Destination, ppBlob, cancellationToken);
|
: await handler.ParseAndValidateClaimDestination(vm.Destination, ppBlob, cancellationToken);
|
||||||
|
error = err;
|
||||||
if (dst is not null && err is null)
|
if (dst is not null && err is null)
|
||||||
{
|
{
|
||||||
payoutMethodId = pmId;
|
payoutMethodId = pmId;
|
||||||
@@ -250,12 +252,15 @@ namespace BTCPayServer.Controllers
|
|||||||
{
|
{
|
||||||
payoutMethodId = supported.FirstOrDefault(id => vm.SelectedPayoutMethod == id.ToString());
|
payoutMethodId = supported.FirstOrDefault(id => vm.SelectedPayoutMethod == id.ToString());
|
||||||
payoutHandler = payoutMethodId is null ? null : _payoutHandlers.TryGet(payoutMethodId);
|
payoutHandler = payoutMethodId is null ? null : _payoutHandlers.TryGet(payoutMethodId);
|
||||||
destination = payoutHandler is null ? null : (await payoutHandler.ParseAndValidateClaimDestination(vm.Destination, ppBlob, cancellationToken)).destination;
|
if (payoutHandler is not null)
|
||||||
|
{
|
||||||
|
(destination, error) = await payoutHandler.ParseAndValidateClaimDestination(vm.Destination, ppBlob, cancellationToken);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (destination is null)
|
if (destination is null)
|
||||||
{
|
{
|
||||||
ModelState.AddModelError(nameof(vm.Destination), "Invalid destination or payment method");
|
ModelState.AddModelError(nameof(vm.Destination), error ?? "Invalid destination or payment method");
|
||||||
return await ViewPullPayment(pullPaymentId);
|
return await ViewPullPayment(pullPaymentId);
|
||||||
}
|
}
|
||||||
var amtError = ClaimRequest.IsPayoutAmountOk(destination, vm.ClaimedAmount == 0 ? null : vm.ClaimedAmount, payoutHandler.Currency, ppBlob.Currency);
|
var amtError = ClaimRequest.IsPayoutAmountOk(destination, vm.ClaimedAmount == 0 ? null : vm.ClaimedAmount, payoutHandler.Currency, ppBlob.Currency);
|
||||||
|
|||||||
Reference in New Issue
Block a user