Git Product home page Git Product logo

magento2msp's Introduction

MultiSafepay plugin for Magento 2 (Deprecated)

⚠️ This plugin is marked as deprecated and will not receive any significant new features in the future. It has been replaced by our New Magento 2 plugin.

Latest Stable Version Total Downloads License

About MultiSafepay

MultiSafepay is a collecting payment service provider which means we take care of the agreements, technical details and payment collection required for each payment method. You can start selling online today and manage all your transactions from one place.

Supported Payment Methods

The supported Payment Methods & Giftcards for this plugin can be found over here: Payment Methods & Giftcards

Requirements

Installation

You can install our plugin through Composer:

composer require multisafepay/magento2msp
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy

For additional information or instructions please see our installation & configuration manual

Installation of payment link in order confirmation mail for backend orders

As of version 1.7.0 we have added a feature to include the payment link in the order confirmation mail for orders created in the backend. This feature is customizable and can be changed to your liking. This feature can be implemented by the following steps

  1. Go to Marketing -> Email Templates
  2. Add a template (import from "new order")
  3. Add this sample code the template
    {{depend order.getPayment().getAdditionalInformation('payment_link')}}
        <a href="{{var order.getPayment().getAdditionalInformation('payment_link')}}">Pay now with {{var order.getPayment().getAdditionalInformation('method_title')}}</a>
    {{/depend}}
  4. Go to Stores -> Configuration -> Sales -> Sales Emails
  5. Change the "New Order Confirmation Template" with your template

After these changes, the template should be tested to confirm it is working.

Note: This can also be implemented directly in the email template files.

Support

⚠️ This plugin is deprecated and we are not providing support for it anymore. Please, upgrade to our New Magento 2 plugin.

License

Open Software License (OSL 3.0)

Want to be part of the team?

Are you a developer interested in working at MultiSafepay? View our job openings and feel free to get in touch with us.

magento2msp's People

Contributors

echron avatar hexmage avatar jasper-multisafepay avatar jonkruud avatar lewisvoncken avatar lexbeelen avatar mikededecker1 avatar peterjaap avatar ronald-multisafepay avatar solaiman-multisafepay avatar stanislau-multisafepay avatar thomas-multisafepay avatar tim-multisafepay avatar tommeijnaerts avatar vinodsowdagar avatar vmalyk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

magento2msp's Issues

Feature request: allow developers to add/manipulate specific data which is being send to MSP

Hi guys

We have a certain client which asks us to send a custom ID they use in their own system to MSP.
But I have a hard time implementing this without rewriting your code.

I was trying to change the description which gets send to MSP, by using a Plugin or even a Preference on the MultiSafepay\Connect\Model\Api\Objects\Orders::post method.
But unfortunately I can't get this working, since that Orders class is just instantiated using new instead of being injected using DI.

So one option to allow us developers to manipulate this data would be to inject that Orders class using DI which would allow us to manipulate how it works.
Or another - and maybe better way - would be if you dispatch a custom event just before that big array of data gets send to MSP, so we can manipulate this data using an Observer

Is this something you would be interested in?

I can create a PR for this if this should interest you?

Thanks!

[PLGMAGTWOS-496][PLGMAGTWOS-497] If log file doesn't exist a critical exception is being throw

When trying to go through the checkout a critical exception is being thrown when something needs to be logged in the 'multisafepay.log' file if it doesn't exist yet.

Prereq:

  • Magento CE 2.1/6
  • MSP 1.4.3
  • PHP 7.0

Problem:

In MultiSafepay\Connect\Model\Connect.php you have

public function __construct(
\Magento\Framework\Model\Context $context, \Magento\Framework\Registry $registry, \Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory, \Magento\Framework\Api\AttributeValueFactory $customAttributeFactory, \Magento\Payment\Helper\Data $paymentData, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Payment\Model\Method\Logger $logger, \Magento\Framework\Module\ModuleListInterface $moduleList, \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Checkout\Model\Session $checkoutSession, \Magento\Framework\UrlInterface $urlBuilder, \Magento\Framework\App\RequestInterface $requestHttp, StockRegistryInterface $stockRegistry, \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null, array $data = []
)
{
    parent::__construct(
            $context, $registry, $extensionFactory, $customAttributeFactory, $paymentData, $scopeConfig, $logger
    );
    $this->_checkoutSession = $checkoutSession;
    $this->_storeManager = $storeManager;
    $this->_urlBuilder = $urlBuilder;
    $this->_client = new MspClient();
    $this->_requestHttp = $requestHttp;
    $this->_mspHelper = new \MultiSafepay\Connect\Helper\Data;
    $this->_minAmount = $this->getConfigData('min_order_total');
    $this->_maxAmount = $this->getConfigData('max_order_total');
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $this->_invoiceSender = $objectManager->get('\Magento\Sales\Model\Order\Email\Sender\InvoiceSender');
    $this->stockRegistry = $stockRegistry;
    $writer = new \Zend\Log\Writer\Stream(BP . '/var/log/multisafepay.log');
    $this->logger = new \Zend\Log\Logger();
    $this->logger->addWriter($writer);
    $this->_client->logger = $this->logger;
    $this->_client->debug = ($this->getMainConfigData('msp_debug')) ? true : false;
}

A zend writer is being created; If the file doesn't exist when this code triggers, a critical exception is being thrown.

Solution:

Better would be to use a decent logging system according to Magento2 standards:

MultiSafepay\Connect\etc\di.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="MultiSafepay\Connect\Helper\Logger\Handler">
        <arguments>
            <argument name="filesystem" xsi:type="object">Magento\Framework\Filesystem\Driver\File</argument>
        </arguments>
    </type>
    <type name="MultiSafepay\Connect\Helper\Logger">
        <arguments>
            <argument name="name" xsi:type="string">multisafepay</argument>
            <argument name="handlers"  xsi:type="array">
                <item name="system" xsi:type="object">MultiSafepay\Connect\Helper\Logger\Handler</item>
                <item name="debug" xsi:type="object">MultiSafepay\Connect\Helper\Logger\Handler</item>
            </argument>
        </arguments>
    </type>
</config>

MultiSafepay\Connect\Helper\Logger.php

<?php

namespace MultiSafepay\Connect\Helper;

class Logger extends \Monolog\Logger
{
    //
}

MultiSafepay\Connect\Helper\Logger\Handler.php

<?php

namespace MultiSafepay\Connect\Helper\Logger;

class Handler extends \Magento\Framework\Logger\Handler\Base
{
    protected $fileName = '/var/log/multisafepay.log';
    protected $loggerType = \Monolog\Logger::INFO;
}

MultiSafepay\Connect\Model\Connect.php

public function __construct(
    \Magento\Framework\Model\Context $context,
    \Magento\Framework\Registry $registry,
    \Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory,
    \Magento\Framework\Api\AttributeValueFactory $customAttributeFactory,
    \Magento\Payment\Helper\Data $paymentData,
    \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
    \Magento\Payment\Model\Method\Logger $logger,
    \Magento\Framework\Module\ModuleListInterface $moduleList,
    \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
    \Magento\Store\Model\StoreManagerInterface $storeManager,
    \Magento\Checkout\Model\Session $checkoutSession,
    \Magento\Framework\UrlInterface $urlBuilder,
    \Magento\Framework\App\RequestInterface $requestHttp,
    StockRegistryInterface $stockRegistry,
    \MultiSafepay\Connect\Helper\Logger $mspLogger,
    \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
    \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
    array $data = []
)
{
    parent::__construct(
        $context,
        $registry,
        $extensionFactory,
        $customAttributeFactory,
        $paymentData,
        $scopeConfig,
        $logger
    );
    $this->_checkoutSession = $checkoutSession;
    $this->_storeManager = $storeManager;
    $this->_urlBuilder = $urlBuilder;
    $this->_client = new MspClient();
    $this->_requestHttp = $requestHttp;
    $this->_mspHelper = new \MultiSafepay\Connect\Helper\Data;
    $this->_minAmount = $this->getConfigData('min_order_total');
    $this->_maxAmount = $this->getConfigData('max_order_total');
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $this->_invoiceSender = $objectManager->get('\Magento\Sales\Model\Order\Email\Sender\InvoiceSender');
    $this->stockRegistry = $stockRegistry;

    $this->_client->logger = $mspLogger;
    $this->_client->debug = ($this->getMainConfigData('msp_debug')) ? true : false;
}

Table 'sales_order_grid' not updated

You have an update script that needs to add column 'multisafepay_status' to table 'sales_order_grid' but this isn't working in my enviroment, Magento 2.1.14 and I am using table prefix.

I also see that you are using file UpgradeData.php but I would expect upgradeSchema.php for adding the column and upgradeData for adding the new attribute.

Shopping cart is restored after payment with another method than MSP

When using other payment method, for example 'Cash on delivery', after a successful order the shopping cart is not empty.
When you add a new product to your shopping cart, it is not added, but the old shopping cart is loaded. Or when you go directly to the shopping cart page, the old products are loaded.

The reason for this, is because in this file:
vendor/multisafepay/magento2msp/etc/frontend/events.xml
There is this:
<event name="controller_action_predispatch_checkout_cart_index"> <observer name="msp_action_predispatch_checkout_cart_index" instance="MultiSafepay\Connect\Model\Observers\RestoreQuote" /> </event>

If you then look into the observer: vendor/multisafepay/magento2msp/Model/Observers/RestoreQuote.php

public function execute(\Magento\Framework\Event\Observer $observer) { $session = $this->_objectManager->get('Magento\Checkout\Model\Session'); $session->restoreQuote(); return $this; }

So basically, when I return to my shopping cart, there is done a restore of the quote.

Probably this is implemented for MSP, when canceling during payment.

So what should be fixed:
There should be validation if the previous order actually had a payment method related to a payment method of MSP.

[PLGMAGTWOS-334] Custom total ignored

Hi guys,

We have an issue for one of our customers that have a custom total added to some of the quotes. This custom total is implemented fully according to magento guidelines but isn't picked up by your module. This isn't a problem for most payment methods since they rely only on the final order total (which is correct) but banktransfer sends an email to the customer. In this email there is an order overview which doesn't show the missing custom total which causes customers to pay the wrong amount. In turn this causes MSP to not automatically process the payment/order.

We run on MSP version 1.5.1 and in Model/Connect.php I see you only handle very limited support to send additional fees. All the items are fetched, shipping costs are added. There's support for the official multisafepay payment fee extension, fooman surcharge support but that's it. I wonder why not all the order totals are fetched and copied to MSP (in a magento way so custom totals that are implemented using observers are fetched aswell).

[XXL-489-12859] JS error with Ideal

Hi,

I updateded to version 1.4.7 and now i cant pay with Ideal anymore.
Other methodes work.
I get this error:
default.js:101 Uncaught TypeError: Cannot read property 'placeOrder' of null

Order email not being send with certain configurations

Hi guys

Using:

  • Magento CE 2.1.11
  • MultiSafepay 1.4.8
  • Test Account

About the configuration 'When send the order confirmation e-mail'.

When picking the option 'When placing the order', emails are getting send out, that one works ok (but sends it too soon obviously)
When picking the option 'After transaction' or 'After paid transaction', no email is getting send out

I'm pretty sure this used to work, but now it no longer works.
We have reports that the same bug exists in version 1.3.0 of MultiSafepay, but I haven't verified that yet.

Thanks!

Compile error in version 1.5.1

Errors during compilation: MultiSafepay\Connect\Model\Connect
Incorrect dependency in class MultiSafepay\Connect\Model\Connect in /xxx/xxx/xxx/xxx/public_html/app/code/MultiSafepay/Connect/Model/Connect.php
\Magento\Framework\App\State already exists in context object
Total Errors Count: 1

[PLGMAGTWOS-335] Long load time cart page because of MSP

Last Tuesday 19-6-2018 I noticed that during evening / night the load time of adding an product to my shopping basket took 90 seconds or even more to load.

After disabling the MSP extension, the load time was 2 seconds.

After some short checking I found that the MSP extension is holding up the load of the cart page, because it is communicating to the MSP servers and they do not react fast enough.

Why is this actually at all needed?
The cart page is not a checkout page, so why does MSP need to be contacted?

And can I disable this un-wanted behaviour?
And / or can this call being done async so that my clients do not need to wait longer because of slow reaction from MSP servers?

404's on payment images

commander-1

On certain locales (fr_BE, de_AT, etc.) the payment images don't work. This is because the locale is used in the image url. The problem occurs on version 1.4.3.

Allow shipments for non-MSP orders

Put the following code back in MultiSafepay\Connect\Model\Connect in function shipOrder around line 455

        $class = get_class($payment);
        if ($class != 'MultiSafepay\Connect\Model\Connect') {
            return true;
        }

Otherwise for banktransfer no shipments can be created

Expired payment: order notification email sent

When a payment is expired the customer receives a notification email. We guess the bug is in source/vendor/multisafepay/magento2msp/Model/Connect.php line 719:

` if (($order_email == "after_transaction" && $status != "initialized" && $status != "expired" && !$order->getEmailSent()) ||
($payment->getMethodInstance()->_code == 'mspbanktransfer' && !$order->getEmailSent()) ||
($status == "expired" && isset($this->_client->orders->data->transaction_id))
) {

    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $objectManager->create('Magento\Sales\Model\OrderNotifier')->notify($order);

}`

When the payment is expired and the transaction has an id, the customer is notified, this is not the expected behaviour.

Compilation error on Fastcheckout Button

When compiling with setup:di:compile i am getting the following error:

Incorrect dependency in class MultiSafepay\Connect\Block\Fastcheckout\Button in /app/code/MultiSafepay/Connect/Block/Fastcheckout/Button.php
\Magento\Framework\View\Asset\Repository already exists in context object
\Magento\Framework\App\Config\ScopeConfigInterface already exists in context object

Magento version: 2.1.6
MultiSafepay plugin version: 1.4.2

Fix that is working for me
Removing the following lines:
\Magento\Framework\View\Asset\Repository $assetRepo,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,

Changing these lines:
$this->_assetRepo = $assetRepo;
$this->_scopeConfig = $scopeConfig;

To:
$this->_assetRepo = $context->getAssetRepository();
$this->_scopeConfig = $context->getScopeConfig();

Column payment status in order screen

I would like to have an extra column which shows the status of the payment. No I have to open the order to see if the payment went well. We get a lot of declined orders so it would be nice to have a quick overview of which orders can be ignored.

No invoice mail is sent to the customer and BCC after updating to M2.2.4

After updating to M2.2.4, the invoice mail is not sent to the customer and to the filled in BCC email address. This is only the case when the payment is successfully paid trough MSP payments and the invoice is created automatically. When creating an invoice manually, the invoice is sent to the customer and to the BCC email address.

We are using MSP 1.5.0 and M2.2.4.

No CHANGELOG.md

It would be nice for the module to have a changelog, it becomes tiring to read through commit messages after a while.

[ZAG-524-92489] Incompatibility Aheadworks_Ajaxcartpro

There is an incompatibility between msp and aheadworks_ajaxcartpro 1.2.5 (latest version) and msp latest version.

Aheadworks has the following plugin:

<type name="Magento\Framework\App\Action\Action">
    <plugin name="ajaxcartpro-action-plugin" type="Aheadworks\Ajaxcartpro\Controller\Plugin\Action" sortOrder="1" disabled="false" />
</type>

This apparently breaks your multisafepay/magento2msp/Controller/Connect/Success.php with the following error.

a:4:{i:0;s:178:"Notice: Undefined index: MultiSafepay\Connect\Controller\Connect\Success in /data/web/magento2-staging/vendor/magento/framework/Interception/PluginList/PluginList.php on line 232";i:1;s:6559:"#0 /data/web/magento2-staging/vendor/magento/framework/Interception/PluginList/PluginList.php(232): Magento\Framework\App\ErrorHandler->handler(8, 'Undefined index...', '/data/web/magen...', 232, Array)
#1 /data/web/magento2-staging/vendor/magento/framework/Interception/Chain/Chain.php(74): Magento\Framework\Interception\PluginList\PluginList->getPlugin('MultiSafepay\\Co...', 'ajaxcartpro-act...')
#2 /data/web/magento2-staging/vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('MultiSafepay\\Co...', 'dispatch', Object(MultiSafepay\Connect\Controller\Connect\Success\Interceptor), Array, 'weee-app-action...')
#3 /data/web/magento2-staging/vendor/magento/module-weee/Model/App/Action/ContextPlugin.php(112): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#4 /data/web/magento2-staging/vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\Weee\Model\App\Action\ContextPlugin->aroundDispatch(Object(MultiSafepay\Connect\Controller\Connect\Success\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#5 /data/web/magento2-staging/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('MultiSafepay\\Co...', 'dispatch', Object(MultiSafepay\Connect\Controller\Connect\Success\Interceptor), Array, 'tax-app-action-...')
#6 /data/web/magento2-staging/vendor/magento/module-tax/Model/App/Action/ContextPlugin.php(110): MultiSafepay\Connect\Controller\Connect\Success\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#7 /data/web/magento2-staging/vendor/magento/framework/Interception/Interceptor.php(142): Magento\Tax\Model\App\Action\ContextPlugin->aroundDispatch(Object(MultiSafepay\Connect\Controller\Connect\Success\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#8 /data/web/magento2-staging/var/generation/MultiSafepay/Connect/Controller/Connect/Success/Interceptor.php(26): MultiSafepay\Connect\Controller\Connect\Success\Interceptor->___callPlugins('dispatch', Array, Array)
#9 /data/web/magento2-staging/vendor/magento/framework/App/FrontController.php(55): MultiSafepay\Connect\Controller\Connect\Success\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#10 /data/web/magento2-staging/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\App\FrontController->dispatch(Object(Magento\Framework\App\Request\Http))
#11 /data/web/magento2-staging/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\App\FrontController\Interceptor->___callParent('dispatch', Array)
#12 /data/web/magento2-staging/vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'requestPreproce...')
#13 /data/web/magento2-staging/vendor/magento/module-store/App/FrontController/Plugin/RequestPreprocessor.php(94): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#14 /data/web/magento2-staging/vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\Store\App\FrontController\Plugin\RequestPreprocessor->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#15 /data/web/magento2-staging/vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'install')
#16 /data/web/magento2-staging/vendor/magento/framework/Module/Plugin/DbStatusValidator.php(69): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#17 /data/web/magento2-staging/vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\Framework\Module\Plugin\DbStatusValidator->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#18 /data/web/magento2-staging/vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'front-controlle...')
#19 /data/web/magento2-staging/vendor/magento/module-page-cache/Model/App/FrontController/VarnishPlugin.php(55): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#20 /data/web/magento2-staging/vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\PageCache\Model\App\FrontController\VarnishPlugin->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#21 /data/web/magento2-staging/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'front-controlle...')
#22 /data/web/magento2-staging/vendor/magento/module-page-cache/Model/App/FrontController/BuiltinPlugin.php(73): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#23 /data/web/magento2-staging/vendor/magento/framework/Interception/Interceptor.php(142): Magento\PageCache\Model\App\FrontController\BuiltinPlugin->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#24 /data/web/magento2-staging/var/generation/Magento/Framework/App/FrontController/Interceptor.php(26): Magento\Framework\App\FrontController\Interceptor->___callPlugins('dispatch', Array, Array)
#25 /data/web/magento2-staging/vendor/magento/framework/App/Http.php(135): Magento\Framework\App\FrontController\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#26 /data/web/magento2-staging/vendor/magento/framework/App/Bootstrap.php(258): Magento\Framework\App\Http->launch()
#27 /data/web/magento2-staging/pub/index.php(37): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http))
#28 {main}";s:3:"url";s:54:"/multisafepay/connect/success?transactionid=1000004607";s:11:"script_name";s:10:"/index.php";}

No notification for canceled/declined payments

Hi Ruud,

We've noticed that users don't get notifications after canceling or declining payments in the test iDeal payment gateway, is this a bug or has this not been implemented yet?

If not implemented, is there a possibility this can be implemented soon? It might result in abandoned carts because customers don't get proper notifications.

Thanks!
Roy van Os - Active Ants

Select ideal issuer twice

Hi,

When I want to checkout with iDeal I can select the issuer from te list on the checkout screen. When I proceed to payment, I have to select the issuer again.

Using MSP version 1.3.0 on magento 2.1.6

Best regards,
Marleen

Double invoice for order

We're running on msp 1.4.7 and some orders get 2 paid invoices that are identical.
In the logs we see the following calls

{"time":"2018-04-18T18:47:00+00:00", "remote_addr":"185.99.128.21", "remote_user":"-", "host":"www.xxx.nl", "request":"GET /multisafepay/connect/notification/?transactionid=000000962&timestamp=1524077219 HTTP/1.1", "status":"200", "body_bytes_sent":"12", "referer":"-", "user_agent":"Mozilla/5.0 (X11; Debian; Linux x86_64; rv:33.0) Gecko/20100101", "request_time":"0.548", "handler":"phpfpm", "country":"NL", "port":"443", "ssl_cipher":"xxx", "ssl_protocol":"TLSv1.2"}

{"time":"2018-04-18T18:47:35+00:00", "remote_addr":"185.99.128.21", "remote_user":"-", "host":"www.xxx.nl", "request":"GET /multisafepay/connect/notification/?transactionid=000000962&timestamp=1524077253 HTTP/1.1", "status":"200", "body_bytes_sent":"12", "referer":"-", "user_agent":"Mozilla/5.0 (X11; Debian; Linux x86_64; rv:33.0) Gecko/20100101", "request_time":"1.145", "handler":"phpfpm", "country":"NL", "port":"443", "ssl_cipher":"xxx", "ssl_protocol":"TLSv1.2"}

Both the invoices created_at time is 18:47:34 any suggestions on how to fix this issue?

Fixed Product Tax not in payment

When i checkout a product with an Fixed Product Tax then the extra tax is not visible and calculated on the MultiSafepay payment page.

My products are inputted with price incl. in Magento (It's a B2C shop and price roundings were an issue if we input prices excl vat).

When i check the multisafepay.log file is see that this product is send to the API with a "unit_price" that's excluding taxes, there is a property to say that it has to be 21% VAT but no property to add the FPT tax.

I also don't see any indication in the code to add FPT taxes. I see a lot of "fixes" and price calculations.
Maybe something is wrong because i input the prices incl VAT...

Customer-data.js error on success page

Hi,

I installed this extension om magento 2.1.7 and when i activate the extension and try to complete a order. the success page (http://{HERE THE URL}.nl/nl/checkout/onepage/success?utm_nooverride=1/) give a JS error.

customer-data.js on line 85, Uncaught TypeError: Cannot read property 'sectionLoadUrl' of undefined.

When i complete order with the extension disabled and proces with cash on delivery every thing works just fine!

Is there a solution?

[PLGMAGTWOS-231] Could not refund order with shipping

If I try to refund an order with shipping costs online I get the following error: "Error: Refund not processed online as it did not match the complete shipping cost.". Even though the shipping amount is fully credited. After some code checking I found out that in Model/Connector you are checking the shipping_amount filled in the credit memo form against the shipping_amount in the order.

In our case the data in the creditmemo was filled (by default) including tax, while the shipping_amount was excluding tax. After I changed the order field from shipping_amount to shipping_incl_tax the problem was solved for us. However this might not work with other configurations.

Wrong installation package update 1.4.6

The update package for update 1.4.6 only contains folder "Magento2Msp" with all files. I would expect to see the same folders as in update 1.4.5 and before. "app\code\MultiSafepay\Connect*.*"

Undefined property: stdClass::$payment_details

We've getting another issue (Magento 2.1.9). Here is a log:

Undefined property: stdClass::$payment_details in /app/code/MultiSafepay/Connect/Model/Connect.php on line 870

Trace:
#0 /app/code/MultiSafepay/Connect/Model/Connect.php(870): Magento\Framework\App\ErrorHandler->handler(8, 'Undefined prope...', '/var/www/...', 870, Array)
#1 /app/code/MultiSafepay/Connect/Controller/Connect/Notification.php(86): MultiSafepay\Connect\Model\Connect->notification(Object(Magento\Sales\Model\Order))
#2 /vendor/magento/framework/App/Action/Action.php(102): MultiSafepay\Connect\Controller\Connect\Notification->execute()
#3 /vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\App\Action\Action->dispatch(Object(Magento\Framework\App\Request\Http))
#4 /vendor/magento/framework/Interception/Chain/Chain.php(70): MultiSafepay\Connect\Controller\Connect\Notification\Interceptor->___callParent('dispatch', Array)
#5 /vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('MultiSafepay\\Co...', 'dispatch', Object(MultiSafepay\Connect\Controller\Connect\Notification\Interceptor), Array, 'contextPlugin')
#6 /vendor/magento/module-store/App/Action/Plugin/Context.php(106): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#7 /vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\Store\App\Action\Plugin\Context->aroundDispatch(Object(MultiSafepay\Connect\Controller\Connect\Notification\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#8 /vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('MultiSafepay\\Co...', 'dispatch', Object(MultiSafepay\Connect\Controller\Connect\Notification\Interceptor), Array, 'customer-app-ac...')
#9 /vendor/magento/module-customer/Model/App/Action/ContextPlugin.php(61): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#10 /vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\Customer\Model\App\Action\ContextPlugin->aroundDispatch(Object(MultiSafepay\Connect\Controller\Connect\Notification\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#11 /vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('MultiSafepay\\Co...', 'dispatch', Object(MultiSafepay\Connect\Controller\Connect\Notification\Interceptor), Array, 'storeCheck')
#12 /vendor/magento/module-store/App/Action/Plugin/StoreCheck.php(44): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#13 /vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\Store\App\Action\Plugin\StoreCheck->aroundDispatch(Object(MultiSafepay\Connect\Controller\Connect\Notification\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#14 /vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('MultiSafepay\\Co...', 'dispatch', Object(MultiSafepay\Connect\Controller\Connect\Notification\Interceptor), Array, 'weee-app-action...')
#15 /vendor/magento/module-weee/Model/App/Action/ContextPlugin.php(112): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#16 /vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\Weee\Model\App\Action\ContextPlugin->aroundDispatch(Object(MultiSafepay\Connect\Controller\Connect\Notification\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#17 /vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('MultiSafepay\\Co...', 'dispatch', Object(MultiSafepay\Connect\Controller\Connect\Notification\Interceptor), Array, 'tax-app-action-...')
#18 /vendor/magento/module-tax/Model/App/Action/ContextPlugin.php(91): MultiSafepay\Connect\Controller\Connect\Notification\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#19 /vendor/magento/framework/Interception/Interceptor.php(142): Magento\Tax\Model\App\Action\ContextPlugin->aroundDispatch(Object(MultiSafepay\Connect\Controller\Connect\Notification\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#20 /var/generation/MultiSafepay/Connect/Controller/Connect/Notification/Interceptor.php(26): MultiSafepay\Connect\Controller\Connect\Notification\Interceptor->___callPlugins('dispatch', Array, Array)
#21 /vendor/magento/framework/App/FrontController.php(55): MultiSafepay\Connect\Controller\Connect\Notification\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#22 /vendor/magento/framework/Interception/Interceptor.php(74): Magento\Framework\App\FrontController->dispatch(Object(Magento\Framework\App\Request\Http))
#23 /vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\App\FrontController\Interceptor->___callParent('dispatch', Array)
#24 /vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'requestPreproce...')
#25 /vendor/magento/module-store/App/FrontController/Plugin/RequestPreprocessor.php(94): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#26 /vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\Store\App\FrontController\Plugin\RequestPreprocessor->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#27 /vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'install')
#28 /vendor/magento/framework/Module/Plugin/DbStatusValidator.php(69): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#29 /vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\Framework\Module\Plugin\DbStatusValidator->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#30 /vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'front-controlle...')
#31 /vendor/magento/module-page-cache/Model/App/FrontController/VarnishPlugin.php(55): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#32 /vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\PageCache\Model\App\FrontController\VarnishPlugin->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#33 /vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'front-controlle...')
#34 /vendor/magento/module-page-cache/Model/App/FrontController/BuiltinPlugin.php(68): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#35 /vendor/magento/framework/Interception/Chain/Chain.php(67): Magento\PageCache\Model\App\FrontController\BuiltinPlugin->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#36 /vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'Amasty_Invisibl...')
#37 /app/code/Amasty/InvisibleCaptcha/Plugin/Predispatch.php(94): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#38 /vendor/magento/framework/Interception/Interceptor.php(142): Amasty\InvisibleCaptcha\Plugin\Predispatch->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#39 /var/generation/Magento/Framework/App/FrontController/Interceptor.php(26): Magento\Framework\App\FrontController\Interceptor->___callPlugins('dispatch', Array, Array)
#40 /vendor/magento/framework/App/Http.php(135): Magento\Framework\App\FrontController\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#41 /vendor/magento/framework/App/Bootstrap.php(258): Magento\Framework\App\Http->launch()
#42 /pub/index.php(37): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http))
#43 {main}

Could you please provide a solution?
Best regards.

Shopping cart is restored after payment with 'Banktransfer'

See basically for the description the issue:
#41

The only difference that it is solved for the payment methods which are not from MSP.
It is not solved for payment methods which have a gateway of MSP and do not get another status then 'New' when the order is finished (for example, Banktransfer).

Usage of protected attribute instead of getter method

[PLGMAGTWOS-498] Uncaught typeError on multiple property when fastcheckout enabled

When you have enabled fastcheckout you will get several uncaught typeErrors when adding a product to the cart.

  • Uncaught TypeError: Cannot read property 'quoteData' of undefined
  • Uncaught TypeError: Cannot read property 'defaultSuccessPageUrl' of undefined
  • Uncaught TypeError: Cannot read property 'storeCode' of undefined
  • Uncaught TypeError: Cannot read property 'checkoutAgreements' of undefined
  • Uncaught TypeError: Cannot convert undefined or null to object

Tested with chrome in incognito mode.

Steps to reproduce:

  • Enable fastcheckout in Stores->Configuration->Multisafepay (1.4.6) ->Fastcheckout
  • Go to product detail page
  • Add product to cart
  • You will now see the script errors.

Canceling an order using the test gateway generates an exception

Good morning Ruud!

We've found an issue/exception when canceling an order using the MSP test gateway.

The MSP module tries to clear the caches after canceling an order, the exception is thrown in the MultiSafepay\Connect\Controller\Connect\Connect class at line 102. We think it throws an exception because the unlockProcess tries to use the $this->lockFilePath which is null because it hasn't been set using the lockProcess function. We temporarily fixed this by adding $this->_mspHelper->lockProcess('multisafepay-'.$params['transactionid']); after line 69 in MultiSafepay\Connect\Controller\Connect\Connect.

I hope this information is enough to fix this issue!

Roy van Os - Active Ants

Cart and Checkout page nginx eror!

Hi,

Yesterday we got a weird problem where the shopping cart and checkout page are not able to load.
I looked into the logs and saw this: [2017-11-23 22:32:15] main.CRITICAL: Error Unable to communicatie with the MultiSafepay payment server (28): Connection timed out after 120001 milliseconds. [] []

The test environment was also offline for a couple of hours.
But the problem is that the shop is unable to load (got a 502 Bad Gateway) the shopping cart of checkout page when Mutlisafepay server is down...

Cart empty after canceling payment

Hi,

When I cancel the payment it clears the shopping cart. Your readme says it will not empty (or cancel) the order. I'm using MSP 1.3.0 and magento 2.1.6.

Hope you can fix this issue

Best regards,

Fatal error RestoreQuote

After the last update to 1.4.8 I get the following error. Disabling the Keep cart alive feature doesn't help.

Fatal error: Uncaught Error: Call to a member function getMethodInstance() on null in vendor/multisafepay/magento2msp/Model/Observers/RestoreQuote.php on line 6

Double invoice + orders on "pending payment" instead of "processing"

We are running on M2.2.6 with the MSP version 1.6.0.

All orders get a double invoice. When this happens, the order status of these orders keep staying on "pending payment" instead of "processing". We can see that the orders are already paid, so the order status should change.

Can you investigate this issue?

Double invoice + orders on processing instead of complete

We are running on M2.2.4 with the MSP version 1.5.0.

Sometimes orders get a double invoice. When this happens, the order status of these orders keep staying on "processing" instead of "complete".

Can you investigate this issue?

[Critical] When cancelling order on payment provider page, the entire var folder is being cleared

If you cancel your order on the msp payment page, the entire var folder is being cleared (!?) upon redirect and everything in it will be rebuild while returning to the checkout/cart

This is not only a ridiculous bug (how and why would you even do this!!), but it breaks about everything on the webshop upon arrival if you were logged in (because the sessions are being stored inside the var folder...)

Prereq

  • Magento CE 2.1/6
  • MSP 1.4.3
  • PHP 7.0

Fatal error when create a shipping

We have detected an issue during shipping creation (Magento 2.1.9), when order has no sales transactions attached to it then we get an error:

<b>Fatal error</b>:  Uncaught Error: Call to a member function getAdditionalInformation() on boolean in app/code/MultiSafepay/Connect/Model/Connect.php:463
Stack trace:
#0 app/code/MultiSafepay/Connect/Model/Observers/Shipment.php(66): MultiSafepay\Connect\Model\Connect-&gt;shipOrder(Object(Magento\Sales\Model\Order))
#1 vendor/magento/framework/Event/Invoker/InvokerDefault.php(73): MultiSafepay\Connect\Model\Observers\Shipment-&gt;execute(Object(Magento\Framework\Event\Observer))
#2 vendor/magento/framework/Event/Invoker/InvokerDefault.php(61): Magento\Framework\Event\Invoker\InvokerDefault-&gt;_callObserverMethod(Object(MultiSafepay\Connect\Model\Observers\Shipment), Object(Magento\Framework\Event\Observer))
#3 vendor/magento/framework/Event/Manager.php(66): Magento\Framework\Event\Invoker\InvokerDefault-&gt;dispatch(Array, Object(Magento\Framework\Event\Observer))
#4  in <b>app/code/MultiSafepay/Connect/Model/Connect.php</b> on line <b>463</b><br>

We've made a temporary quick fix in app/code/MultiSafepay/Connect/Model/Connect.php line 463
code
$transaction_details = $transaction->getAdditionalInformation(\Magento\Sales\Model\Order\Payment\Transaction::RAW_DETAILS);
was replaces with
$transaction_details = $transaction ? $transaction->getAdditionalInformation(\Magento\Sales\Model\Order\Payment\Transaction::RAW_DETAILS) : [];

but maybe you have a better solution.
Could you please fix this issue (or confirm that our fix is good) and include a fix to the next release?

Best regards.

MultiSafepay PHP + Release version

Hi,

I see that there is a general Multisafepay PHP library (https://github.com/MultiSafepay/PHP). Wouldn't it be better to require that one in the Magento module to keep code up to date as possible?

And it would be good to create a tag on the master branch for version 1.1.0 so developers can do
composer require multisafepay/magento2msp and get the latest stable version instead of
composer require multisafepay/magento2msp:dev-master which will give the latest commit on the master branch.

Greetings,

Stijn

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.