From 8d27778ced6af53e3537979b42a4d4ae3c3222b4 Mon Sep 17 00:00:00 2001 From: ndeet Date: Thu, 19 Oct 2023 14:41:25 +0200 Subject: [PATCH] Fix checkout in case session contains outdated order id; bump version. --- catalog/controller/payment/btcpay.php | 17 +++++++++++++++++ catalog/language/en-gb/payment/btcpay.php | 1 + catalog/view/template/payment/btcpay.twig | 3 +++ catalog/view/template/payment/btcpay_modal.twig | 2 ++ install.json | 2 +- system/library/btcpay/version.php | 2 +- 6 files changed, 25 insertions(+), 2 deletions(-) diff --git a/catalog/controller/payment/btcpay.php b/catalog/controller/payment/btcpay.php index 88531fd..a5291f1 100644 --- a/catalog/controller/payment/btcpay.php +++ b/catalog/controller/payment/btcpay.php @@ -25,6 +25,13 @@ public function index(): string true ); + if (isset($this->session->data['error_warning'])) { + $data['error_warning'] = $this->session->data['error_warning']; + unset($this->session->data['error_warning']); + } else { + $data['error_warning'] = ''; + } + if ($useModal) { $host = $this->config->get('payment_btcpay_url'); $data['btcpay_host'] = $host; @@ -63,6 +70,16 @@ public function checkout(): void $this->session->data['order_id'] ); + if (empty($order_info)) { + if ($debug) { + $this->log->write('Could not load order passed by session, order id: ' . $this->session->data['order_id']); + } + $this->session->data['error_warning'] = $this->language->get('session_checkout_order_error'); + $this->response->redirect( + $this->url->link('checkout/checkout', '', true) + ); + } + $invoiceId = ''; $checkoutLink = ''; diff --git a/catalog/language/en-gb/payment/btcpay.php b/catalog/language/en-gb/payment/btcpay.php index 3a2f0f4..4148941 100644 --- a/catalog/language/en-gb/payment/btcpay.php +++ b/catalog/language/en-gb/payment/btcpay.php @@ -6,3 +6,4 @@ $_['invoice_closed_text'] = 'Payment aborted. Please try again or choose a different payment method.'; $_['invoice_failed_text'] = 'Payment aborted. Error processing the request. Please contact store owner if the problem persists.'; $_['order_payment_link'] = 'You can check your payment status here: '; +$_['session_checkout_order_error'] = 'Your cart order id could not be found, please try to log out and in again.'; diff --git a/catalog/view/template/payment/btcpay.twig b/catalog/view/template/payment/btcpay.twig index 4a191dd..20a7a8c 100644 --- a/catalog/view/template/payment/btcpay.twig +++ b/catalog/view/template/payment/btcpay.twig @@ -1,3 +1,6 @@ +{% if error_warning %} +
{{ error_warning }}
+{% endif %}
diff --git a/catalog/view/template/payment/btcpay_modal.twig b/catalog/view/template/payment/btcpay_modal.twig index 58021f6..7919400 100644 --- a/catalog/view/template/payment/btcpay_modal.twig +++ b/catalog/view/template/payment/btcpay_modal.twig @@ -13,6 +13,8 @@ if (data.invoiceId !== undefined) { window.btcpay.setApiUrlPrefix('{{ btcpay_host }}'); window.btcpay.showInvoice(data.invoiceId); + } else { + showError('{{ invoice_failed_text }}'); } let invoice_paid = false; window.btcpay.onModalReceiveMessage(function (event) { diff --git a/install.json b/install.json index a985700..4872ba8 100644 --- a/install.json +++ b/install.json @@ -1,6 +1,6 @@ { "name": "BTCPay Server payment gateway", - "version": "4.2.1", + "version": "4.2.2", "license": "MIT", "author": "BTCPay Server", "link": "https://btcpayserver.org" diff --git a/system/library/btcpay/version.php b/system/library/btcpay/version.php index d906445..480781d 100644 --- a/system/library/btcpay/version.php +++ b/system/library/btcpay/version.php @@ -1,3 +1,3 @@