diff --git a/BTCPayServer/Plugins/PointOfSale/Controllers/UIPointOfSaleController.cs b/BTCPayServer/Plugins/PointOfSale/Controllers/UIPointOfSaleController.cs index 056862d1e..70c9cc651 100644 --- a/BTCPayServer/Plugins/PointOfSale/Controllers/UIPointOfSaleController.cs +++ b/BTCPayServer/Plugins/PointOfSale/Controllers/UIPointOfSaleController.cs @@ -240,6 +240,7 @@ namespace BTCPayServer.Plugins.PointOfSale.Controllers } var store = await _appService.GetStore(app); + var storeBlob = store.GetStoreBlob(); var posFormId = settings.FormId; var formData = await FormDataService.GetForm(posFormId); @@ -297,7 +298,7 @@ namespace BTCPayServer.Plugins.PointOfSale.Controllers RedirectAutomatically = settings.RedirectAutomatically, SupportedTransactionCurrencies = paymentMethods, RequiresRefundEmail = requiresRefundEmail == RequiresRefundEmail.InheritFromStore - ? store.GetStoreBlob().RequiresRefundEmail + ? storeBlob.RequiresRefundEmail : requiresRefundEmail == RequiresRefundEmail.On, }, store, HttpContext.Request.GetAbsoluteRoot(), new List { AppService.GetAppInternalTag(appId) }, @@ -355,6 +356,10 @@ namespace BTCPayServer.Plugins.PointOfSale.Controllers meta.Merge(formResponseJObject); entity.Metadata = InvoiceMetadata.FromJObject(meta); }); + if (price is 0 && storeBlob.ReceiptOptions.Enabled is true) + { + return RedirectToAction(nameof(UIInvoiceController.InvoiceReceipt), "UIInvoice", new { invoiceId = invoice.Data.Id }); + } return RedirectToAction(nameof(UIInvoiceController.Checkout), "UIInvoice", new { invoiceId = invoice.Data.Id }); } catch (BitpayHttpException e) diff --git a/BTCPayServer/Views/UIInvoice/InvoiceReceipt.cshtml b/BTCPayServer/Views/UIInvoice/InvoiceReceipt.cshtml index e0d99bb7c..fd4a3b69d 100644 --- a/BTCPayServer/Views/UIInvoice/InvoiceReceipt.cshtml +++ b/BTCPayServer/Views/UIInvoice/InvoiceReceipt.cshtml @@ -12,6 +12,7 @@ Layout = null; ViewData["Title"] = $"Receipt from {Model.StoreName}"; var isProcessing = Model.Status == InvoiceStatus.Processing; + var isFreeInvoice = (Model.Status == InvoiceStatus.New && Model.Amount == 0); var isSettled = Model.Status == InvoiceStatus.Settled; } @@ -25,6 +26,11 @@ + }else if (isFreeInvoice) + { + }