├── .github ├── linters │ └── phpcs.xml └── workflows │ └── phplint.yml ├── .gitignore ├── Block ├── Adminhtml │ ├── Order │ │ └── View │ │ │ ├── CardRefundForm.php │ │ │ └── View.php │ ├── Render │ │ ├── CacheButton.php │ │ ├── Checkbox.php │ │ ├── Credentials.php │ │ ├── FeatureRequest.php │ │ ├── Logs.php │ │ ├── Multiselect.php │ │ ├── Obscured.php │ │ ├── SettingsButton.php │ │ └── Version.php │ └── System │ │ └── Config │ │ └── Fieldset │ │ └── Expanded.php ├── Checkout │ └── FastCheckout.php ├── Css.php ├── Form │ ├── Instore.php │ └── Paylink.php └── Page │ ├── FastCheckoutFallback.php │ └── Finish.php ├── Controller ├── Adminhtml │ ├── Action │ │ ├── FeatureRequest.php │ │ └── VersionCheck.php │ └── Order │ │ ├── CardRefund.php │ │ ├── CardRefundForm.php │ │ ├── Instore.php │ │ └── Logs.php ├── Checkout │ ├── Exchange.php │ ├── FastCheckoutFallback.php │ ├── FastCheckoutProduct.php │ ├── FastCheckoutStart.php │ ├── Finish.php │ └── Redirect.php ├── CsrfAwareActionInterface.php ├── Order │ ├── Cancel.php │ ├── Confirm.php │ ├── Finish.php │ ├── FinishFC.php │ ├── Invoice.php │ ├── Pending.php │ └── Pickup.php └── PayAction.php ├── Helper └── PayHelper.php ├── Logging └── Logger.php ├── Model ├── CheckoutUrl.php ├── Config.php ├── Config │ └── Source │ │ ├── ActiveShippingMethods.php │ │ ├── AuthorisedPaidAmount.php │ │ ├── AutoCapture.php │ │ ├── Available │ │ ├── Afterpay.php │ │ ├── AfterpayInternational.php │ │ ├── Alipay.php │ │ ├── Alipayplus.php │ │ ├── Alma.php │ │ ├── Amazonpay.php │ │ ├── Amex.php │ │ ├── Applepay.php │ │ ├── Available.php │ │ ├── Bataviacadeaukaart.php │ │ ├── Beautycadeau.php │ │ ├── Biercheque.php │ │ ├── Biller.php │ │ ├── Billink.php │ │ ├── Bioscoopbon.php │ │ ├── Blik.php │ │ ├── Bloemencadeaukaart.php │ │ ├── Boekenbon.php │ │ ├── CapayableGespreid.php │ │ ├── Cartebleue.php │ │ ├── Cashly.php │ │ ├── Creditclick.php │ │ ├── Cult.php │ │ ├── Dankort.php │ │ ├── Decadeaukaart.php │ │ ├── Dinerbon.php │ │ ├── Eps.php │ │ ├── Fashioncheque.php │ │ ├── Fashiongiftcard.php │ │ ├── Festivalcadeaukaart.php │ │ ├── Flyingblueplus.php │ │ ├── Gezondheidsbon.php │ │ ├── Giropay.php │ │ ├── Givacard.php │ │ ├── Good4fun.php │ │ ├── Googlepay.php │ │ ├── Horsesandgifts.php │ │ ├── Huisdierencadeaukaart.php │ │ ├── Huisentuincadeau.php │ │ ├── Ideal.php │ │ ├── In3business.php │ │ ├── Incasso.php │ │ ├── Instore.php │ │ ├── Kidsorteen.php │ │ ├── Klarna.php │ │ ├── Klarnakp.php │ │ ├── Kunstencultuurkaart.php │ │ ├── Maestro.php │ │ ├── Mastercard.php │ │ ├── Mistercash.php │ │ ├── Mobilepay.php │ │ ├── Monizze.php │ │ ├── Mooigiftcard.php │ │ ├── Multibanco.php │ │ ├── Nationaletuinbon.php │ │ ├── Nexi.php │ │ ├── Onlinebankbetaling.php │ │ ├── Overboeking.php │ │ ├── Parfumcadeaukaart.php │ │ ├── Payconiq.php │ │ ├── Paypal.php │ │ ├── Paysafecard.php │ │ ├── Podiumcadeaukaart.php │ │ ├── Postepay.php │ │ ├── Prontowonen.php │ │ ├── Przelewy24.php │ │ ├── Rotterdamcitycard.php │ │ ├── Shoesandsneakers.php │ │ ├── Sodexo.php │ │ ├── Sofortbanking.php │ │ ├── SofortbankingDigitalServices.php │ │ ├── SofortbankingHighRisk.php │ │ ├── Spraypay.php │ │ ├── Stadspasamsterdam.php │ │ ├── Telefonischbetalen.php │ │ ├── Trustly.php │ │ ├── Visa.php │ │ ├── Visamastercard.php │ │ ├── Vvvgiftcard.php │ │ ├── Webshopgiftcard.php │ │ ├── Wechatpay.php │ │ ├── Wijncadeau.php │ │ ├── Winkelcheque.php │ │ ├── Xafaxmynetpay.php │ │ ├── Yourgift.php │ │ └── Yourgreengift.php │ │ ├── CancelBehaviour.php │ │ ├── CancelURL.php │ │ ├── CustomerIp.php │ │ ├── DefaultPaymentOption.php │ │ ├── FailoverGateways.php │ │ ├── FastCheckoutFallbackOptions.php │ │ ├── GoogleAnalytics.php │ │ ├── InstorePickupAddress.php │ │ ├── InvoiceValidDays.php │ │ ├── Languages.php │ │ ├── LogOptions.php │ │ ├── OffOn.php │ │ ├── Order │ │ └── Status │ │ │ ├── Holded.php │ │ │ ├── PendingPayment.php │ │ │ └── Processing.php │ │ ├── PinMoment.php │ │ ├── PinTerminals.php │ │ ├── ProductDataID.php │ │ ├── SendNewOrderEmail.php │ │ ├── ShowCompanyOptions.php │ │ ├── ShowCustomFields.php │ │ ├── ShowDobOptions.php │ │ ├── ShowKvkOptions.php │ │ ├── ShowNonPrivate.php │ │ ├── ShowPaylinkOptions.php │ │ ├── ShowUseragentOptions.php │ │ ├── UseEstimate.php │ │ └── UserGroups.php ├── ConfigProvider.php ├── CreateFastCheckoutOrder.php ├── OrderCreateResponse.php ├── PayPayment.php ├── PayPaymentCreate.php ├── PayPaymentCreateFastCheckout.php └── Paymentmethod │ ├── Afterpay.php │ ├── AfterpayInternational.php │ ├── Alipay.php │ ├── Alipayplus.php │ ├── Alma.php │ ├── Amazonpay.php │ ├── Amex.php │ ├── Applepay.php │ ├── Bataviacadeaukaart.php │ ├── Beautycadeau.php │ ├── Biercheque.php │ ├── Biller.php │ ├── Billink.php │ ├── Bioscoopbon.php │ ├── Blik.php │ ├── Bloemencadeaukaart.php │ ├── Boekenbon.php │ ├── CapayableGespreid.php │ ├── Cardrefund.php │ ├── Cartebleue.php │ ├── Cashly.php │ ├── Creditclick.php │ ├── Cult.php │ ├── Dankort.php │ ├── Decadeaukaart.php │ ├── Dinerbon.php │ ├── Eps.php │ ├── Fashioncheque.php │ ├── Fashiongiftcard.php │ ├── Festivalcadeaukaart.php │ ├── Flyingblueplus.php │ ├── Gezondheidsbon.php │ ├── Giropay.php │ ├── Givacard.php │ ├── Good4fun.php │ ├── Googlepay.php │ ├── Horsesandgifts.php │ ├── Huisdierencadeaukaart.php │ ├── Huisentuincadeau.php │ ├── Ideal.php │ ├── In3business.php │ ├── Incasso.php │ ├── Instore.php │ ├── Invisible.php │ ├── Kidsorteen.php │ ├── Klarna.php │ ├── Klarnakp.php │ ├── Kunstencultuurkaart.php │ ├── Maestro.php │ ├── Mastercard.php │ ├── Mistercash.php │ ├── Mobilepay.php │ ├── Monizze.php │ ├── Mooigiftcard.php │ ├── Multibanco.php │ ├── Nationaletuinbon.php │ ├── Nexi.php │ ├── Onlinebankbetaling.php │ ├── Overboeking.php │ ├── Parfumcadeaukaart.php │ ├── Payconiq.php │ ├── Paylink.php │ ├── PaymentMethod.php │ ├── Paypal.php │ ├── Paysafecard.php │ ├── Podiumcadeaukaart.php │ ├── Postepay.php │ ├── Prontowonen.php │ ├── Przelewy24.php │ ├── Rotterdamcitycard.php │ ├── Shoesandsneakers.php │ ├── Sodexo.php │ ├── Sofortbanking.php │ ├── SofortbankingDigitalServices.php │ ├── SofortbankingHighRisk.php │ ├── Spraypay.php │ ├── Stadspasamsterdam.php │ ├── Telefonischbetalen.php │ ├── Trustly.php │ ├── Visa.php │ ├── Visamastercard.php │ ├── Vvvgiftcard.php │ ├── Webshopgiftcard.php │ ├── Wechatpay.php │ ├── Wijncadeau.php │ ├── Winkelcheque.php │ ├── Xafaxmynetpay.php │ ├── Yourgift.php │ └── Yourgreengift.php ├── Observer ├── CheckoutSubmitAllAfter │ └── PayCheckoutUrl.php ├── InvoiceSaveCommitAfter.php ├── OrderCancelAfter.php ├── ShipmentSaveAfter.php └── SubtractInventoryObserver.php ├── Plugin ├── Checkout │ └── LayoutProcessor.php ├── InstoreButton.php └── OrderPaymentAdditionalInformation.php ├── README.md ├── Setup └── Patch │ └── Data │ └── EncryptCredentials.php ├── ViewModel └── FastCheckout.php ├── composer.json ├── etc ├── acl.xml ├── adminhtml │ ├── paymentmethods.xml │ ├── paymentmethods │ │ ├── afterpay.xml │ │ ├── afterpay_international.xml │ │ ├── alipay.xml │ │ ├── alipayplus.xml │ │ ├── alma.xml │ │ ├── amazonpay.xml │ │ ├── amex.xml │ │ ├── applepay.xml │ │ ├── bataviacadeaukaart.xml │ │ ├── beautycadeau.xml │ │ ├── biercheque.xml │ │ ├── biller.xml │ │ ├── billink.xml │ │ ├── bioscoopbon.xml │ │ ├── blik.xml │ │ ├── bloemencadeaukaart.xml │ │ ├── boekenbon.xml │ │ ├── capayable_gespreid.xml │ │ ├── cartebleue.xml │ │ ├── cashly.xml │ │ ├── creditclick.xml │ │ ├── cult.xml │ │ ├── dankort.xml │ │ ├── decadeaukaart.xml │ │ ├── dinerbon.xml │ │ ├── eps.xml │ │ ├── fashioncheque.xml │ │ ├── fashiongiftcard.xml │ │ ├── festivalcadeaukaart.xml │ │ ├── flyingblueplus.xml │ │ ├── gezondheidsbon.xml │ │ ├── giropay.xml │ │ ├── givacard.xml │ │ ├── good4fun.xml │ │ ├── googlepay.xml │ │ ├── horsesandgifts.xml │ │ ├── huisdierencadeaukaart.xml │ │ ├── huisentuincadeau.xml │ │ ├── ideal.xml │ │ ├── in3business.xml │ │ ├── incasso.xml │ │ ├── instore.xml │ │ ├── kidsorteen.xml │ │ ├── klarna.xml │ │ ├── klarnakp.xml │ │ ├── kunstencultuurkaart.xml │ │ ├── maestro.xml │ │ ├── mastercard.xml │ │ ├── mistercash.xml │ │ ├── mobilepay.xml │ │ ├── monizze.xml │ │ ├── mooigiftcard.xml │ │ ├── multibanco.xml │ │ ├── nationaletuinbon.xml │ │ ├── nexi.xml │ │ ├── onlinebankbetaling.xml │ │ ├── overboeking.xml │ │ ├── parfumcadeaukaart.xml │ │ ├── payconiq.xml │ │ ├── paylink.xml │ │ ├── paypal.xml │ │ ├── paysafecard.xml │ │ ├── podiumcadeaukaart.xml │ │ ├── postepay.xml │ │ ├── prontowonen.xml │ │ ├── przelewy24.xml │ │ ├── rotterdamcitycard.xml │ │ ├── shoesandsneakers.xml │ │ ├── sodexo.xml │ │ ├── sofortbanking.xml │ │ ├── sofortbanking_ds.xml │ │ ├── sofortbanking_hr.xml │ │ ├── spraypay.xml │ │ ├── stadspasamsterdam.xml │ │ ├── telefonischbetalen.xml │ │ ├── trustly.xml │ │ ├── visa.xml │ │ ├── visamastercard.xml │ │ ├── vvvgiftcard.xml │ │ ├── webshopgiftcard.xml │ │ ├── wechatpay.xml │ │ ├── wijncadeau.xml │ │ ├── winkelcheque.xml │ │ ├── xafaxmynetpay.xml │ │ ├── yourgift.xml │ │ └── yourgreengift.xml │ ├── routes.xml │ └── system.xml ├── config.xml ├── db_schema.xml ├── di.xml ├── email_templates.xml ├── events.xml ├── frontend │ ├── di.xml │ ├── routes.xml │ └── sections.xml ├── module.xml ├── payment.xml └── webapi_rest │ └── events.xml ├── i18n ├── de_AT.csv ├── de_CH.csv ├── de_DE.csv ├── de_LU.csv ├── en_US.csv ├── fr_BE.csv ├── fr_CA.csv ├── fr_CH.csv ├── fr_FR.csv ├── fr_LU.csv ├── nl_BE.csv └── nl_NL.csv ├── registration.php └── view ├── adminhtml ├── layout │ ├── default.xml │ ├── paynl_order_cardrefundform.xml │ └── sales_order_view.xml ├── templates │ ├── form │ │ ├── instore.phtml │ │ └── paylink.phtml │ ├── order │ │ └── view │ │ │ ├── cardrefund.phtml │ │ │ └── view.phtml │ └── system │ │ └── config │ │ ├── button.phtml │ │ ├── checkbox.phtml │ │ ├── credentials.phtml │ │ ├── featurerequest.phtml │ │ ├── logs.phtml │ │ ├── multiselect.phtml │ │ ├── obscured.phtml │ │ └── versioncheck.phtml └── web │ ├── css │ ├── cardrefundform.css │ ├── configtab.css │ ├── featurerequest.css │ ├── multiselect.css │ └── versioncheck.css │ ├── images │ └── logo.png │ └── js │ ├── configtab.js │ ├── featurerequest.js │ ├── multiselect.js │ └── versioncheck.js └── frontend ├── email ├── feature_request_email.html ├── paylink_email.html └── paylink_email_order.html ├── layout ├── catalog_product_view.xml ├── checkout_cart_index.xml ├── checkout_index_index.xml ├── default.xml ├── paynl_checkout_fastcheckoutfallback.xml ├── paynl_order_cancel.xml ├── paynl_order_confirm.xml ├── paynl_order_finish.xml ├── paynl_order_finishfc.xml ├── paynl_order_invoice.xml ├── paynl_order_pending.xml └── paynl_order_pickup.xml ├── templates ├── pay_cancel.phtml ├── pay_fast_checkout_cart.phtml ├── pay_fast_checkout_fallback.phtml ├── pay_fast_checkout_minicart.phtml ├── pay_fast_checkout_product.phtml ├── pay_finish.phtml ├── pay_finish_fc.phtml └── pay_pending.phtml └── web ├── css ├── payFastCheckout.css └── paycheckout.css ├── images ├── fastCheckoutIdeal.png └── ideal-visual.webp ├── js ├── fast-checkout-cart-view.js ├── fast-checkout-modal-checkout.js ├── fast-checkout-modal-close.js ├── fast-checkout-modal-open.js ├── fast-checkout-product-view.js ├── minicart.js ├── reloadCart.js └── view │ └── payment │ ├── method-renderer.js │ └── method-renderer │ └── default.js ├── logos ├── 1.png ├── 10.png ├── 102.png ├── 105.png ├── 108.png ├── 11.png ├── 111.png ├── 114.png ├── 117.png ├── 119.png ├── 12.png ├── 120.png ├── 123.png ├── 126.png ├── 13.png ├── 132.png ├── 135.png ├── 138.png ├── 14.png ├── 141.png ├── 144.png ├── 147.png ├── 149.png ├── 15.png ├── 152.png ├── 155.png ├── 158.png ├── 16.png ├── 161.png ├── 164.png ├── 167.png ├── 17.png ├── 170.png ├── 173.png ├── 176.png ├── 179.png ├── 18.png ├── 180.png ├── 183.png ├── 186.png ├── 189.png ├── 19.png ├── 192.png ├── 195.png ├── 198.png ├── 2.png ├── 20.png ├── 201.png ├── 204.png ├── 207.png ├── 21.png ├── 210.png ├── 213.png ├── 219.png ├── 22.png ├── 225.png ├── 228.png ├── 23.png ├── 231.png ├── 234.png ├── 237.png ├── 24.png ├── 240.png ├── 243.png ├── 246.png ├── 25.png ├── 252.png ├── 255.png ├── 258.png ├── 26.png ├── 27.png ├── 270.png ├── 28.png ├── 288.png ├── 29.png ├── 291.png ├── 2937.png ├── 294.png ├── 297.png ├── 3.png ├── 30.png ├── 300.png ├── 31.png ├── 315.png ├── 32.png ├── 321.png ├── 324.png ├── 327.png ├── 33.png ├── 330.png ├── 333.png ├── 336.png ├── 339.png ├── 34.png ├── 345.png ├── 35.png ├── 36.png ├── 37.png ├── 38.png ├── 387.png ├── 39.png ├── 390.png ├── 4.png ├── 40.png ├── 41.png ├── 43.png ├── 46.png ├── 49.png ├── 5.png ├── 52.png ├── 55.png ├── 58.png ├── 6.png ├── 61.png ├── 64.png ├── 67.png ├── 7.png ├── 70.png ├── 76.png ├── 79.png ├── 8.png ├── 82.png ├── 84.png ├── 87.png ├── 9.png ├── 90.png ├── 93.png ├── 96.png ├── 99.png ├── invoice.png └── retourpinnen.png ├── logos_issuers ├── qr-1.svg ├── qr-10.svg ├── qr-11.svg ├── qr-12.svg ├── qr-2.svg ├── qr-23355.svg ├── qr-23358.svg ├── qr-23361.svg ├── qr-3.svg ├── qr-4.svg ├── qr-5.svg ├── qr-5080.svg ├── qr-5081.svg ├── qr-5082.svg ├── qr-5084.svg ├── qr-6.svg ├── qr-8.svg └── qr-9.svg └── template ├── minicart.html └── payment └── default.html /.github/linters/phpcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | The default coding standard for usage with GitHub Super-Linter. It includes PSR12. 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | warning 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /.github/workflows/phplint.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: PHP Linter 3 | 4 | on: [pull_request, workflow_dispatch] 5 | jobs: 6 | build: 7 | name: Apply lint and PHP validation. 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Checkout Code 11 | uses: actions/checkout@v3 12 | with: 13 | fetch-depth: 0 14 | 15 | # https://github.com/github/super-linter 16 | - name: Lint Code Base 17 | uses: github/super-linter/slim@v4 18 | env: 19 | DEFAULT_BRANCH: master 20 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 21 | SSH_KEY: ${{ secrets.SSH_PRIVATE_KEY }} 22 | VALIDATE_PHP: true 23 | VALIDATE_PHP_PHPCS: true 24 | VALIDATE_ALL_CODEBASE: false 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/* 2 | 3 | -------------------------------------------------------------------------------- /Block/Adminhtml/Render/CacheButton.php: -------------------------------------------------------------------------------- 1 | urlInterface = $urlInterface; 27 | parent::__construct($context); 28 | } 29 | 30 | /** 31 | * Render block: extension version 32 | * 33 | * @param AbstractElement $element 34 | * 35 | * @return string 36 | */ 37 | public function render(AbstractElement $element) 38 | { 39 | $currentUrl = $this->urlInterface->getCurrentUrl(); 40 | $payUrl = str_replace("system_config/edit/section/paynl_paymentmethods", "cache", $currentUrl); 41 | 42 | $text = __('When updating this setting, please flush Magento\'s cache afterwards ') . ' ' . __('here') . '.'; 43 | $html = ''; 44 | $html .= '' . $text . ''; 45 | $html .= ''; 46 | return $html; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Block/Adminhtml/Render/Checkbox.php: -------------------------------------------------------------------------------- 1 | configPath = $element->getData('field_config')['config_path']; 32 | $this->setNamePrefix($element->getName()) 33 | ->setHtmlId($element->getHtmlId()); 34 | 35 | $this->checked = $element->getEscapedValue() == 1; 36 | 37 | return $this->_toHtml(); 38 | } 39 | 40 | /** 41 | * @return boolean 42 | */ 43 | public function getIsChecked() 44 | { 45 | return $this->checked; 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /Block/Adminhtml/Render/Multiselect.php: -------------------------------------------------------------------------------- 1 | configPath = $element->getData('field_config')['config_path']; 30 | $this->setNamePrefix($element->getName()) 31 | ->setHtmlId($element->getHtmlId()); 32 | 33 | $this->setData('element', $element); 34 | 35 | return $this->_toHtml(); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Block/Adminhtml/Render/SettingsButton.php: -------------------------------------------------------------------------------- 1 | urlInterface = $urlInterface; 27 | parent::__construct($context); 28 | } 29 | 30 | /** 31 | * Render block: extension version 32 | * 33 | * @param AbstractElement $element 34 | * 35 | * @return string 36 | */ 37 | public function render(AbstractElement $element) 38 | { 39 | $currentUrl = $this->urlInterface->getCurrentUrl(); 40 | $payUrl = str_replace("payment", "paynl_setup", $currentUrl); 41 | 42 | $text = __('Pay. - Settings have been moved to their own tab, click') . ' ' . __('here') . ' ' . __('to go to the new settings page.'); 43 | 44 | $html = ''; 45 | $html .= ' ' . $text . ''; 46 | $html .= ''; 47 | return $html; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Block/Adminhtml/System/Config/Fieldset/Expanded.php: -------------------------------------------------------------------------------- 1 | addPageAsset('Paynl_Payment::css/payFastCheckout.css'); 22 | parent::__construct($context, $data); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Block/Css.php: -------------------------------------------------------------------------------- 1 | getConfig('payment/paynl/pay_style_checkout') == 1) { 17 | $page->addPageAsset('Paynl_Payment::css/paycheckout.css'); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Block/Form/Paylink.php: -------------------------------------------------------------------------------- 1 | resultFactory->create(ResultFactory::TYPE_PAGE); 15 | return $resultPage; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Controller/Checkout/FastCheckoutFallback.php: -------------------------------------------------------------------------------- 1 | _pageFactory = $pageFactory; 20 | return parent::__construct($context); 21 | } 22 | 23 | /** 24 | * @return object 25 | */ 26 | public function execute() 27 | { 28 | return $this->_pageFactory->create(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Controller/CsrfAwareActionInterface.php: -------------------------------------------------------------------------------- 1 | _pageFactory = $pageFactory; 20 | return parent::__construct($context); 21 | } 22 | 23 | /** 24 | * @return object 25 | */ 26 | public function execute() 27 | { 28 | return $this->_pageFactory->create(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Controller/Order/Confirm.php: -------------------------------------------------------------------------------- 1 | _pageFactory = $pageFactory; 20 | return parent::__construct($context); 21 | } 22 | 23 | /** 24 | * @return object 25 | */ 26 | public function execute() 27 | { 28 | return $this->_pageFactory->create(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Controller/Order/Finish.php: -------------------------------------------------------------------------------- 1 | _pageFactory = $pageFactory; 20 | return parent::__construct($context); 21 | } 22 | 23 | /** 24 | * @return object 25 | */ 26 | public function execute() 27 | { 28 | return $this->_pageFactory->create(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Controller/Order/FinishFC.php: -------------------------------------------------------------------------------- 1 | _pageFactory = $pageFactory; 20 | return parent::__construct($context); 21 | } 22 | 23 | /** 24 | * @return object 25 | */ 26 | public function execute() 27 | { 28 | return $this->_pageFactory->create(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Controller/Order/Invoice.php: -------------------------------------------------------------------------------- 1 | _pageFactory = $pageFactory; 20 | return parent::__construct($context); 21 | } 22 | 23 | /** 24 | * @return object 25 | */ 26 | public function execute() 27 | { 28 | return $this->_pageFactory->create(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Controller/Order/Pending.php: -------------------------------------------------------------------------------- 1 | _pageFactory = $pageFactory; 20 | return parent::__construct($context); 21 | } 22 | 23 | /** 24 | * @return object 25 | */ 26 | public function execute() 27 | { 28 | return $this->_pageFactory->create(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Controller/Order/Pickup.php: -------------------------------------------------------------------------------- 1 | _pageFactory = $pageFactory; 20 | return parent::__construct($context); 21 | } 22 | 23 | /** 24 | * @return object 25 | */ 26 | public function execute() 27 | { 28 | return $this->_pageFactory->create(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Controller/PayAction.php: -------------------------------------------------------------------------------- 1 | isPost() && count($request->getParams()) <= 0) { 14 | $jsonRequest = json_decode($request->getContent(), true); 15 | 16 | if (is_array($jsonRequest)) { 17 | $request->setParams($jsonRequest); 18 | } 19 | } 20 | 21 | return $request; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Logging/Logger.php: -------------------------------------------------------------------------------- 1 | url; 18 | } 19 | 20 | /** 21 | * @param string|null $url 22 | * @return void 23 | */ 24 | public function setUrl(string $url) 25 | { 26 | $this->url = $url; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Model/Config/Source/AuthorisedPaidAmount.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray(): array 31 | { 32 | return [ 33 | '0' => __('Do nothing (default)'), 34 | '1' => __('Set paid amount with order amount for captured payments'), 35 | ]; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Model/Config/Source/AutoCapture.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | '0' => __('Off'), 34 | '1' => __('On'), 35 | '2' => __('On - via Wuunder'), 36 | '3' => __('On - via Sherpa'), 37 | ]; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Model/Config/Source/Available/Afterpay.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | '0' => __('Renew quote-id (default)'), 34 | '1' => __('Maintain quote-id'), 35 | ]; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Model/Config/Source/CancelURL.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | 'checkout/cart' => __('checkout/cart'), 34 | 'checkout' => __('checkout'), 35 | 'paynl/order/cancel' => __('Pay. Cancel Page') 36 | ]; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Model/Config/Source/CustomerIp.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | 'default' => __('Default (Pay. SDK)'), 34 | 'orderremoteaddress' => __('Magento Order IP'), 35 | 'httpforwarded' => __('HTTP forwarded'), 36 | 'remoteaddress' => __('Remote address') 37 | ]; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Model/Config/Source/FailoverGateways.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | $cores = \Paynl\Config::getCores(); 33 | return array_merge($cores, ['custom' => __('Custom')]); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Model/Config/Source/FastCheckoutFallbackOptions.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | 0 => __('Show notice and abort fast checkout'), 34 | 1 => __('Show intermediate screen to select shipping method') 35 | ]; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Model/Config/Source/GoogleAnalytics.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | '1' => __('Transfer analytics to PAY.'), 34 | '0' => __('Don\'t Transfer analytics to PAY.'), 35 | ]; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Model/Config/Source/InstorePickupAddress.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | '0' => __('Leave shipping address unchanged (Default)'), 34 | '1' => __('Use billing address as shipping address'), 35 | ]; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Model/Config/Source/InvoiceValidDays.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | $options = []; 33 | for ($i = 1; $i <= 21; $i++) { 34 | $options[(string)$i] = __((string)$i); 35 | } 36 | 37 | return $options; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Model/Config/Source/LogOptions.php: -------------------------------------------------------------------------------- 1 | toArray(); 22 | 23 | $arrResult = []; 24 | foreach ($arrOptions as $value => $label) { 25 | $arrResult[] = ['value' => $value, 'label' => $label]; 26 | } 27 | return $arrResult; 28 | } 29 | 30 | /** 31 | * Get options in "key-value" format 32 | * 33 | * @return array 34 | */ 35 | public function toArray() 36 | { 37 | return [ 38 | self::LOG_NONE => __('No logging'), 39 | self::LOG_ONLY_CRITICAL => __('Only Critical errors are logged'), 40 | self::LOG_CRITICAL_NOTICE => __('Only Critical errors and Notices are logged'), 41 | self::LOG_ALL => __('Everything is logged, including Critical, Notice, Info and Debug'), 42 | ]; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Model/Config/Source/OffOn.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | '0' => __('Off'), 34 | '1' => __('On'), 35 | ]; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Model/Config/Source/Order/Status/Holded.php: -------------------------------------------------------------------------------- 1 | toArray(); 21 | 22 | $arrResult = []; 23 | foreach ($arrOptions as $value => $label) { 24 | $arrResult[] = ['value' => $value, 'label' => $label]; 25 | } 26 | return $arrResult; 27 | } 28 | 29 | /** 30 | * Get options in "key-value" format 31 | * 32 | * @return array 33 | */ 34 | public function toArray() 35 | { 36 | return [ 37 | '0' => __("Direct checkout payment (default)"), 38 | '1' => __("Payment takes place at the pickup location, only create a backorder"), 39 | '2' => __("Provide this choice in the checkout"), 40 | ]; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Model/Config/Source/ProductDataID.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | '0' => __('Product-ID (default)'), 34 | '1' => __('SKU-ID'), 35 | ]; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Model/Config/Source/SendNewOrderEmail.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | 'after_payment' => __('After successful payment'), 34 | 'before_payment' => __('Before payment') 35 | ]; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Model/Config/Source/ShowCompanyOptions.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | '0' => __('Both (B2C & B2B)'), 34 | '1' => __('Private (B2C)'), 35 | '2' => __('Business (B2B)'), 36 | ]; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Model/Config/Source/ShowCustomFields.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | '0' => __('No'), 34 | '1' => __('Optional'), 35 | '2' => __('Required'), 36 | ]; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Model/Config/Source/ShowDobOptions.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | '0' => __('Don\'t show at payment method.'), 34 | '1' => __('Show DOB field at method, but leave it optional.'), 35 | '2' => __('Show DOB field at method, make it required.'), 36 | '3' => __('Don\'t show DOB field at method, but set as required. Use DOB field from checkout instead.'), 37 | ]; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Model/Config/Source/ShowKvkOptions.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | '0' => __('Don\'t show at payment method.'), 34 | '1' => __('Show COC field at method, but leave it optional.'), 35 | '2' => __('Show COC field at method, make it required.'), 36 | '3' => __('Don\'t show COC field at method, but set as required. Use COC field from checkout instead.'), 37 | ]; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Model/Config/Source/ShowNonPrivate.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | '0' => __('Don\'t show at payment method.'), 34 | '1' => __('Show VAT field at method, but leave it optional.'), 35 | '2' => __('Show VAT field at method, make it required.'), 36 | '3' => __('Don\'t show VAT field at method, but set as required. Use VAT field from checkout instead.'), 37 | ]; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Model/Config/Source/ShowPaylinkOptions.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | true => __('Enable'), 34 | false => __('Disable') 35 | ]; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Model/Config/Source/ShowUseragentOptions.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | 'No' => __('No'), 34 | 'Chrome' => __('Google Chrome'), 35 | 'Safari' => __('Safari'), 36 | 'MSIE' => __('Internet Explorer'), 37 | 'Opera' => __('Opera'), 38 | 'Firefox' => __('Firefox'), 39 | 'Edg' => __('Edge'), 40 | 'Custom' => __('Custom') 41 | ]; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Model/Config/Source/UseEstimate.php: -------------------------------------------------------------------------------- 1 | toArray(); 17 | 18 | $arrResult = []; 19 | foreach ($arrOptions as $value => $label) { 20 | $arrResult[] = ['value' => $value, 'label' => $label]; 21 | } 22 | return $arrResult; 23 | } 24 | 25 | /** 26 | * Get options in "key-value" format 27 | * 28 | * @return array 29 | */ 30 | public function toArray() 31 | { 32 | return [ 33 | 0 => __('Off'), 34 | 1 => __('On - as Optional'), 35 | 2 => __('On - as Required') 36 | ]; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Model/Config/Source/UserGroups.php: -------------------------------------------------------------------------------- 1 | groupOptions = $groupOptions; 23 | } 24 | 25 | /** 26 | * Options getter 27 | * 28 | * @return array 29 | */ 30 | public function toOptionArray() 31 | { 32 | $groups = $this->groupOptions->toOptionArray(); 33 | array_unshift($groups, array( 34 | 'value' => '', 35 | 'label' => __('All'), 36 | )); 37 | return $groups; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Model/Paymentmethod/Afterpay.php: -------------------------------------------------------------------------------- 1 | checkoutUrl = $checkoutUrl; 30 | $this->responseFactory = $responseFactory; 31 | } 32 | 33 | /** 34 | * @param Observer $observer 35 | * @return void 36 | */ 37 | public function execute(Observer $observer) 38 | { 39 | if ($url = $this->checkoutUrl->getUrl()) { 40 | $response = $this->responseFactory->create(); 41 | $response->setRedirect($url); 42 | $response->sendResponse(); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Plugin/OrderPaymentAdditionalInformation.php: -------------------------------------------------------------------------------- 1 | getOrder(); 21 | if (empty($result['dob']) && $order->getCustomerDob()) { 22 | $result['dob'] = (new \DateTime($order->getCustomerDob()))->format('Y-m-d'); 23 | } 24 | if (empty($result['gender']) && $order->getCustomerGender()) { 25 | $gender = $order->getCustomerGender(); 26 | if (!empty($gender)) { 27 | $result['gender'] = $gender; 28 | } 29 | } 30 | } 31 | return $result; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "paynl/magento2-plugin", 3 | "description": "PAY. Payment methods for Magento2", 4 | "type": "magento2-module", 5 | "version": "3.16.2", 6 | "require": { 7 | "magento/module-sales": "^102.0.0 || ^103.0.0", 8 | "magento/module-payment": "^100.3.0", 9 | "magento/module-quote": "^101.1.0", 10 | "paynl/sdk": "^1.6.6" 11 | }, 12 | "authors": [ 13 | { 14 | "name": "Andy Pieters", 15 | "email": "andy@pay.nl" 16 | }, 17 | { 18 | "name": "Kevin Verschoor", 19 | "email": "k.verschoor@pay.nl" 20 | }, 21 | { 22 | "name": "Anne van Velden", 23 | "email": "anne@pay.nl" 24 | }, 25 | { 26 | "name": "Wouter Jonker", 27 | "email": "wouter@pay.nl" 28 | } 29 | ], 30 | "support": { 31 | "email": "support@pay.nl", 32 | "docs": "https://docs.pay.nl/plugins#magento-2" 33 | }, 34 | "autoload": { 35 | "files": [ 36 | "registration.php" 37 | ], 38 | "psr-4": { 39 | "Paynl\\Payment\\": "" 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /etc/acl.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /etc/adminhtml/routes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /etc/db_schema.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 |
-------------------------------------------------------------------------------- /etc/di.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | Paynl_Payment::form/paymentmethod/default.phtml 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | /var/log/pay.log 23 | 24 | 25 | 26 | 27 | PAY 28 | 29 | Paynl\Payment\Logging\Handler 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /etc/email_templates.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 |