mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-18 14:34:23 +01:00
Handling payment button post and providing test form
This commit is contained in:
@@ -119,6 +119,9 @@
|
||||
<Content Update="Views\Apps\PayButton.cshtml">
|
||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||
</Content>
|
||||
<Content Update="Views\Apps\PayButtonTest.cshtml">
|
||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||
</Content>
|
||||
<Content Update="Views\Server\LNDGRPCServices.cshtml">
|
||||
<Pack>$(IncludeRazorContentInPack)</Pack>
|
||||
</Content>
|
||||
|
||||
@@ -308,5 +308,37 @@ namespace BTCPayServer.Controllers
|
||||
};
|
||||
return View(model);
|
||||
}
|
||||
|
||||
|
||||
[HttpPost]
|
||||
[Route("{appId}/pay")]
|
||||
[IgnoreAntiforgeryToken]
|
||||
[EnableCors(CorsPolicies.All)]
|
||||
public async Task<IActionResult> PayButtonHandle(string appId, [FromForm]PayButtonViewModel model)
|
||||
{
|
||||
var app = await GetApp(appId, AppType.PointOfSale);
|
||||
var settings = app.GetSettings<PointOfSaleSettings>();
|
||||
|
||||
var store = await GetStore(app);
|
||||
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("{appId}/paybuttontest")]
|
||||
public async Task<IActionResult> PayButtonTest(string appId)
|
||||
{
|
||||
return View();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace BTCPayServer.Models.AppViewModels
|
||||
public int ButtonSize { get; set; }
|
||||
public string ServerIpn { get; set; }
|
||||
public string BrowserRedirect { get; set; }
|
||||
public string EmailToNotify { get; set; }
|
||||
public string NotifyEmail { get; set; }
|
||||
|
||||
//
|
||||
public string UrlRoot { get; set; }
|
||||
|
||||
@@ -82,10 +82,10 @@
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Send Email Notifications to</label>
|
||||
<input name="emailToNotify" type="text" class="form-control" placeholder="(optional)"
|
||||
v-model="srvModel.emailToNotify" v-on:change="inputChanges"
|
||||
v-validate="'email'" :class="{'is-invalid': errors.has('emailToNotify') }">
|
||||
<small class="text-danger">{{ errors.first('emailToNotify') }}</small>
|
||||
<input name="notifyEmail" type="text" class="form-control" placeholder="(optional)"
|
||||
v-model="srvModel.notifyEmail" v-on:change="inputChanges"
|
||||
v-validate="'email'" :class="{'is-invalid': errors.has('notifyEmail') }">
|
||||
<small class="text-danger">{{ errors.first('notifyEmail') }}</small>
|
||||
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@@ -145,7 +145,7 @@
|
||||
en: {
|
||||
attributes: {
|
||||
price: 'Price', checkoutDesc: 'Checkout Description', orderId: 'Order Id',
|
||||
serverIpn: 'Server IPN', emailToNotify: 'Send Email Notifications', browserRedirect: 'Browser Redirect'
|
||||
serverIpn: 'Server IPN', notifyEmail: 'Send Email Notifications', browserRedirect: 'Browser Redirect'
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -167,8 +167,8 @@
|
||||
srvModel.buttonSize = buttonSize;
|
||||
}
|
||||
|
||||
var html = '<form method="POST" action="' + srvModel.urlRoot + '/apps/3jVExUHqRkGi4eaJEFCTxw5zjk14VAFzoVZXZJ3fbwED/pos">';
|
||||
html += addinput("amount", srvModel.price);
|
||||
var html = '<form method="POST" action="' + srvModel.urlRoot + '/apps/3jVExUHqRkGi4eaJEFCTxw5zjk14VAFzoVZXZJ3fbwED/pay">';
|
||||
html += addinput("price", srvModel.price);
|
||||
if (srvModel.currency) {
|
||||
html += addinput("currency", srvModel.currency);
|
||||
}
|
||||
@@ -185,8 +185,8 @@
|
||||
if (srvModel.browserRedirect) {
|
||||
html += addinput("browserRedirect", srvModel.browserRedirect);
|
||||
}
|
||||
if (srvModel.emailToNotify) {
|
||||
html += addinput("emailToNotify", srvModel.emailToNotify);
|
||||
if (srvModel.notifyEmail) {
|
||||
html += addinput("notifyEmail", srvModel.notifyEmail);
|
||||
}
|
||||
|
||||
var width = "209px";
|
||||
|
||||
14
BTCPayServer/Views/Apps/PayButtonTest.cshtml
Normal file
14
BTCPayServer/Views/Apps/PayButtonTest.cshtml
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
<section>
|
||||
<div class="container" id="payButtonCtrl">
|
||||
<div class="row">
|
||||
|
||||
<form method="POST" action="http://127.0.0.1:14142/apps/3jVExUHqRkGi4eaJEFCTxw5zjk14VAFzoVZXZJ3fbwED/pay">
|
||||
<input type="hidden" name="price" value="10" />
|
||||
<input type="hidden" name="currency" value="USD" />
|
||||
<input type="image" src="http://127.0.0.1:14142/img/paywithbtcpay.png" name="submit" style="width:209px" alt="Pay with BtcPay, Self-Hosted Bitcoin Payment Processor">
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
Reference in New Issue
Block a user