From a7a4cfee7487da29408acfa517cf913ff1f4ea56 Mon Sep 17 00:00:00 2001 From: Nikita Zhavoronkov Date: Thu, 5 Sep 2019 18:52:19 +0300 Subject: [PATCH] VIPPS-243: Publication v.1.2.9 - Partial (offline) void feature - Capture/Refund offline support - Exclude shipping methods feature --- Block/PartialVoid/Order/Email/Items.php | 53 ++++++++ Controller/Payment/ShippingDetails.php | 22 +++- Gateway/Command/CaptureCommand.php | 2 +- Gateway/Command/RefundCommand.php | 2 +- Gateway/Config/CanVoidHandler.php | 85 +++++++++++++ INSTALL.md | 33 +++-- Model/Config/Source/Email/Template.php | 69 ++++++++++ Model/Order/PartialVoid/Config.php | 118 ++++++++++++++++++ Model/Order/PartialVoid/SendMail.php | 85 +++++++++++++ Model/Quote/ShippingMethodValidator.php | 50 ++++++++ Observer/AvailabilityByShippingMethod.php | 71 +++++++++++ Observer/SendOfflineVoidEmail.php | 112 +++++++++++++++++ Plugin/Sales/Model/Order/Payment.php | 94 ++++++++++++++ README.md | 29 +++++ composer.json | 2 +- docs/{ => images}/express_vipps_settings.png | Bin docs/images/quote-monitoring-flow.png | Bin 0 -> 94316 bytes docs/{ => images}/vipps_basic.png | Bin docs/{ => images}/vipps_method.png | Bin etc/adminhtml/di.xml | 8 +- etc/adminhtml/system.xml | 2 + etc/adminhtml/system/checkout.xml | 35 ++++++ etc/adminhtml/system/partial_void.xml | 68 ++++++++++ etc/config.xml | 3 + etc/di.xml | 5 + etc/email_templates.xml | 20 +++ etc/events.xml | 25 ++++ i18n/nb_NO.csv | 4 +- view/frontend/email/partial_void.html | 81 ++++++++++++ .../layout/vipps_email_partial_order.xml | 29 +++++ .../templates/email/items/order/default.phtml | 80 ++++++++++++ 31 files changed, 1154 insertions(+), 33 deletions(-) create mode 100644 Block/PartialVoid/Order/Email/Items.php create mode 100644 Gateway/Config/CanVoidHandler.php create mode 100644 Model/Config/Source/Email/Template.php create mode 100644 Model/Order/PartialVoid/Config.php create mode 100644 Model/Order/PartialVoid/SendMail.php create mode 100644 Model/Quote/ShippingMethodValidator.php create mode 100644 Observer/AvailabilityByShippingMethod.php create mode 100644 Observer/SendOfflineVoidEmail.php create mode 100644 Plugin/Sales/Model/Order/Payment.php rename docs/{ => images}/express_vipps_settings.png (100%) create mode 100644 docs/images/quote-monitoring-flow.png rename docs/{ => images}/vipps_basic.png (100%) rename docs/{ => images}/vipps_method.png (100%) create mode 100644 etc/adminhtml/system/checkout.xml create mode 100644 etc/adminhtml/system/partial_void.xml create mode 100644 etc/email_templates.xml create mode 100644 etc/events.xml create mode 100644 view/frontend/email/partial_void.html create mode 100644 view/frontend/layout/vipps_email_partial_order.xml create mode 100644 view/frontend/templates/email/items/order/default.phtml diff --git a/Block/PartialVoid/Order/Email/Items.php b/Block/PartialVoid/Order/Email/Items.php new file mode 100644 index 00000000..3f24e6de --- /dev/null +++ b/Block/PartialVoid/Order/Email/Items.php @@ -0,0 +1,53 @@ +order) { + $this->order = clone $this->getData('order'); + $items = $this->order->getItems(); + foreach ($items as $key => $item) { + if (!$item->getQtyCanceled()) { + unset($items[$key]); + } + } + $this->order->setItems($items); + } + + return $this->order; + } +} diff --git a/Controller/Payment/ShippingDetails.php b/Controller/Payment/ShippingDetails.php index 08895d4e..468d5006 100644 --- a/Controller/Payment/ShippingDetails.php +++ b/Controller/Payment/ShippingDetails.php @@ -1,6 +1,6 @@ logger = $logger; $this->addressUpdater = $addressUpdater; $this->gdprCompliance = $compliance; + $this->shippingMethodValidator = $shippingMethodValidator; } /** @@ -147,12 +151,18 @@ public function execute() 'shippingDetails' => [] ]; foreach ($shippingMethods as $key => $shippingMethod) { + + $methodFullCode = $shippingMethod->getCarrierCode() . '_' . $shippingMethod->getMethodCode(); + if (!$this->shippingMethodValidator->isValid($methodFullCode)) { + continue; + } + $responseData['shippingDetails'][] = [ 'isDefault' => 'N', 'priority' => $key, 'shippingCost' => $shippingMethod->getAmount(), - 'shippingMethod' => $shippingMethod->getMethodCode(), - 'shippingMethodId' => $shippingMethod->getCarrierCode() . '_' . $shippingMethod->getMethodCode(), + 'shippingMethod' => $shippingMethod->getMethodTitle(), + 'shippingMethodId' => $methodFullCode, ]; } $result->setHttpResponseCode(ZendResponse::STATUS_CODE_200); diff --git a/Gateway/Command/CaptureCommand.php b/Gateway/Command/CaptureCommand.php index acb5bb62..b72be8ef 100644 --- a/Gateway/Command/CaptureCommand.php +++ b/Gateway/Command/CaptureCommand.php @@ -255,7 +255,7 @@ private function captureBasedOnPaymentDetails($commandSubject, Transaction $tran $message = __( 'Captured amount is not the same as you are trying to capture.' . PHP_EOL . ' Payment information was not synced correctly between Magento and Vipps.' - . PHP_EOL . ' It might be happened that previous operation was successfully completed in Vipps' + . PHP_EOL . ' It might be that the previous operation was successfully completed in Vipps' . PHP_EOL . ' but Magento did not receive a response.' . PHP_EOL . ' To be in sync you have to capture the same amount that has been already captured' . PHP_EOL . ' in Vipps: %1', diff --git a/Gateway/Command/RefundCommand.php b/Gateway/Command/RefundCommand.php index 797fc7d2..021bfc03 100644 --- a/Gateway/Command/RefundCommand.php +++ b/Gateway/Command/RefundCommand.php @@ -253,7 +253,7 @@ private function refundBasedOnPaymentDetails($commandSubject, Transaction $trans $message = __( 'Refunded amount is not the same as you are trying to refund.' . PHP_EOL . ' Payment information was not synced correctly between Magento and Vipps.' - . PHP_EOL . ' It might be happened that previous operation was successfully completed in Vipps' + . PHP_EOL . ' It might be that the previous operation was successfully completed in Vipps' . PHP_EOL . ' but Magento did not receive a response.' . PHP_EOL . ' To be in sync you have to refund the same amount that has been already refunded' . PHP_EOL . ' in Vipps: %1', diff --git a/Gateway/Config/CanVoidHandler.php b/Gateway/Config/CanVoidHandler.php new file mode 100644 index 00000000..e69180f3 --- /dev/null +++ b/Gateway/Config/CanVoidHandler.php @@ -0,0 +1,85 @@ +gatewayConfig = $gatewayConfig; + $this->paymentDetailsProvider = $paymentDetailsProvider; + $this->transactionBuilder = $transactionBuilder; + } + + /** + * Disable partial online void + * + * @param array $subject + * @param null $storeId + * + * @return bool + * @throws NoSuchEntityException + * @throws VippsException + */ + public function handle(array $subject, $storeId = null): bool + { + $response = $this->paymentDetailsProvider->get($subject); + $transaction = $this->transactionBuilder->setData($response)->build(); + if ($transaction->getTransactionSummary()->getCapturedAmount() > 0) { + return false; + } + + return (bool)$this->gatewayConfig->getValue(SubjectReader::readField($subject), $storeId); + } +} diff --git a/INSTALL.md b/INSTALL.md index e6333e87..ffbd8da2 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -7,7 +7,7 @@ 1. You must have a Vipps merchant account. See [Vipps på Nett](https://www.vipps.no/bedrift/vipps-pa-nett) 1. As with _all_ Magento extensions, it is highly recommended to backup your site before installation and to install and test on a staging environment prior to production deployments. -# Installation via Composer (recommended) +# Installation via Composer 1. Navigate to your [Magento root directory](https://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/module-file-structure.html). 1. Enter command: `composer require vipps/module-payment` @@ -15,20 +15,6 @@ 1. Enter command: `php bin/magento setup:upgrade` 1. Put your Magento in production mode if it’s required. -# Installation via Marketplace - -**Please note:** _This extension is not yet available on Magento Marketplace. This notice will be removed when it is._ - -Here are steps required to install Payments extension via Component Manager. - -1. Make a purchase for the Vipps extension on [Magento Marketplace](https://marketplace.magento.com). -1. From your `Magento Admin` access `System` -> `Web Setup Wizard` page. -1. Enter Marketplace authentication keys. Please read about authentication keys generation. -1. Navigate to `Component Manager` page. -1. On the `Component Manager` page click the `Sync button to update your new purchased extensions. -1. Click `Install` in the `Action` column for `Realex Payments` component. -1. . Follow Web Setup Wizard instructions. - # Configuration The Vipps Payment module can be easily configured to meet business expectations of your web store. This section will show you how to configure the extension via `Magento Admin`. @@ -38,6 +24,7 @@ From Magento Admin navigate to `Store` -> `Configuration` -> `Sales` -> `Payment By clicking the `Configure` button, all configuration module settings will be shown. Once you have finished with the configuration simply click `Close` and `Save` button for your convenience. ## Add a separate connection for Vipps resources +These settings are required to prevent profiles loss when Magento reverts invoice/refund transactions. * Duplicate 'default' connection in app/etc/env.php and name it 'vipps'. It should look like: ``` 'vipps' => @@ -59,7 +46,6 @@ By clicking the `Configure` button, all configuration module settings will be sh 'connection' => 'vipps', ), ``` -These settings are required to prevent profiles loss when Magento reverts invoice/refund transactions. # Settings @@ -68,7 +54,7 @@ Vipps Payments configuration is divided by sections. It helps to quickly find an 1. Basic Vipps Settings. 1. Express Checkout Settings. -![Screenshot of Vipps Settings](docs/vipps_method.png) +![Screenshot of Vipps Settings](docs/images/vipps_method.png) Please ensure you check all configuration settings prior to using Vipps Payment. Pay attention to the Vipps Basic Settings section, namely `Saleunit Serial Number`, `Client ID`, `Client Secret`, `Subscription Key 1`, `Subscription Key 2`. @@ -76,11 +62,20 @@ For information about how to find the above values, see the [Vipps Developer Por # Basic Vipps Settings -![Screenshot of Basic Vipps Settings](docs/vipps_basic.png) +![Screenshot of Basic Vipps Settings](docs/images/vipps_basic.png) # Express Checkout Settings -![Screenshot of Express Vipps Settings](docs/express_vipps_settings.png) +![Screenshot of Express Vipps Settings](docs/images/express_vipps_settings.png) + +# Quote Monitoring + +Quote it is a cart contents in Magento. Theoretically the quote is an offer and if the user accepts it (by checking out) it converts to order. + +When payment was initiated (customer was redirected to Vipps) Magento creates a new record on `Vipps Quote Monitoring` page and starts tracking an Vipps order. +To do that Magento has a cron job that runs by schedule/each 10 min. + +You can find this page under `System -> Vipps` menu section. Under `Store -> Sales -> Payment Methods -> Vipps -> Cancellation` you can find appropriate configuration settings. # Support diff --git a/Model/Config/Source/Email/Template.php b/Model/Config/Source/Email/Template.php new file mode 100644 index 00000000..bff6c827 --- /dev/null +++ b/Model/Config/Source/Email/Template.php @@ -0,0 +1,69 @@ +config = $config; + } + + /** + * Replace config path for correct rendering default template option + * + * @return array + */ + public function toOptionArray(): array + { + $element = $this->config->getElement($this->getPath()); + $configData = $element->getData(); + $this->setPath($configData['config_path']); + return parent::toOptionArray(); + } +} diff --git a/Model/Order/PartialVoid/Config.php b/Model/Order/PartialVoid/Config.php new file mode 100644 index 00000000..dafe6fd0 --- /dev/null +++ b/Model/Order/PartialVoid/Config.php @@ -0,0 +1,118 @@ +scopeConfig = $scopeConfig; + } + + /** + * @param null $storeId + * + * @return bool + */ + public function isOfflinePartialVoidEnabled($storeId = null): bool + { + return $this->scopeConfig->isSetFlag(self::XML_PATH_IS_ENABLED, ScopeInterface::SCOPE_STORE, $storeId); + } + + /** + * @param null $storeId + * + * @return bool + */ + public function isSendMailEnabled($storeId = null): bool + { + return $this->scopeConfig->isSetFlag(self::XML_PATH_IS_SEND_MAIL_ENABLED, ScopeInterface::SCOPE_STORE, $storeId); + } + + /** + * @param null $storeId + * + * @return string + */ + public function getEmailTemplate($storeId = null): string + { + return $this->scopeConfig->getValue(self::XML_PATH_EMAIL_TEMPLATE, ScopeInterface::SCOPE_STORE, $storeId); + } + + /** + * @param null $storeId + * + * @return string + */ + public function emailSender($storeId = null): string + { + return $this->scopeConfig->getValue(self::XML_PATH_EMAIL_SENDER, ScopeInterface::SCOPE_STORE, $storeId); + } + + /** + * @param null $storeId + * + * @return string + */ + public function getEmailMessage($storeId = null): string + { + return $this->scopeConfig->getValue(self::XML_PATH_EMAIL_MESSAGE, ScopeInterface::SCOPE_STORE, $storeId); + } +} diff --git a/Model/Order/PartialVoid/SendMail.php b/Model/Order/PartialVoid/SendMail.php new file mode 100644 index 00000000..07ef3feb --- /dev/null +++ b/Model/Order/PartialVoid/SendMail.php @@ -0,0 +1,85 @@ +transportBuilder = $transportBuilder; + $this->storeManager = $storeManager; + $this->config = $config; + } + + /** + * @param OrderInterface $order + * + * @throws \Magento\Framework\Exception\LocalizedException + * @throws \Magento\Framework\Exception\MailException + */ + public function send(OrderInterface $order) + { + $transport = $this->transportBuilder + ->setTemplateIdentifier($this->config->getEmailTemplate($order->getStoreId())) + ->setFromByScope($this->config->emailSender($order->getStoreId())) + ->addTo($order->getCustomerEmail(), "{$order->getCustomerFirstname()} {$order->getCustomerLastname()}") + ->setTemplateOptions([ + 'area' => Area::AREA_FRONTEND, + 'store' => $order->getStoreId(), + ]) + ->setTemplateVars([ + 'order' => $order, + 'payment_html' => $order->getPayment()->getMethodInstance()->getTitle(), + 'email_message' => $this->config->getEmailMessage($order->getStoreId()), + ]) + ->getTransport(); + + $transport->sendMessage(); + } +} diff --git a/Model/Quote/ShippingMethodValidator.php b/Model/Quote/ShippingMethodValidator.php new file mode 100644 index 00000000..491affea --- /dev/null +++ b/Model/Quote/ShippingMethodValidator.php @@ -0,0 +1,50 @@ +config = $config; + } + + /** + * @param string $methodCode + * @return bool + * @throws \Magento\Framework\Exception\NoSuchEntityException + */ + public function isValid($methodCode) + { + $disabledShippingMethods = explode(',', $this->config->getValue('disallowed_shipping_methods')); + return !in_array($methodCode, $disabledShippingMethods); + } +} diff --git a/Observer/AvailabilityByShippingMethod.php b/Observer/AvailabilityByShippingMethod.php new file mode 100644 index 00000000..d925fceb --- /dev/null +++ b/Observer/AvailabilityByShippingMethod.php @@ -0,0 +1,71 @@ +shippingMethodValidator = $shippingMethodValidator; + } + + /** + * @param Observer $observer + * @return void + * + * 'result' => $checkResult, + * 'method_instance' => $this, + * 'quote' => $quote + * + * @throws NoSuchEntityException + */ + public function execute(Observer $observer) + { + $method = $observer->getData('method_instance'); + $quote = $observer->getData('quote'); + $result = $observer->getData('result'); + + // Ignore not Vipps method and in case no quote here. + if ($method->getCode() !== 'vipps' || !$quote) { + return; + } + + /** @var Quote $quote */ + $quote = $observer->getData('quote'); + if (!$this->shippingMethodValidator->isValid($quote->getShippingAddress()->getShippingMethod())) { + $result->setData('is_available', false); + } + + return; + } +} diff --git a/Observer/SendOfflineVoidEmail.php b/Observer/SendOfflineVoidEmail.php new file mode 100644 index 00000000..851588f9 --- /dev/null +++ b/Observer/SendOfflineVoidEmail.php @@ -0,0 +1,112 @@ +dataObjectFactory = $dataObjectFactory; + $this->paymentDetailsProvider = $paymentDetailsProvider; + $this->transactionBuilder = $transactionBuilder; + $this->sendMail = $sendMail; + $this->config = $config; + } + + /** + * Send email to customer about offline void + * + * @param Observer $observer + * + * @throws LocalizedException + * @throws MailException + * @throws VippsException + */ + public function execute(Observer $observer) + { + /** @var Order $order */ + $order = $observer->getData('order'); + $payment = $order->getPayment(); + $offlineVoidEnabled = $this->config->isOfflinePartialVoidEnabled($order->getStoreId()); + $sendMailEnabled = $this->config->isSendMailEnabled($order->getStoreId()); + + if ($payment->getMethod() === 'vipps' && $offlineVoidEnabled && $sendMailEnabled) { + $paymentDataObject = $this->dataObjectFactory->create($payment); + $response = $this->paymentDetailsProvider->get(['payment' => $paymentDataObject]); + $transaction = $this->transactionBuilder->setData($response)->build(); + if ($transaction->getTransactionSummary()->getRemainingAmountToCapture() > 0) { + $this->sendMail->send($order); + } + } + } +} diff --git a/Plugin/Sales/Model/Order/Payment.php b/Plugin/Sales/Model/Order/Payment.php new file mode 100644 index 00000000..5204185e --- /dev/null +++ b/Plugin/Sales/Model/Order/Payment.php @@ -0,0 +1,94 @@ +dataObjectFactory = $dataObjectFactory; + $this->paymentDetailsProvider = $paymentDetailsProvider; + $this->transactionBuilder = $transactionBuilder; + $this->config = $config; + } + + /** + * Throw exception if offline partial void disabled + * + * @param MagentoPayment $payment + * + * @throws LocalizedException + * @throws VippsException + */ + public function beforeCancel(MagentoPayment $payment) + { + if ($payment->getMethod() === 'vipps') { + $paymentDataObject = $this->dataObjectFactory->create($payment); + $response = $this->paymentDetailsProvider->get(['payment' => $paymentDataObject]); + $transaction = $this->transactionBuilder->setData($response)->build(); + $offlineVoidEnabled = $this->config->isOfflinePartialVoidEnabled(); + if (!$offlineVoidEnabled && $transaction->getTransactionSummary()->getCapturedAmount() > 0) { + throw new LocalizedException(__('Can\'t cancel captured transaction.')); + } + } + } +} diff --git a/README.md b/README.md index e6c52a8e..b85f8444 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,35 @@ Please see: https://github.com/vippsas/vipps-magento-v1 Please follow the instructions in [INSTALL.md](INSTALL.md) + +### Quote Processing Flow + +1. When payment was initiated a new record is created on Vipps Quote Monitoring page with status `New`. +1. Magento polls Vipps for orders to process by cron. +1. When order was accepted on Vipps side, Magento is trying to place an order and marks a record as `Placed` +1. When order was cancelled on Vipps side, Magento marks such record as `Cancelled` +1. If order has not been accepted on Vipps side within some period of time so it marked as expired, Magento marks it as `Expired` +1. If order has not been yet accepted on Vipps side and has not been expired yet, Magento marks it as `Processing`. Appropriate message added on record details page. +1. If order accepted on Vipps side but an error occurred during order placement on Magento side, such record marks as `Processing`. Appropriate message added on record details page. +1. Magento is trying to process the same record `3` times and when it failed after `3` times such record marks as `Place Failed`. +1. It is possible to specify that Magento has to cancel Vipps order automatically when appropriate Magento quote was failed so that client's money released. See `Store -> Sales -> Payment Methods -> Vipps -> Cancellation` +1. If it is specified that Magento has to cancel all failed quotes then Magento fetches all records marked as `Place Failed`, cancel them and marks as `Cancelled` + +Here is a diagram of the process +![Screenshot of Quote Processing Flow](docs/images/quote-monitoring-flow.png) + + +# Requests Profiling + +Requests Profiling is a page in Magento admin panel that helps you to track a communication between Vipps and Magento. +You can find the page under `System -> Vipps` + +On the page you can see the list of all requests for all orders that Magento sends to Vipps. +By clicking on a link `Show` in an `Action` column of grid you can find appropriate response from Vipps. + +Using built-in Magento grid filter you could easily find all requests per order that you are interested in. + + # Magento Magento is an open-source e-commerce platform written in PHP: https://magento.com diff --git a/composer.json b/composer.json index 07152200..c7e4ad6a 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,7 @@ "type": "magento2-module", "description": "Vipps Payment Method", "license": "proprietary", - "version": "1.2.8", + "version": "1.2.9", "require": { "magento/framework": "101.0.*", "magento/module-sales": "101.0.*", diff --git a/docs/express_vipps_settings.png b/docs/images/express_vipps_settings.png similarity index 100% rename from docs/express_vipps_settings.png rename to docs/images/express_vipps_settings.png diff --git a/docs/images/quote-monitoring-flow.png b/docs/images/quote-monitoring-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..98e61afaf7b27ada87bd0856ec9dd0f06b8a0cd9 GIT binary patch literal 94316 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

Zfx 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 I+3t4q-!p;>p#T5? literal 0 HcmV?d00001 diff --git a/docs/vipps_basic.png b/docs/images/vipps_basic.png similarity index 100% rename from docs/vipps_basic.png rename to docs/images/vipps_basic.png diff --git a/docs/vipps_method.png b/docs/images/vipps_method.png similarity index 100% rename from docs/vipps_method.png rename to docs/images/vipps_method.png diff --git a/etc/adminhtml/di.xml b/etc/adminhtml/di.xml index 3df9a8fd..6b5c9489 100644 --- a/etc/adminhtml/di.xml +++ b/etc/adminhtml/di.xml @@ -1,7 +1,7 @@ - + + - + + diff --git a/etc/adminhtml/system.xml b/etc/adminhtml/system.xml index 42635134..5b4d5929 100644 --- a/etc/adminhtml/system.xml +++ b/etc/adminhtml/system.xml @@ -103,8 +103,10 @@ Magento\Config\Model\Config\Backend\Encrypted + + diff --git a/etc/adminhtml/system/checkout.xml b/etc/adminhtml/system/checkout.xml new file mode 100644 index 00000000..ab3d65f7 --- /dev/null +++ b/etc/adminhtml/system/checkout.xml @@ -0,0 +1,35 @@ + + + + + + + + 1 + Magento\Shipping\Model\Config\Source\Allmethods + payment/vipps/disallowed_shipping_methods + + + + + + + + + diff --git a/etc/adminhtml/system/partial_void.xml b/etc/adminhtml/system/partial_void.xml new file mode 100644 index 00000000..2cdf2b3a --- /dev/null +++ b/etc/adminhtml/system/partial_void.xml @@ -0,0 +1,68 @@ + + + + + + + + + Magento\Config\Model\Config\Source\Yesno + payment/vipps/partial_void_enabled + + + + + Magento\Config\Model\Config\Source\Yesno + payment/vipps/partial_void_send_mail + + 1 + + + + + + + 1 + 1 + + payment/vipps/partial_void_mail_message + This message will be send to customer with voided items by email + + + + + Magento\Config\Model\Config\Source\Email\Identity + payment/vipps/partial_void_sender_email + + 1 + 1 + + + + + Email template chosen based on theme fallback when "Default" option is selected. + Vipps\Payment\Model\Config\Source\Email\Template + payment/vipps/partial_void_email_template + + 1 + 1 + + + + diff --git a/etc/config.xml b/etc/config.xml index 8e560597..e8ef37d4 100644 --- a/etc/config.xml +++ b/etc/config.xml @@ -47,6 +47,9 @@ 3 10 60 + sales + payment_vipps_partial_void_email_template + diff --git a/etc/di.xml b/etc/di.xml index 260ff141..a3283534 100644 --- a/etc/di.xml +++ b/etc/di.xml @@ -97,6 +97,7 @@ VippsConfigValueHandler + Vipps\Payment\Gateway\Config\CanVoidHandler @@ -431,4 +432,8 @@ vipps + + + + diff --git a/etc/email_templates.xml b/etc/email_templates.xml new file mode 100644 index 00000000..b67421e0 --- /dev/null +++ b/etc/email_templates.xml @@ -0,0 +1,20 @@ + + + +