mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-01-19 05:33:31 +01:00
Moving PayButton handler to public controller
This commit is contained in:
parent
735012e3d7
commit
0abd62dfe8
@ -127,10 +127,10 @@
|
|||||||
<Content Update="Views\Stores\PayButton.cshtml">
|
<Content Update="Views\Stores\PayButton.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Stores\PayButtonHandle.cshtml">
|
<Content Update="Views\Public\PayButtonHandle.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Stores\PayButtonTest.cshtml">
|
<Content Update="Views\Public\PayButtonTest.cshtml">
|
||||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Update="Views\Server\LNDGRPCServices.cshtml">
|
<Content Update="Views\Server\LNDGRPCServices.cshtml">
|
||||||
|
62
BTCPayServer/Controllers/PublicController.cs
Normal file
62
BTCPayServer/Controllers/PublicController.cs
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using BTCPayServer.Models.StoreViewModels;
|
||||||
|
using BTCPayServer.Services.Stores;
|
||||||
|
using Microsoft.AspNetCore.Cors;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
|
namespace BTCPayServer.Controllers
|
||||||
|
{
|
||||||
|
public class PublicController : Controller
|
||||||
|
{
|
||||||
|
public PublicController(InvoiceController invoiceController,
|
||||||
|
StoreRepository storeRepository)
|
||||||
|
{
|
||||||
|
_InvoiceController = invoiceController;
|
||||||
|
_StoreRepository = storeRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
private InvoiceController _InvoiceController;
|
||||||
|
private StoreRepository _StoreRepository;
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
[Route("/pay/{storeId}")]
|
||||||
|
[IgnoreAntiforgeryToken]
|
||||||
|
[EnableCors(CorsPolicies.All)]
|
||||||
|
public async Task<IActionResult> PayButtonHandle(string storeId, [FromForm]PayButtonViewModel model)
|
||||||
|
{
|
||||||
|
var store = await _StoreRepository.FindStore(storeId);
|
||||||
|
if (store == null)
|
||||||
|
ModelState.AddModelError("Store", "Invalid store");
|
||||||
|
|
||||||
|
// TODO: extract validation to model
|
||||||
|
if (model.Price <= 0)
|
||||||
|
ModelState.AddModelError("Price", "Price must be greater than 0");
|
||||||
|
|
||||||
|
if (!ModelState.IsValid)
|
||||||
|
return View();
|
||||||
|
|
||||||
|
var invoice = await _InvoiceController.CreateInvoiceCore(new NBitpayClient.Invoice()
|
||||||
|
{
|
||||||
|
Price = model.Price,
|
||||||
|
Currency = model.Currency,
|
||||||
|
ItemDesc = model.CheckoutDesc,
|
||||||
|
OrderId = model.OrderId,
|
||||||
|
BuyerEmail = model.NotifyEmail,
|
||||||
|
NotificationURL = model.ServerIpn,
|
||||||
|
RedirectURL = model.BrowserRedirect,
|
||||||
|
FullNotifications = true
|
||||||
|
}, store, HttpContext.Request.GetAbsoluteRoot());
|
||||||
|
return Redirect(invoice.Data.Url);
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
[Route("/paybuttontest")]
|
||||||
|
public IActionResult PayButtonTest()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -48,8 +48,7 @@ namespace BTCPayServer.Controllers
|
|||||||
ExplorerClientProvider explorerProvider,
|
ExplorerClientProvider explorerProvider,
|
||||||
IFeeProviderFactory feeRateProvider,
|
IFeeProviderFactory feeRateProvider,
|
||||||
LanguageService langService,
|
LanguageService langService,
|
||||||
IHostingEnvironment env,
|
IHostingEnvironment env)
|
||||||
InvoiceController invoiceController)
|
|
||||||
{
|
{
|
||||||
_RateFactory = rateFactory;
|
_RateFactory = rateFactory;
|
||||||
_Repo = repo;
|
_Repo = repo;
|
||||||
@ -65,7 +64,6 @@ namespace BTCPayServer.Controllers
|
|||||||
_ServiceProvider = serviceProvider;
|
_ServiceProvider = serviceProvider;
|
||||||
_BtcpayServerOptions = btcpayServerOptions;
|
_BtcpayServerOptions = btcpayServerOptions;
|
||||||
_BTCPayEnv = btcpayEnv;
|
_BTCPayEnv = btcpayEnv;
|
||||||
_InvoiceController = invoiceController;
|
|
||||||
}
|
}
|
||||||
BTCPayServerOptions _BtcpayServerOptions;
|
BTCPayServerOptions _BtcpayServerOptions;
|
||||||
BTCPayServerEnvironment _BTCPayEnv;
|
BTCPayServerEnvironment _BTCPayEnv;
|
||||||
@ -80,7 +78,6 @@ namespace BTCPayServer.Controllers
|
|||||||
UserManager<ApplicationUser> _UserManager;
|
UserManager<ApplicationUser> _UserManager;
|
||||||
private LanguageService _LangService;
|
private LanguageService _LangService;
|
||||||
IHostingEnvironment _Env;
|
IHostingEnvironment _Env;
|
||||||
InvoiceController _InvoiceController;
|
|
||||||
|
|
||||||
[TempData]
|
[TempData]
|
||||||
public string StatusMessage
|
public string StatusMessage
|
||||||
@ -791,41 +788,5 @@ namespace BTCPayServer.Controllers
|
|||||||
};
|
};
|
||||||
return View(model);
|
return View(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
|
||||||
[Route("{storeId}/pay")]
|
|
||||||
[IgnoreAntiforgeryToken]
|
|
||||||
[EnableCors(CorsPolicies.All)]
|
|
||||||
public async Task<IActionResult> PayButtonHandle(string storeId, [FromForm]PayButtonViewModel model)
|
|
||||||
{
|
|
||||||
var store = StoreData;
|
|
||||||
|
|
||||||
// TODO: extract validation to model
|
|
||||||
if (model.Price <= 0)
|
|
||||||
ModelState.AddModelError("Price", "Price must be greater than 0");
|
|
||||||
|
|
||||||
if (!ModelState.IsValid)
|
|
||||||
return View();
|
|
||||||
|
|
||||||
var invoice = await _InvoiceController.CreateInvoiceCore(new NBitpayClient.Invoice()
|
|
||||||
{
|
|
||||||
Price = model.Price,
|
|
||||||
Currency = model.Currency,
|
|
||||||
ItemDesc = model.CheckoutDesc,
|
|
||||||
OrderId = model.OrderId,
|
|
||||||
BuyerEmail = model.NotifyEmail,
|
|
||||||
NotificationURL = model.ServerIpn,
|
|
||||||
RedirectURL = model.BrowserRedirect,
|
|
||||||
FullNotifications = true
|
|
||||||
}, store, HttpContext.Request.GetAbsoluteRoot());
|
|
||||||
return Redirect(invoice.Data.Url);
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet]
|
|
||||||
[Route("{storeId}/paybuttontest")]
|
|
||||||
public IActionResult PayButtonTest(string storeId)
|
|
||||||
{
|
|
||||||
return View();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<div class="container" id="payButtonCtrl">
|
<div class="container" id="payButtonCtrl">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
||||||
<form method="POST" action="http://127.0.0.1:14142/stores/4b1AnMtMNuxwG7io2dUcB3TrT3yUbgajjGfJjVfdhBDu/pay">
|
<form method="POST" action="http://127.0.0.1:14142/pay/4b1AnMtMNuxwG7io2dUcB3TrT3yUbgajjGfJjVfdhBDu">
|
||||||
<input type="hidden" name="price" value="10" />
|
<input type="hidden" name="price" value="10" />
|
||||||
<input type="hidden" name="currency" value="USD" />
|
<input type="hidden" name="currency" value="USD" />
|
||||||
<input type="image" src="http://127.0.0.1:14142/img/paybutton/pay.png" name="submit" style="width:209px" alt="Pay with BtcPay, Self-Hosted Bitcoin Payment Processor">
|
<input type="image" src="http://127.0.0.1:14142/img/paybutton/pay.png" name="submit" style="width:209px" alt="Pay with BtcPay, Self-Hosted Bitcoin Payment Processor">
|
@ -42,7 +42,7 @@ function inputChanges(event, buttonSize) {
|
|||||||
srvModel.buttonSize = buttonSize;
|
srvModel.buttonSize = buttonSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
var html = '<form method="POST" action="' + esc(srvModel.urlRoot + 'stores/'+ srvModel.storeId + '/pay') + '">';
|
var html = '<form method="POST" action="' + esc(srvModel.urlRoot + 'pay/'+ srvModel.storeId) + '">';
|
||||||
html += addinput("price", srvModel.price);
|
html += addinput("price", srvModel.price);
|
||||||
if (srvModel.currency) {
|
if (srvModel.currency) {
|
||||||
html += addinput("currency", srvModel.currency);
|
html += addinput("currency", srvModel.currency);
|
||||||
|
Loading…
Reference in New Issue
Block a user