├── .gitattributes ├── .gitignore ├── view ├── frontend │ ├── web │ │ ├── images │ │ │ ├── cc.png │ │ │ ├── eps.png │ │ │ ├── p24.png │ │ │ ├── afterpay.png │ │ │ ├── invoice.png │ │ │ ├── paypal.png │ │ │ ├── sepadd.png │ │ │ ├── invoiceb2b.png │ │ │ ├── salamantex.png │ │ │ ├── installment.png │ │ │ ├── paysafecard.png │ │ │ └── sofortbanking.png │ │ ├── js │ │ │ ├── action │ │ │ │ └── clear-cart.js │ │ │ ├── model │ │ │ │ └── min-age-validator.js │ │ │ └── view │ │ │ │ └── payment │ │ │ │ ├── method-renderer │ │ │ │ ├── standard.js │ │ │ │ └── invoiceinstallment.js │ │ │ │ └── method-renderer.js │ │ └── template │ │ │ └── payment │ │ │ └── method-standard.html │ ├── layout │ │ ├── checkout_onepage_success.xml │ │ ├── qentacheckoutpage_checkout_back.xml │ │ └── qentacheckoutpage_checkout_failed.xml │ └── templates │ │ └── back.phtml └── adminhtml │ ├── email │ └── contact_support_email.html │ ├── web │ ├── images │ │ └── qenta-logo.svg │ ├── js │ │ ├── fundtransfer-loader.js │ │ └── fundtransfer.js │ └── styles.css │ ├── templates │ └── email │ │ ├── support_modules.phtml │ │ └── support_paymentmethods.phtml │ └── layout │ ├── adminhtml_system_config_edit.xml │ ├── qentacheckoutpage_support_contact.xml │ └── qentacheckoutpage_fundtransfer_transfer.xml ├── Controller ├── CsrfAwareActionWithoutCsrfSupport.php ├── CsrfAwareActionWithCsrfSupport.php ├── CsrfAwareAction.php ├── Adminhtml │ ├── Support │ │ ├── Index.php │ │ ├── Contact.php │ │ └── Sendrequest.php │ ├── Fundtransfer │ │ ├── Index.php │ │ ├── Transfer.php │ │ └── Submit.php │ ├── Transactions │ │ └── RefundReversal.php │ └── Test │ │ └── Config.php └── Checkout │ ├── Failed.php │ └── Confirm.php ├── .env ├── .github └── ISSUE_TEMPLATE.md ├── composer.json ├── Model ├── App │ └── Config │ │ ├── ReaderPool.php │ │ └── ScopePool.php ├── Payment │ ├── P24.php │ ├── Ccard.php │ ├── Paysafecard.php │ ├── Sofortbanking.php │ ├── Salamantex.php │ ├── Afterpay.php │ ├── Sepa.php │ ├── Paypal.php │ ├── Eps.php │ └── Invoice.php ├── Config │ ├── Source │ │ ├── InvoiceProviders.php │ │ ├── Txident.php │ │ ├── OrderCreation.php │ │ ├── Configurations.php │ │ ├── DisplayModes.php │ │ └── Layouts.php │ └── Backend │ │ ├── Secret.php │ │ └── CustomerId.php ├── Plugin │ └── FixSession.php ├── FundTransfer.php └── Test.php ├── .docker └── magento2 │ ├── ngrok.sh │ ├── Dockerfile │ └── init.sh ├── registration.php ├── etc ├── module.xml ├── email_templates.xml ├── frontend │ ├── routes.xml │ ├── sections.xml │ └── di.xml └── adminhtml │ ├── routes.xml │ └── di.xml ├── docker-compose.yml ├── Block ├── Checkout │ └── Onepage │ │ └── Success │ │ └── Messages.php └── Adminhtml │ ├── Support │ ├── Contact.php │ └── Edit │ │ └── Form.php │ ├── Fundtransfer │ └── Transfer.php │ ├── Buttons.php │ ├── Transactions │ └── Detail │ │ └── Plugin.php │ └── Tabs.php_x ├── README.md └── i18n ├── en_US.csv └── de_AT.csv /.gitattributes: -------------------------------------------------------------------------------- 1 | *.sh text eol=lf 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | vendor 3 | .env 4 | -------------------------------------------------------------------------------- /view/frontend/web/images/cc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hobex/magento2-qcp/HEAD/view/frontend/web/images/cc.png -------------------------------------------------------------------------------- /view/frontend/web/images/eps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hobex/magento2-qcp/HEAD/view/frontend/web/images/eps.png -------------------------------------------------------------------------------- /view/frontend/web/images/p24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hobex/magento2-qcp/HEAD/view/frontend/web/images/p24.png -------------------------------------------------------------------------------- /view/frontend/web/images/afterpay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hobex/magento2-qcp/HEAD/view/frontend/web/images/afterpay.png -------------------------------------------------------------------------------- /view/frontend/web/images/invoice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hobex/magento2-qcp/HEAD/view/frontend/web/images/invoice.png -------------------------------------------------------------------------------- /view/frontend/web/images/paypal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hobex/magento2-qcp/HEAD/view/frontend/web/images/paypal.png -------------------------------------------------------------------------------- /view/frontend/web/images/sepadd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hobex/magento2-qcp/HEAD/view/frontend/web/images/sepadd.png -------------------------------------------------------------------------------- /view/frontend/web/images/invoiceb2b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hobex/magento2-qcp/HEAD/view/frontend/web/images/invoiceb2b.png -------------------------------------------------------------------------------- /view/frontend/web/images/salamantex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hobex/magento2-qcp/HEAD/view/frontend/web/images/salamantex.png -------------------------------------------------------------------------------- /view/frontend/web/images/installment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hobex/magento2-qcp/HEAD/view/frontend/web/images/installment.png -------------------------------------------------------------------------------- /view/frontend/web/images/paysafecard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hobex/magento2-qcp/HEAD/view/frontend/web/images/paysafecard.png -------------------------------------------------------------------------------- /view/frontend/web/images/sofortbanking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hobex/magento2-qcp/HEAD/view/frontend/web/images/sofortbanking.png -------------------------------------------------------------------------------- /Controller/CsrfAwareActionWithoutCsrfSupport.php: -------------------------------------------------------------------------------- 1 | =')) { 13 | // @codingStandardsIgnoreLine 14 | require_once __DIR__ . '/CsrfAwareActionWithCsrfSupport.php'; 15 | } else { 16 | // @codingStandardsIgnoreLine 17 | require_once __DIR__ . '/CsrfAwareActionWithoutCsrfSupport.php'; 18 | } 19 | -------------------------------------------------------------------------------- /Model/App/Config/ReaderPool.php: -------------------------------------------------------------------------------- 1 | _readers = $readers; 24 | } 25 | 26 | /** 27 | * Retrieve reader by scope type 28 | * 29 | * @param string $scopeType 30 | * @return mixed 31 | */ 32 | public function getReader($scopeType) 33 | { 34 | return $this->_readers[$scopeType]; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /.docker/magento2/ngrok.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | which ngrok >/dev/null 6 | if [[ $? == 0 ]]; then 7 | NGROK_BINARY="$(which ngrok)" 8 | else 9 | >&2 echo "Installing NGROK" 10 | cd ~/ 11 | npm install ngrok 12 | NGROK_BINARY="~/node_modules/ngrok/bin/ngrok" 13 | fi 14 | 15 | function get_ngrok_url() { 16 | curl --fail -s localhost:4040/api/tunnels | jq -r .tunnels\[0\].public_url | sed 's/^http:/https:/' 17 | } 18 | 19 | function wait_for_ngrok() { 20 | while [[ -z ${RESPONSE} || ${RESPONSE} == 'null' ]]; do 21 | RESPONSE=$(get_ngrok_url) 22 | sleep 1; 23 | done 24 | } 25 | 26 | [[ ${1} ]] && NGROK_TOKEN=${1} 27 | 28 | if [[ -z ${NGROK_TOKEN} ]]; then 29 | echo 'NGROK token missing. Set NGROK_TOKEN env' >&2 30 | exit 1 31 | fi 32 | 33 | ${NGROK_BINARY} authtoken ${NGROK_TOKEN} >&/dev/null 34 | ${NGROK_BINARY} http https://localhost:443 >&/dev/null & 35 | wait_for_ngrok 36 | NGROK_URL=$(get_ngrok_url) 37 | NGROK_HOST=$(sed 's,^https\?://,,' <<< ${NGROK_URL}) 38 | echo ${NGROK_HOST} 39 | -------------------------------------------------------------------------------- /view/adminhtml/email/contact_support_email.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{var data.description}} 4 | 5 | {{trans "Product: %product" product=$versioninfo.product}} 6 | {{trans "Version: %product" product=$versioninfo.productVersion}} 7 | {{trans "Plugin name: %product" product=$versioninfo.pluginName}} 8 | {{trans "Plugin version: %product" product=$versioninfo.pluginVersion}} 9 | 10 | {{trans "Configuration:"}} 11 | 12 | {{var configstr}} 13 | 14 | {{trans "Active payment methods:"}} 15 | 16 | {{block class='Magento\\Framework\\View\\Element\\Template' area='adminhtml' template='Qenta_CheckoutPage::email/support_paymentmethods.phtml' methods=$mine}} 17 | 18 | {{trans "Foreign payment methods:"}} 19 | 20 | {{block class='Magento\\Framework\\View\\Element\\Template' area='adminhtml' template='Qenta_CheckoutPage::email/support_paymentmethods.phtml' methods=$foreign}} 21 | 22 | {{trans "Installed Modules:"}} 23 | 24 | {{block class='Magento\\Framework\\View\\Element\\Template' area='adminhtml' template='Qenta_CheckoutPage::email/support_modules.phtml' modules=$modules}} 25 | -------------------------------------------------------------------------------- /view/adminhtml/web/images/qenta-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /view/adminhtml/web/js/fundtransfer-loader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Shop System Plugins - Terms of Use 3 | * 4 | * The plugins offered are provided free of charge by Qenta Payment CEE GmbH 5 | * (abbreviated to Qenta CEE) and are explicitly not part of the Qenta CEE range of 6 | * products and services. 7 | * 8 | * They have been tested and approved for full functionality in the standard configuration 9 | * (status on delivery) of the corresponding shop system. They are under General Public 10 | * License Version 2 (GPLv2) and can be used, developed and passed on to third parties under 11 | * the same terms. 12 | * 13 | * However, Qenta CEE does not provide any guarantee or accept any liability for any errors 14 | * occurring when used in an enhanced, customized shop system configuration. 15 | * 16 | * Operation in an enhanced, customized configuration is at your own risk and requires a 17 | * comprehensive test phase by the user of the plugin. 18 | * 19 | * Customers use the plugins at their own risk. Qenta CEE does not guarantee their full 20 | * functionality neither does Qenta CEE assume liability for any disadvantages related to 21 | * the use of the plugins. Additionally, Qenta CEE does not guarantee the full functionality 22 | * for customized shop systems or installed plugins of other vendors of plugins within the same 23 | * shop system. 24 | * 25 | * Customers are responsible for testing the plugin's functionality before starting productive 26 | * operation. 27 | * 28 | * By installing the plugin into the shop system the customer agrees to these terms of use. 29 | * Please do not use the plugin if you do not agree to these terms of use! 30 | */ 31 | 32 | require([ 33 | "Qenta_CheckoutPage/js/fundtransfer" 34 | ]); 35 | -------------------------------------------------------------------------------- /view/adminhtml/templates/email/support_modules.phtml: -------------------------------------------------------------------------------- 1 | 33 | getModules() as $_m): ?> 34 | 35 | -------------------------------------------------------------------------------- /view/adminhtml/web/styles.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Shop System Plugins - Terms of Use 3 | * 4 | * The plugins offered are provided free of charge by Qenta Payment CEE GmbH 5 | * (abbreviated to Qenta CEE) and are explicitly not part of the Qenta CEE range of 6 | * products and services. 7 | * 8 | * They have been tested and approved for full functionality in the standard configuration 9 | * (status on delivery) of the corresponding shop system. They are under General Public 10 | * License Version 2 (GPLv2) and can be used, developed and passed on to third parties under 11 | * the same terms. 12 | * 13 | * However, Qenta CEE does not provide any guarantee or accept any liability for any errors 14 | * occurring when used in an enhanced, customized shop system configuration. 15 | * 16 | * Operation in an enhanced, customized configuration is at your own risk and requires a 17 | * comprehensive test phase by the user of the plugin. 18 | * 19 | * Customers use the plugins at their own risk. Qenta CEE does not guarantee their full 20 | * functionality neither does Qenta CEE assume liability for any disadvantages related to 21 | * the use of the plugins. Additionally, Qenta CEE does not guarantee the full functionality 22 | * for customized shop systems or installed plugins of other vendors of plugins within the same 23 | * shop system. 24 | * 25 | * Customers are responsible for testing the plugin's functionality before starting productive 26 | * operation. 27 | * 28 | * By installing the plugin into the shop system the customer agrees to these terms of use. 29 | * Please do not use the plugin if you do not agree to these terms of use! 30 | */ 31 | 32 | .qenta-logo { 33 | background: url(images/qenta-logo.svg) no-repeat 0 0; 34 | display: inline-block; 35 | width: 200px; 36 | height: 60px; 37 | } 38 | -------------------------------------------------------------------------------- /registration.php: -------------------------------------------------------------------------------- 1 | 2 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /view/frontend/web/js/action/clear-cart.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Shop System Plugins - Terms of Use 3 | * 4 | * The plugins offered are provided free of charge by Qenta Payment CEE GmbH and are explicitly not part 5 | * of the Qenta Payment CEE GmbH range of products and services. 6 | * 7 | * They have been tested and approved for full functionality in the standard configuration 8 | * (status on delivery) of the corresponding shop system. They are under General Public 9 | * License Version 3 (GPLv3) and can be used, developed and passed on to third parties under 10 | * the same terms. 11 | * 12 | * However, Qenta Payment CEE GmbH does not provide any guarantee or accept any liability for any errors 13 | * occurring when used in an enhanced, customized shop system configuration. 14 | * 15 | * Operation in an enhanced, customized configuration is at your own risk and requires a 16 | * comprehensive test phase by the user of the plugin. 17 | * 18 | * Customers use the plugins at their own risk. Qenta Payment CEE GmbH does not guarantee their full 19 | * functionality neither does Qenta Payment CEE GmbH assume liability for any disadvantages related to 20 | * the use of the plugins. Additionally, Qenta Payment CEE GmbH does not guarantee the full functionality 21 | * for customized shop systems or installed plugins of other vendors of plugins within the same 22 | * shop system. 23 | * 24 | * Customers are responsible for testing the plugin's functionality before starting productive 25 | * operation. 26 | * 27 | * By installing the plugin into the shop system the customer agrees to these terms of use. 28 | * Please do not use the plugin if you do not agree to these terms of use! 29 | */ 30 | 31 | require([ 32 | 'Magento_Customer/js/customer-data' 33 | ], function (customerData) { 34 | var sections = ['cart']; 35 | customerData.invalidate(sections); 36 | customerData.reload(sections, true); 37 | }); 38 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | services: 2 | magento2_db_qcp: 3 | image: mariadb:10.2 4 | restart: always 5 | environment: 6 | MYSQL_ROOT_PASSWORD: ${MAGENTO2_DB_ROOTPASS:-ABC123} 7 | MYSQL_DATABASE: ${MAGENTO2_DB_NAME:-magento} 8 | MYSQL_USER: ${MAGENTO2_DB_USER:-magento} 9 | MYSQL_PASSWORD: ${MAGENTO2_DB_PASS:-magento} 10 | magento2_elasticsearch_qcp: 11 | image: docker.io/bitnami/elasticsearch:7 12 | logging: 13 | driver: none 14 | magento2_qcp: 15 | container_name: magento2_qcp 16 | build: 17 | context: .docker/magento2/ 18 | dockerfile: Dockerfile 19 | depends_on: 20 | - magento2_db_qcp 21 | - magento2_elasticsearch_qcp 22 | ports: 23 | - ${PORT_HTTP:-8005}:80 24 | - ${PORT_SSL:-8445}:443 25 | volumes: 26 | - ./:/tmp/plugin:ro 27 | environment: 28 | MAGENTO2_DB_HOST: ${MAGENTO2_DB_HOST:-magento2_db_qcp} 29 | MAGENTO2_DB_NAME: ${MAGENTO2_DB_NAME:-magento} 30 | MAGENTO2_DB_USER: ${MAGENTO2_DB_USER:-magento} 31 | MAGENTO2_DB_PASS: ${MAGENTO2_DB_PASS:-magento} 32 | MAGENTO2_TABLE_PREFIX: "m2_qcp_" 33 | MAGENTO2_LOCALE: ${MAGENTO2_LOCALE:-en_US} 34 | MAGENTO2_TITLE: ${MAGENTO2_TITLE:-QSHOP} 35 | MAGENTO2_ADMIN_USER: ${MAGENTO2_ADMIN_USER:-admin} 36 | MAGENTO2_ADMIN_PASS: ${MAGENTO2_ADMIN_PASS:-admin123} 37 | MAGENTO2_ADMIN_EMAIL: ${MAGENTO2_ADMIN_EMAIL:-admin@admin.com} 38 | MAGENTO2_BASEURL: ${MAGENTO2_BASEURL} 39 | MAGENTO2_VERSION: ${MAGENTO2_VERSION:-2.4-develop} 40 | PLUGIN_VERSION: ${PLUGIN_VERSION} 41 | PLUGIN_URL: ${PLUGIN_URL:-local} 42 | NGROK_TOKEN: ${NGROK_TOKEN} 43 | DEFAULT_COUNTRY_CODE: ${DEFAULT_COUNTRY_CODE:-AT} 44 | GITHUB_SERVER_URL: ${GITHUB_SERVER_URL} 45 | GITHUB_REPOSITORY: ${GITHUB_REPOSITORY} 46 | GITHUB_WORKSPACE: ${GITHUB_WORKSPACE} 47 | GITHUB_SHA: ${GITHUB_SHA} 48 | GITHUB_REF: ${GITHUB_REF} 49 | -------------------------------------------------------------------------------- /view/adminhtml/layout/adminhtml_system_config_edit.xml: -------------------------------------------------------------------------------- 1 | 2 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /Controller/Adminhtml/Support/Index.php: -------------------------------------------------------------------------------- 1 | _redirect('adminhtml/system_config/edit/section/qenta_checkoutpage'); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /Controller/Adminhtml/Fundtransfer/Index.php: -------------------------------------------------------------------------------- 1 | _redirect('adminhtml/system_config/edit/section/qenta_checkoutpage'); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /etc/email_templates.xml: -------------------------------------------------------------------------------- 1 | 2 | 34 | 35 | 36 |