paynl / magento2-plugin Goto Github PK
View Code? Open in Web Editor NEWThe Pay. plugin for Magento 2
Home Page: https://www.pay.nl
The Pay. plugin for Magento 2
Home Page: https://www.pay.nl
Extensions like
https://github.com/elgentos/magento2-serversideanalytics/blob/c02a4df4300496d83e501029fb55aa1e40f048f2/etc/events.xml#L6
depend on the sales_order_payment_pay
to know when an order has been successfully paid.
Pay currently sets the status to paid without firing this event, for better compatibility with other modules this event should be fired at the right time when an order has been successfully paid
In Paynl 2.8.0 I detect 2 problems, under Magento 2.4.4, and paylink emails.
1/ {{if show_order_in_mail}} is breaking the template, and rendering content between {{}} as plain text, looks not receiving properly the variable. Maybe 3rd party module affects.
2/ {{layout handle="sales_email_order_items" order=$order area="frontend"}} is not rendering. It uses old way with no scalar values.
If I use {{layout handle="sales_email_order_items" order_id=$order_id area="frontend"}} it breaks completely the template with "The entity that was requested doesn't exist. Verify the entity and try again.", because the module sends Order Increment ID instead the Order entity_id, and founds nothing. Maybe you can pass the variables "order_id" and "order_increment_id" in future versions.
Note: ACSD-47578 security patch was installed
It would be more logical if the invoices for payment methods like Billink/Afterpay/Klarna would be send after shipment of the order in Magento.
Happens during the redirect to pay.nl
Versions
Possible cause
Additional validators are triggered during/despite afterPlaceOrder
/js/view/payment/method-renderer/default.js:168
As a result I cannot see information about ordered items in invoice.
Weird things is, message "PAY. canceled the order" caled only in case, when order become canceled (you can see on attachment bellow). But on attachments above you can see this message with status "Pending Payment"
(code from Paynl\Payment\Controller\Checkout\Exchange)
I experience a problem with stock control and pay.nl Magento Module 2. After placing an order, the inventory is reduced. However, when I cancel the payment when placing an order, the qty is increased by 2.
For example, for a product with a qty of one, there is only 1 qty reduced when placing an order, but then (during cancel) qty +2.
Hi,
after installing the pay.nl plugin everrything looked ok.
But when i wanted to go to /checkout i got a blank page.
i dissabled the module and there wasn't any problem anymore.
Is there a known issue that can be solved quickly? is there a possibility that the extension isn't compatible with the magento one page checkout?
i already dissabled all magento payment and sending modules without any results.
our platform is magento 2.1.7 and uses php 7
you can check this problem on our testwebsite www.airsoftbeurs.be
with kind regards
Heya,
We currently updated this module on production.
What happened next is that all payment methods were showing 'blank'. Example:
The Afterpay in the image is a different module.
After looking through some code it seems that this file and line:
this
and
This line assumes that the carrier_code is always present.
Which in our case it isn't because the payment methods are being displayed on the same page or rather step.
And before the customer has a chance to fill in the shipping method, the payment tries to load itself.
Currently we can't use this module in our checkout.
Not sure how the bugreporting works here, but can this be addressed?
Order comment (https://github.com/boldcommerce/magento2-ordercomments) is not stored in order when using pay.nl payment methods. Default M2 bank transfer works.
Hello,
Every then and now, I have to test the payment process from my local environment. In the current setup that's quite cumbersome: I have to setup something like ngrok or Cloudflare Tunnels and change the base URLs.
Would it be possible to make the exchange URL configurable? Leaving it off behaves like it does currently, but setting a custom URL will send the exchange details to that URL. This way it's easy to setup a ngrok tunnel, and point the exchange URL to there.
Hello Pay.nl developers,
We are currently in the process of Magento upgrade to 2.4.6 version with PHP 8.2 which is marked as supported by Magento. But your module version "3.4.1" (which is the latest) throws PHP deprecation error Usage of dynamic properties when going to the order detailed page in Magento admin for example.
File path (relative): Plugin/InstoreButton.php
Dynamic class property: $_request
When a payment has been placed and the transaction is verified the API key used should be fetched with the storeId saved with the order.
As magento does not load the store based on the url, the store should be fetched from the order itself.
https://github.com/paynl/magento2-plugin/blob/master/Controller/Checkout/Finish.php#L93
Is there a way to save the transaction payment url to the order?
For example where it now says "iDEAL" in the customer order, make it instead: iDEAL
This way a customer can always revisit the payment page to finish incase of an aborted session, or look up the status, or details for manual banktransfer.
Installing version 1.4.4 on Magento 2.2.6 with option 'paylink' enabled, gives the following error when trying to get payment options for order:
main.CRITICAL: Element with ID 'paynl_payment_paylink' already exists. [] []
main.CRITICAL: Block order.create.billing.method.form throws exception and cannot be rendered. [] []
Using version 1.4.3 doesn't give this error with the same configuration.
The payment method "giropay" has been activated in various services within my Pay.nl account. However, I can not activate the payment method "giropay" in my Magento installation (both live and staging). I tested it with cache on and off and with different configuration settings. Unfortunately, my magento installation always says that the payment method must be activated within pay.nl.
Is there a solution or workaround for this problem?
Configured plugin correctly, payment methods are synced correctly, Frontend Checkout with IWD One Page Checkout hangs on ajax spinner and SyntaxError: JSON Parse error: Unexpected identifier "undefined". This seems to be a frontend javascript error due to combination Paynl_Payment and IWD_Opc.
There is currently a hidden dependency on Magento_Multishipping
even though it's not defined in the composer.json
. This causes build issues for projects that do not include Multishipping or have it replaced.
When running the compile command (bin/magento setup:di:compile
) build will fail on multiple files:
Magento\Multishipping\Model\Checkout\Type\Multishipping\PlaceOrderInterface
which doesn't existMagento\Multishipping\Model\Checkout\Type\Multishipping\State
which doesn't existYou should be able to replicate it by adding a replace section to your project's root composer.json
:
...
"replace": {
"magento/module-multishipping": "*",
}
...
We've "fixed" it by:
rm -f vendor/paynl/magento2-plugin/Model/PlaceMultiShippingOrder.php
in the post install script of composerFinish.php
: use Magento\Framework\DataObject as State; # PATCHED | Nasty... | Removed dependency on Magento\Multishipping\Model\Checkout\Type\Multishipping\State
Would love to see this handled as an actual soft dependency. Thanks in advance!
This payment option doesn't seem to do anything, nor does it have a relation with any of the services in the backoffice of Pay.nl. It would be a nice feature though.
The paid order has a state of processing
The order has a generated invoice, but is still in the state pending_payment
When I upgrade from version 2.4.0 to 2.5.1 I receive an error on the admin payment methods page.
The exception:
1 exception(s):
Exception #0 (Exception): Warning: Invalid argument supplied for foreach() in /var/www/html/vendor/paynl/magento2-plugin/Model/Config/Source/PinTerminals.php on line 86
These lines of code appear to be the issue.
$terminals = \Paynl\Instore::getAllTerminals();
$terminals = $terminals->getList();
foreach ($terminals as $terminal) {
$terminal['visibleName'] = $terminal['name'];
array_push($terminalArr, $terminal);
}
$cache->save(json_encode($terminalArr), $cacheName);
When I dump $terminals = \Paynl\Instore::getAllTerminals();
I get.
object(Paynl\Result\Instore\Terminals)#3312 (1) { ["data":protected]=> array(2) { ["request"]=> array(3) { ["result"]=> string(1) "1" ["errorId"]=> string(0) "" ["errorMessage"]=> string(0) "" } ["terminals"]=> string(0) "" } }
When I dump $terminals = $terminals->getList();
I get an empty string.
I think that either the ->getList()
function should return an empty array in this case or there should be a check that $terminals
is iterable.
Extension version: 3.4.2
Magento: 2.4.5-p2
It seems that when placing an order with a shopping cart rule coupon with limited usage, after cancelling, the usage is not decremented.
Steps to reproduce
If the merchant manually cancels the order from the backend, the decrement is done successfully.
Possible fix
Use the function cancelOrder
in Magento\Sales\Model\Service\OrderService
. This calls for the decrement function.
Magento 2.1.2
Pay.nl module installed and activated:
api-token and service-id are filled in correct.
Then when an customer tries to pay an ordered product in the checkout nothing happens.
the debug of the page shows:
http:/domain.nl/rest/dutch/V1/cards/mine/payment-information 400 Bad request
Is this the same error as described here: magento/magento2#5902?
Please provide a solution a.s.p. thanks.
Hi, not sure if this is the way to do this request, but here it goes nonetheless:
Would it be possible to change the payment method inside the pay.nl screen itself once a payment request has been initiated?
The problem I'm trying to resolve here is as follows: an order is being placed with a chosen payment method, the order is placed, and the pay.nl screen pops up. A customer decides to choose a different payment method, which is 50% of our cases because these days CC payments for example require passwords, or tokens or whatever. Customers hardly ever choose the correct payment method from the start. Now this customer clicks the only available option to him which makes sense: cancel. Subsequently the order in Magento is cancelled.
I'm investigating whether it is possible for us to re-initiate the payment, which makes sense, but I have to say, it also would be a nice feature from your end. Now the only remedy for getting this order payed is paying with the second-chance email, which is missed by the customer in 90% of the cases, resulting in two orders from the same customer, and questions from their end why they receive an e-mail while they have already payed (in their opinion).
Curious about your feedback, thanks in advance!
Preconditions
Magento 2.3.5
Paynl module 1.7.0
The multisite structure is as follows:
Issue
When creating a new order, via the backend, in a multisite environment with the payment option Paylink the email with the Payment link contains the wrong Emailaddress.
The mailaddress given in the paymentlink mail is the Emailaddress set at the default config.
The system.xml requires the resource Paynl_Payment::config. It isn't in the ACL , so without full access - one can not configure Pay.
Extension version: 3.4.2
Tikkie integratie
Hebben jullie plannen om Tikkie Supersnel Betalen te integreren in jullie betaalopties?
Hi,
After update to 1.4.5 we get an 500 error on the Sales > Order page.
Error log:
2018/11/09 06:59:57 [error] 4933#4933: *1180173 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Cannot instantiate abstract class Paynl\Payment\Model\Paymentmethod\PaymentMethod in /data/web/magento2/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php:111 Stack trace: #0 /data/web/magento2/vendor/magento/framework/ObjectManager/Factory/Compiled.php(108): Magento\Framework\ObjectManager\Factory\AbstractFactory->createObject('Paynl\\Payment\\M...', Array) #1 /data/web/magento2/vendor/magento/framework/ObjectManager/ObjectManager.php(56): Magento\Framework\ObjectManager\Factory\Compiled->create('Paynl\\Payment\\M...', Array) #2 /data/web/magento2/vendor/magento/module-payment/Model/Method/Factory.php(40): Magento\Framework\ObjectManager\ObjectManager->create('Paynl\\Payment\\M...', Array) #3 /data/web/magento2/vendor/magento/module-payment/Helper/Data.php(114): Magento\Payment\Model\Method\Factory->create('Paynl\\Payment\\M...') #4 /data/web/magento2/vendor/magento/module-payment/Helper/Data.php(273): Magento\Payment\Helper\Data->getMethodIn" while reading response header from upstream, client: 86.86.99.95, server: , request: "GET /hairworldshop_admin/sales/invoice/index/key/c33afd29972ed69328994ffec2c920c101876e4d19c975ff1b113df0ce016ce0/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.hairworldshop.nl", referrer: "https://www.hairworldshop.nl/hairworldshop_admin/admin/cache/index/key/b34e1979a002a9569a66490e6bcb1b98c678f664c00c20530699fd06fd0043e5/" 2018/11/09 0
For now i will downgrade back to 1.4.3.
I had a condition with "'Validation error: Paid amount does not match order amount..." on line 296 in \Paynl\Payment\Controller\Checkout\Exchange class, but rather than receiving a good message including $transactionPaid array and grand total of an order I got
main.CRITICAL: Notice: Undefined property: Paynl\Payment\Controller\Checkout\Exchange\Interceptor::$logger in /data/web/deployer_production/releases/50/vendor/paynl/magento2-plugin/Controller/Checkout/Exchange.php on line 296 {"report_id":"3baeaf7cf255b3c59138bc4711a762ceb4c2f0bae933d3022d4cd51e23f94214","exception":"[object] (Exception(code: 0): Notice: Undefined property: Paynl\\Payment\\Controller\\Checkout\\Exchange\\Interceptor::$logger in /data/web/deployer_production/releases/50/vendor/paynl/magento2-plugin/Controller/Checkout/Exchange.php on line 296 at /data/web/deployer_production/releases/50/vendor/magento/framework/App/ErrorHandler.php:61)"} []
Please, fix that by replacing 'logger' with your new approach of static method usage payHelper::logDebug
or payHelper::logCritical
.
Pay.nl version: 2.7.0
Magento CE version: 2.4.2-p2
When you place an order in store 1 with order number 1000123 including payment and later place an order in store 2 which get assigned the same order number (1000123). You will be redirected to the Pay.nl payment method of the order of store 1 and when you click back you will see all customer data of the client/order of store 1 including the contents of the cart.
I've just noticed that customers can get a message on the page of the bank (also on pay.nl page where a bank can be selected) that the payment has already been made for this order. After this, the customer will be redirected to the success page.
I just tested this and it seems that this occurs only when merge js enabled. I've tested in production mode.
For shops built using Magento Commerce, we add custom address attributes to store the housenumber and housenumber addition. This information isn't sent to Pay.nl, hence Klarna can't be activated.
Could support be added for custom address attributes in such a way that the attribute that holds the housenumber and addition can be configured?
etc/config.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
etc/module.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
etc/adminhtml/system.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config/etc/system_file.xsd">
etc...
Currently the PAY module does not register any payment methods resulting in us being unable to select (for example iDeal) as the default payment method.
Most payment providers are able to "add" their payment methods as shown:
How come under Pay there's only the paylink method and none of the others?
There is a layout issue with the header in the checkout page when the paynl module is enabled. Please check attached screenshots. When the paynl module is disabled, the layout of the checkout page is normal. I've reset the theme to the default Luma, with original CSS stylesheets, to make sure it's not a theme error.
To reproduce:
# magento module:disable Paynl_Payment
=> Normal layout
# magento module:enable Paynl_Payment
=> Wrong header
Environment: PHP 7.0.31 Magento 2.2 CE
php bin/magento deploy:mode:set production
Enabling maintenance mode
Starting compilation
Something went wrong while compiling generated code. See the error log for details.
Disabling maintenance mode
Command returned non-zero exit code:
/usr/bin/php -f /var/www/html/bin/magento setup:di:compile
Errors : 1
Errors listed below must be fixed and resubmitted to Marketplace.
To prevent errors in the future please read our technical standards documentation.
File : /eqp-automation/temp/paynl/magento2-plugin/paynl-magento2-plugin-1.5.2/Controller/CsrfAwareActionInterface.php
Each interface must be in a file by itself
severity : 10
Line : 12
Column : 5
Source : PSR1.Classes.ClassDeclaration.MultipleClasses
Deprecation Notice: Class Paynl\Payment\Controller\CsrfAwareActionInterface located in ./vendor/paynl/magento2-plugin/Controller/CsrfInterface22.php does not comply with psr-4 autoloading standard. It will not autoload anymore in Composer v2.0. in phar:///usr/local/bin/composer/src/Composer/Autoload/ClassMapGenerator.php:201
I noticed this message when running composer dump-autoload --optimize
for one of our projects. Magento 2.4.2 is already compatible with composer 2.0, so it makes sense to fix autoloading in this module.
Fatal error: Class 'Paynl\Config' not found in app/code/Paynl/Payment/Model/Config.php on line 56
What does this setting do in the admin backoffice of a certain payment method?
Thinking about this, it really doesn't make sense to us.
If it is based upon the shipping address, that doesn't make sense, because I can be Dutch, shipping to Germany for instance.
If it is based upon the store code, that also doesn't make sense, because I can speak German natively, but live in the Netherlands.
Wouldn't it be better to be able to set payment methods as 'preferred' for a certain storeview. And then at the end of the list of payment methods in the frontend, place a button to 'show all payment methods'. Clicking that would expand the list to show ALL payment methods enabled in the backend.
Hi paynl people, i read in the Hyvä Checkout Slack that you are working on module to support the Hyvä Checkout for Magento for release in September, is this correct?
Would be helpfull to know so we can plan for our customers, we would like to migrate but cant plan because we don't know wen and if paynl wil have a compatible module available ;-)
So if you can share some insights that would be helpfull, also if you need testers feel free to reach out.
after install module in magento 2.2.6, pay.nl
admin got blank page,
When changing the scope in the Magento configuration, the system errors, being unable to adjust the configuration for that scope.
Preconditions:
paynl/magento2-plugin: 2.5.0
magento2/product-community-edition: 2.4.x
Steps to reproduce
Expected Result
Configuration for the scope is show
Actual Result
An error occurs:
main.CRITICAL: Error: Class 'Paynl\Payment\Model\Config\Source\ScopeInterface' not found in /app/vendor/paynl/magento2-plugin/Model/Config/Source/PinTerminals.php:133
Stack trace:
#0 /app/vendor/paynl/magento2-plugin/Model/Config/Source/PinTerminals.php(80): Paynl\Payment\Model\Config\Source\PinTerminals->getConfigValue('payment/paynl_p...')
#1 /app/vendor/paynl/magento2-plugin/Model/Config/Source/PinTerminals.php(58): Paynl\Payment\Model\Config\Source\PinTerminals->toArray()
#2 /app/vendor/magento/module-config/Model/Config/Structure/Element/Field.php(461): Paynl\Payment\Model\Config\Source\PinTerminals->toOptionArray(false)
#3 /app/vendor/magento/module-config/Model/Config/Structure/Element/Field.php(379): Magento\Config\Model\Config\Structure\Element\Field->_getOptionsFromSourceModel(Object(Paynl\Payment\Model\Config\Source\PinTerminals))
#4 /app/vendor/magento/module-config/Block/System/Config/Form.php(394): Magento\Config\Model\Config\Structure\Element\Field->getOptions()
#5 /app/vendor/magento/module-config/Block/System/Config/Form.php(316): Magento\Config\Block\System\Config\Form->_initElement(Object(Magento\Config\Model\Config\Structure\Element\Field\Interceptor), Object(Magento\Framework\Data\Form\Element\Fieldset), 'payment/paynl_p...', '', '')
Attached is a patch file that resolves the issue
paynl_pin_terminals.txt
In M1 plugin we can add charges to customer order per payment method, i.e. PayPal. This feature is lacking in M2 plugin.
We have an issue with users clicking the "Back" button of the browser in the payment screen. When a user is in the payment screen, the order is already created and set to "Pending payment". In this case the stock is already decreased. However, if a user uses the Back button in the browser, he gets back to the store and the cart is restored. But the stock is still decreased. This is an issue for products with only 1 on stock. After pressing Back, the stock is 0 for that product and the user gets the error "Product is out of stock". We see this happen multiple times per week.
Is it possible to decrease the stock after a succesful payment in stead of during the "pending payment" (or restore the stock status when a user clicks on the back button)?
It would be nice to have some endpoints (REST and GraphQL) to use in a PWA. Some competitors do have this already:
We need this for the @rapidez integration.
After installation:
composer require paynl/magento2-plugin
php bin/magento setup:upgrade
php bin/magento cache:clean
and entering component manager in backend, the ajax loader of component manager keeps spinning: a 500 error is served on http:///setup/index.php/componentGrid/components
Calling this page shows this error page:
An error occurred during execution; please try again later.
Additional information:
RuntimeException
File:
/var/www/html/magento2/setup/src/Magento/Setup/Model/PackagesData.php:88
Message:
Couldn't get available versions for package paynl/magento2-plugin
Stack trace:
#0 /var/www/html/magento2/setup/src/Magento/Setup/Controller/ComponentGrid.php(98): Magento\Setup\Model\PackagesData->syncPackagesData()
#1 /var/www/html/magento2/vendor/zendframework/zend-mvc/src/Controller/AbstractActionController.php(82): Magento\Setup\Controller\ComponentGrid->componentsAction()
#2 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent))
#3 /var/www/html/magento2/vendor/zendframework/zend-eventmanager/src/EventManager.php(444): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
#4 /var/www/html/magento2/vendor/zendframework/zend-eventmanager/src/EventManager.php(205): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#5 /var/www/html/magento2/vendor/zendframework/zend-mvc/src/Controller/AbstractController.php(118): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#6 /var/www/html/magento2/vendor/zendframework/zend-mvc/src/DispatchListener.php(93): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Http\PhpEnvironment\Request), Object(Zend\Http\PhpEnvironment\Response))
#7 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent))
#8 /var/www/html/magento2/vendor/zendframework/zend-eventmanager/src/EventManager.php(444): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
#9 /var/www/html/magento2/vendor/zendframework/zend-eventmanager/src/EventManager.php(205): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#10 /var/www/html/magento2/vendor/zendframework/zend-mvc/src/Application.php(314): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
#11 /var/www/html/magento2/setup/index.php(31): Zend\Mvc\Application->run()
#12 {main}
Hello Pay.nl developers,
We are planning to use Pay.nl for a new Magento 2 project where we intent to use the latest stable version from Magento (2.3.0). Can you specify if there is support for this version or that you are still testing compatibility with this latest version?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.