diff --git a/.github/actions/build-plugin/action.yml b/.github/actions/build-plugin/action.yml
index a7266e16e..904df0206 100644
--- a/.github/actions/build-plugin/action.yml
+++ b/.github/actions/build-plugin/action.yml
@@ -8,7 +8,7 @@ runs:
- name: Start Docker
shell: bash
run: |
- docker run --rm --name shop --env NODE_VERSION=18 --env PHP_VERSION=8.1 -d dockware/dev:6.5.8.7
+ docker run --rm --name shop --env NODE_VERSION=22 --env PHP_VERSION=8.3 -d dockware/shopware:6.7.3.0
sleep 20
docker logs shop
@@ -23,19 +23,6 @@ runs:
docker cp $(pwd)/. shop:/var/www/html/custom/plugins/MolliePayments
docker exec shop bash -c 'sudo chown www-data:www-data /var/www/html/custom/plugins -R'
- # --------------------------------------------------------------------------------------------------------------------------------------
- - name: Fix apt-get repo
- shell: bash
- run: |
- docker exec -u root shop bash -c 'apt-get update --allow-releaseinfo-change'
-
- - name: Install Plugin
- shell: bash
- run: |
- docker exec shop bash -c 'cd /var/www/html/custom/plugins/MolliePayments && make prod'
- docker exec shop bash -c 'cd /var/www/html && php bin/console plugin:refresh'
- docker exec shop bash -c 'cd /var/www/html && php bin/console plugin:install MolliePayments --activate'
- docker exec shop bash -c 'cd /var/www/html && php bin/console cache:clear'
- name: Build Plugin
shell: bash
diff --git a/.github/actions/run-e2e/action.yml b/.github/actions/run-e2e/action.yml
index 7e6cafba5..0903ff8e0 100644
--- a/.github/actions/run-e2e/action.yml
+++ b/.github/actions/run-e2e/action.yml
@@ -1,242 +1,228 @@
-name: 'Run E2E Tests'
-description: "Runs installation and Cypress tests"
-
-
-branding:
- icon: 'award'
- color: 'green'
-
-
-inputs:
- # ------------------------------------------------------------------------------------
- # ENVIRONMENT SETTINGS
- SHOPWARE:
- description: "The Shopware version that is used to run the Cypress tests."
- required: true
- PHP:
- description: "The PHP Version that is used for the Shopware container."
- required: true
- IMAGE:
- description: "dockware image container."
- required: true
- MOLLIE_APIKEY_TEST:
- description: "The Mollie Test API key. Required for the installation."
- default: ''
- required: true
- # ------------------------------------------------------------------------------------
- # CYPRESS SETTINGS
- RUN_CYPRESS:
- description: "If disabled, only the plugin installation will be tested"
- default: 'true'
- required: false
- FILTERS:
- description: "An optional filter for the Cypress tests. Leave empty to run all tests"
- default: ''
- required: false
- REMOVE_DEPRECATED_TESTS:
- description: "If enabled, tests that are marked as deprecated will be removed"
- default: 'false'
- required: false
- CYPRESS_RESULTS_SUFFIX:
- description: "Additional suffix for the zip file with all Cypress results."
- default: ''
- required: false
- # ------------------------------------------------------------------------------------
- # TESTRAIL SETTINGS
- TESTRAIL:
- description: "If enabled, all results will be sent to TestRail."
- default: 'false'
- required: false
- TESTRAIL_DOMAIN:
- description: "The domain for the TestRail endpoint"
- default: ''
- required: false
- TESTRAIL_USERNAME:
- description: "The username for the TestRail endpoint"
- default: ''
- required: false
- TESTRAIL_PASSWORD:
- description: "The password for the TestRail endpoint"
- default: ''
- required: false
- # ------------------------------------------------------------------------------------
- # ------------------------------------------------------------------------------------
- # PRIVATE VARIABLES
- _SHOP_DOMAIN:
- description: 'This domain will be used in Cypress as BASE_URL'
- default: 'cypress.github.shop'
- required: false
- _STORE_API_KEY:
- description: 'This is the Store API Key that is used when launching our Shopware. Its not confidential, its just for here'
- default: 'SWSCOVFSNKLBYUTKS1VSOEDGUQ'
- required: false
- _ZIP_FILE:
- description: 'This is the defined filename of the ZIP file that we use for the installation of the plugin'
- default: '~/.build/MolliePayments-e2e.zip'
- required: false
-
-
-
-runs:
- using: "composite"
- steps:
-
- - name: Download Docker
- shell: bash
- run: docker pull -q ${{ inputs.IMAGE }}:${{ inputs.SHOPWARE }}
-
- - name: Start Docker
- shell: bash
- run: |
- docker run -p 443:443 --name shop --env PHP_VERSION=${{ inputs.PHP }} --env SW_API_ACCESS_KEY=${{ inputs._STORE_API_KEY }} -d ${{ inputs.IMAGE }}:${{ inputs.SHOPWARE }}
- sleep 15
- # now change the domain of our shop, mollie doesn't work with localhost
- sudo echo "127.0.0.1 ${{ inputs._SHOP_DOMAIN }}" | sudo tee -a /etc/hosts
- docker exec shop bash -c "mysql -h 127.0.0.1 -u root -proot shopware -e \"UPDATE sales_channel_domain SET url='https://${{ inputs._SHOP_DOMAIN }}' WHERE url NOT LIKE 'default.%';\""
-
- - name: Update Shopware Config
- shell: bash
- run: |
- docker exec shop bash -c 'sed -i "s/APP_ENV=dev/APP_ENV=prod/g" /var/www/html/.env' || true;
- # we have to enable cypress mode in our shop, this helps us to create subscriptions without webhooks
- docker exec shop bash -c "echo "MOLLIE_CYPRESS_MODE=1" >> /var/www/html/.env" || true;
- docker exec shop bash -c "echo "APP_URL=https://${{ inputs._SHOP_DOMAIN }}" >> /var/www/html/.env" || true;
- docker exec shop bash -c "echo "MOLLIE_PAYPAL_EXPRESS_BETA=1" >> /var/www/html/.env" || true;
- docker exec shop bash -c "echo "TEST_TOKEN='none'" >> /var/www/html/.env" || true;
- docker exec shop bash -c "echo "MAILER_DSN=null://null" >> /var/www/html/.env" || true;
-
- # --------------------------------------------------------------------------------------------------------------------------------------
-
- - name: Upload ZIP File to Docker
- shell: bash
- run: |
- docker cp ${{ inputs._ZIP_FILE }} shop:/var/www/html/custom/plugins/MolliePayments.zip
- docker exec shop bash -c 'cd /var/www/html/custom/plugins && unzip -qq -o MolliePayments.zip'
-
- - name: Configure Shopware
- shell: bash
- run: |
- docker exec shop bash -c 'php bin/console system:config:set core.loginRegistration.showAccountTypeSelection true'
-
- - name: Legacy fixes
- if: ${{ startsWith(inputs.SHOPWARE,'6.4') }}
- shell: bash
- run: |
- # latest composer has an issue with php 7.4 where the lock file is not read fully. you see error that shopware/core is not found
- docker exec -u root shop bash -c 'wget https://getcomposer.org/download/2.2.9/composer.phar && chmod a+x composer.phar && mv composer.phar /usr/local/bin/composer'
- docker exec shop bash -c 'mkdir -p /var/www/html/var/test/jwt && cp /var/www/html/config/jwt/*.pem /var/www/html/var/test/jwt && chmod 0660 /var/www/html/var/test/jwt/*.pem'
-
-
- - name: Prepare Shop for e2e tests
- shell: bash
- run: |
- docker exec shop bash -c 'composer require --dev phpunit/phpunit:9.* -W' # we need to install phpunit 9 with all dependencies, because of minimum php version 8.0
- docker exec shop bash -c 'composer config --no-plugins allow-plugins.wikimedia/composer-merge-plugin true'
- docker exec shop bash -c 'composer config --no-plugins allow-plugins.php-http/discovery true'
- docker exec shop bash -c 'composer config --json extra.merge-plugin "{\"include\":[\"custom/plugins/MolliePayments/composer.json\"], \"ignore-duplicates\":true}"'
- docker exec shop bash -c 'composer require wikimedia/composer-merge-plugin:*'
-
- - name: Install Plugin
- shell: bash
- run: |
- docker exec shop bash -c 'php bin/console plugin:refresh'
- docker exec shop bash -c 'php bin/console plugin:install MolliePayments --activate'
- docker exec shop bash -c 'php bin/console cache:clear'
-
- - name: Configure Plugin
- if: ${{ inputs.MOLLIE_APIKEY_TEST != '' }}
- shell: bash
- run: |
- docker exec shop bash -c 'php bin/console system:config:set MolliePayments.config.testMode true'
- docker exec shop bash -c 'php bin/console system:config:set MolliePayments.config.debugMode true'
- docker exec shop bash -c 'php bin/console system:config:set MolliePayments.config.liveApiKey ${{ inputs.MOLLIE_APIKEY_TEST }}'
- docker exec shop bash -c 'php bin/console system:config:set MolliePayments.config.testApiKey ${{ inputs.MOLLIE_APIKEY_TEST }}'
- docker exec shop bash -c 'php bin/console system:config:set MolliePayments.config.formatOrderNumber github_{ordernumber}'
- docker exec shop bash -c 'php bin/console system:config:set core.mailerSettings.disableDelivery true'
- docker exec shop bash -c 'php bin/console system:config:set core.mailerSettings.emailAgent ""'
- docker exec shop bash -c 'php bin/console cache:clear'
-
- - name: Install Fixtures
- shell: bash
- run: |
- docker exec shop bash -c 'php bin/console mollie:fixtures:install --force'
-
- # --------------------------------------------------------------------------------------------------------------------------------------
-
- - name: DAL Validate
- shell: bash
- run: |
- docker exec shop bash -c 'php bin/console dal:validate'
-
- # --------------------------------------------------------------------------------------------------------------------------------------
- - name: Integration analyzer
- shell: bash
- run: |
- docker exec shop bash -c 'php vendor/bin/phpstan analyse -c ./custom/plugins/MolliePayments/config/.phpstan.neon'
-
- - name: Integration tests
- shell: bash
- run: |
- docker exec shop bash -c 'cd custom/plugins/MolliePayments && make phpintegration -B'
-
- - name: Functional tests
- shell: bash
- run: |
- docker exec shop bash -c 'cd custom/plugins/MolliePayments && make behat -B'
-
- - name: Install Cypress
- if: ${{ inputs.RUN_CYPRESS == 'true' }}
- shell: bash
- run: cd tests/Cypress && make install -B
-
- - name: Remove deprecated Cypress Tests
- if: ${{ inputs.RUN_CYPRESS == 'true' && inputs.REMOVE_DEPRECATED_TESTS == 'true' }}
- shell: bash
- run: |
- # SEPA Direct Debit has been completely removed from Mollie. We have to remove that entry from the tests in old Cypress versions
- sed -i "/key: 'directdebit'/g" $(pwd)/tests/Cypress/cypress/e2e/storefront/checkout/checkout-success.cy.js || true
- sed -i "/key: 'directdebit'/g" $(pwd)/tests/Cypress/cypress/integration/storefront/checkout/checkout-success.spec.js || true
-
- - name: Start Cypress
- if: ${{ inputs.RUN_CYPRESS == 'true' && inputs.TESTRAIL == 'false' }}
- shell: bash
- run: |
- cd tests/Cypress && \
- make run shopware=${{ inputs.SHOPWARE }} storeApiKey=${{ inputs._STORE_API_KEY }} url=https://${{ inputs._SHOP_DOMAIN }} filters="${{ inputs.FILTERS }}"
-
- - name: Start Cypress with TestRail
- if: ${{ inputs.RUN_CYPRESS == 'true' && inputs.TESTRAIL == 'true' }}
- shell: bash
- run: |
- cd tests/Cypress && \
- CYPRESS_TESTRAIL_DOMAIN=${{ inputs.TESTRAIL_DOMAIN }} \
- CYPRESS_TESTRAIL_USERNAME=${{ inputs.TESTRAIL_USERNAME }} \
- CYPRESS_TESTRAIL_PASSWORD=${{ inputs.TESTRAIL_PASSWORD }} \
- CYPRESS_TESTRAIL_PROJECT_ID=7 \
- CYPRESS_TESTRAIL_MILESTONE_ID=15 \
- CYPRESS_TESTRAIL_RUN_NAME="Github Workflow __datetime__, ${{ github.event.head_commit.message }}, Shopware ${{ inputs.SHOPWARE }}" \
- CYPRESS_TESTRAIL_RUN_CLOSE=true \
- make run shopware=${{ inputs.SHOPWARE }} storeApiKey=${{ inputs._STORE_API_KEY }} url=https://${{ inputs._SHOP_DOMAIN }}
-
- # --------------------------------------------------------------------------------------------------------------------------------------
-
- - name: Download Logs
- if: ${{ inputs.RUN_CYPRESS == 'true' && always() }}
- shell: bash
- run: |
- mkdir -p $(pwd)/tests/Cypress/cypress/logs/shopware
- mkdir -p $(pwd)/tests/Cypress/cypress/logs/apache
- docker cp shop:/var/www/html/var/log/. $(pwd)/tests/Cypress/cypress/logs/shopware
- docker cp shop:/var/log/php/. $(pwd)/tests/Cypress/cypress/logs/apache
-
- - name: Store Cypress Results
- if: ${{ inputs.RUN_CYPRESS == 'true' && always() }}
- uses: actions/upload-artifact@v4
- with:
- name: cypress_results_v${{ inputs.SHOPWARE }}${{ inputs.CYPRESS_RESULTS_SUFFIX }}
- retention-days: 1
- path: |
- tests/Cypress/cypress/results
- tests/Cypress/cypress/logs
- tests/Cypress/cypress/videos
+name: 'Run E2E Tests'
+description: "Runs installation and Cypress tests"
+
+
+branding:
+ icon: 'award'
+ color: 'green'
+
+
+inputs:
+ # ------------------------------------------------------------------------------------
+ # ENVIRONMENT SETTINGS
+ SHOPWARE:
+ description: "The Shopware version that is used to run the Cypress tests."
+ required: true
+ PHP:
+ description: "The PHP Version that is used for the Shopware container."
+ required: true
+ IMAGE:
+ description: "dockware image container."
+ required: true
+ MOLLIE_APIKEY_TEST:
+ description: "The Mollie Test API key. Required for the installation."
+ default: ''
+ required: true
+ # ------------------------------------------------------------------------------------
+ # CYPRESS SETTINGS
+ RUN_CYPRESS:
+ description: "If disabled, only the plugin installation will be tested"
+ default: 'true'
+ required: false
+ FILTERS:
+ description: "An optional filter for the Cypress tests. Leave empty to run all tests"
+ default: ''
+ required: false
+ REMOVE_DEPRECATED_TESTS:
+ description: "If enabled, tests that are marked as deprecated will be removed"
+ default: 'false'
+ required: false
+ CYPRESS_RESULTS_SUFFIX:
+ description: "Additional suffix for the zip file with all Cypress results."
+ default: ''
+ required: false
+ # ------------------------------------------------------------------------------------
+ # TESTRAIL SETTINGS
+ TESTRAIL:
+ description: "If enabled, all results will be sent to TestRail."
+ default: 'false'
+ required: false
+ TESTRAIL_DOMAIN:
+ description: "The domain for the TestRail endpoint"
+ default: ''
+ required: false
+ TESTRAIL_USERNAME:
+ description: "The username for the TestRail endpoint"
+ default: ''
+ required: false
+ TESTRAIL_PASSWORD:
+ description: "The password for the TestRail endpoint"
+ default: ''
+ required: false
+ # ------------------------------------------------------------------------------------
+ # ------------------------------------------------------------------------------------
+ # PRIVATE VARIABLES
+ _SHOP_DOMAIN:
+ description: 'This domain will be used in Cypress as BASE_URL'
+ default: 'cypress.github.shop'
+ required: false
+ _STORE_API_KEY:
+ description: 'This is the Store API Key that is used when launching our Shopware. Its not confidential, its just for here'
+ default: 'SWSCOVFSNKLBYUTKS1VSOEDGUQ'
+ required: false
+ _ZIP_FILE:
+ description: 'This is the defined filename of the ZIP file that we use for the installation of the plugin'
+ default: '~/.build/MolliePayments-e2e.zip'
+ required: false
+
+
+
+runs:
+ using: "composite"
+ steps:
+
+ - name: Download Docker
+ shell: bash
+ run: docker pull -q ${{ inputs.IMAGE }}:${{ inputs.SHOPWARE }}
+
+ - name: Start Docker
+ shell: bash
+ run: |
+ docker run -p 443:443 --name shop --env PHP_VERSION=${{ inputs.PHP }} --env SW_API_ACCESS_KEY=${{ inputs._STORE_API_KEY }} -d ${{ inputs.IMAGE }}:${{ inputs.SHOPWARE }}
+ sleep 15
+ # now change the domain of our shop, mollie doesn't work with localhost
+ sudo echo "127.0.0.1 ${{ inputs._SHOP_DOMAIN }}" | sudo tee -a /etc/hosts
+ docker exec shop bash -c "mysql -h 127.0.0.1 -u root -proot shopware -e \"UPDATE sales_channel_domain SET url='https://${{ inputs._SHOP_DOMAIN }}' WHERE url NOT LIKE 'default.%';\""
+
+ - name: Update Shopware Config
+ shell: bash
+ run: |
+ docker exec shop bash -c 'sed -i "s/APP_ENV=dev/APP_ENV=prod/g" /var/www/html/.env' || true;
+ # we have to enable cypress mode in our shop, this helps us to create subscriptions without webhooks
+ docker exec shop bash -c "echo "MOLLIE_CYPRESS_MODE=1" >> /var/www/html/.env" || true;
+ docker exec shop bash -c "echo "APP_URL=https://${{ inputs._SHOP_DOMAIN }}" >> /var/www/html/.env" || true;
+ docker exec shop bash -c "echo "MOLLIE_PAYPAL_EXPRESS_BETA=1" >> /var/www/html/.env" || true;
+ docker exec shop bash -c "echo "TEST_TOKEN='none'" >> /var/www/html/.env" || true;
+ docker exec shop bash -c "echo "MAILER_DSN=null://null" >> /var/www/html/.env" || true;
+
+ # --------------------------------------------------------------------------------------------------------------------------------------
+
+ - name: Upload ZIP File to Docker
+ shell: bash
+ run: |
+ docker cp ${{ inputs._ZIP_FILE }} shop:/var/www/html/custom/plugins/MolliePayments.zip
+ docker exec shop bash -c 'cd /var/www/html/custom/plugins && unzip -qq -o MolliePayments.zip'
+
+ - name: Configure Shopware
+ shell: bash
+ run: |
+ docker exec shop bash -c 'php bin/console system:config:set core.loginRegistration.showAccountTypeSelection true'
+
+
+ - name: Prepare Shop for e2e tests
+ shell: bash
+ run: |
+ docker exec shop bash -c 'composer require --dev phpunit/phpunit:11.* -W'
+ docker exec shop bash -c 'composer config --no-plugins allow-plugins.wikimedia/composer-merge-plugin true'
+ docker exec shop bash -c 'composer config --no-plugins allow-plugins.php-http/discovery true'
+ docker exec shop bash -c 'composer config --json extra.merge-plugin "{\"include\":[\"custom/plugins/MolliePayments/composer.json\"], \"ignore-duplicates\":true}"'
+ docker exec shop bash -c 'composer require wikimedia/composer-merge-plugin:*'
+
+ - name: Install Plugin
+ shell: bash
+ run: |
+ docker exec shop bash -c 'php bin/console plugin:refresh'
+ docker exec shop bash -c 'php bin/console plugin:install MolliePayments --activate'
+ docker exec shop bash -c 'php bin/console cache:clear'
+
+ - name: Configure Plugin
+ if: ${{ inputs.MOLLIE_APIKEY_TEST != '' }}
+ shell: bash
+ run: |
+ docker exec shop bash -c 'php bin/console system:config:set MolliePayments.config.testMode true'
+ docker exec shop bash -c 'php bin/console system:config:set MolliePayments.config.debugMode true'
+ docker exec shop bash -c 'php bin/console system:config:set MolliePayments.config.liveApiKey ${{ inputs.MOLLIE_APIKEY_TEST }}'
+ docker exec shop bash -c 'php bin/console system:config:set MolliePayments.config.testApiKey ${{ inputs.MOLLIE_APIKEY_TEST }}'
+ docker exec shop bash -c 'php bin/console system:config:set MolliePayments.config.formatOrderNumber github_{ordernumber}'
+ docker exec shop bash -c 'php bin/console system:config:set core.mailerSettings.disableDelivery true'
+ docker exec shop bash -c 'php bin/console system:config:set core.mailerSettings.emailAgent ""'
+ # clean settings inheritance
+ docker exec shop bash -c "mysql -h 127.0.0.1 -u root -proot shopware -e \"DELETE FROM system_config WHERE sales_channel_id IS NOT NULL;\""
+ docker exec shop bash -c 'php bin/console cache:clear'
+
+ - name: Install Fixtures
+ shell: bash
+ run: |
+ docker exec shop bash -c 'php bin/console mollie:fixtures:load'
+
+ # --------------------------------------------------------------------------------------------------------------------------------------
+
+ - name: DAL Validate
+ shell: bash
+ run: |
+ docker exec shop bash -c 'php bin/console dal:validate'
+
+ # --------------------------------------------------------------------------------------------------------------------------------------
+ - name: Integration analyzer
+ shell: bash
+ run: |
+ docker exec shop bash -c 'cd custom/plugins/MolliePayments && make stan -B'
+
+ - name: Integration tests
+ shell: bash
+ run: |
+ docker exec shop bash -c 'cd custom/plugins/MolliePayments && make phpintegration -B'
+
+ - name: Functional tests
+ shell: bash
+ run: |
+ docker exec shop bash -c 'cd custom/plugins/MolliePayments && make behat -B'
+
+ - name: Install Cypress
+ if: ${{ inputs.RUN_CYPRESS == 'true' }}
+ shell: bash
+ run: cd tests/Cypress && make install -B
+
+ - name: Start Cypress
+ if: ${{ inputs.RUN_CYPRESS == 'true' && inputs.TESTRAIL == 'false' }}
+ shell: bash
+ run: |
+ cd tests/Cypress && \
+ make run shopware=${{ inputs.SHOPWARE }} storeApiKey=${{ inputs._STORE_API_KEY }} url=https://${{ inputs._SHOP_DOMAIN }} filters="${{ inputs.FILTERS }}"
+
+ - name: Start Cypress with TestRail
+ if: ${{ inputs.RUN_CYPRESS == 'true' && inputs.TESTRAIL == 'true' }}
+ shell: bash
+ run: |
+ cd tests/Cypress && \
+ CYPRESS_TESTRAIL_DOMAIN=${{ inputs.TESTRAIL_DOMAIN }} \
+ CYPRESS_TESTRAIL_USERNAME=${{ inputs.TESTRAIL_USERNAME }} \
+ CYPRESS_TESTRAIL_PASSWORD=${{ inputs.TESTRAIL_PASSWORD }} \
+ CYPRESS_TESTRAIL_PROJECT_ID=7 \
+ CYPRESS_TESTRAIL_MILESTONE_ID=15 \
+ CYPRESS_TESTRAIL_RUN_NAME="Github Workflow __datetime__, ${{ github.event.head_commit.message }}, Shopware ${{ inputs.SHOPWARE }}" \
+ CYPRESS_TESTRAIL_RUN_CLOSE=true \
+ make run shopware=${{ inputs.SHOPWARE }} storeApiKey=${{ inputs._STORE_API_KEY }} url=https://${{ inputs._SHOP_DOMAIN }}
+
+ # --------------------------------------------------------------------------------------------------------------------------------------
+
+ - name: Download Logs
+ if: ${{ inputs.RUN_CYPRESS == 'true' && always() }}
+ shell: bash
+ run: |
+ mkdir -p $(pwd)/tests/Cypress/cypress/logs/shopware
+ mkdir -p $(pwd)/tests/Cypress/cypress/logs/apache
+ docker cp shop:/var/www/html/var/log/. $(pwd)/tests/Cypress/cypress/logs/shopware
+ docker cp shop:/var/log/php/. $(pwd)/tests/Cypress/cypress/logs/apache
+
+ - name: Store Cypress Results
+ if: ${{ inputs.RUN_CYPRESS == 'true' && always() }}
+ uses: actions/upload-artifact@v4
+ with:
+ name: cypress_results_v${{ inputs.SHOPWARE }}${{ inputs.CYPRESS_RESULTS_SUFFIX }}
+ retention-days: 1
+ path: |
+ tests/Cypress/cypress/results
+ tests/Cypress/cypress/logs
+ tests/Cypress/cypress/videos
tests/Cypress/cypress/screenshots
\ No newline at end of file
diff --git a/.github/workflows/nightly_pipe.yml b/.github/workflows/nightly_pipe.yml
index 54acccc04..ad8904033 100644
--- a/.github/workflows/nightly_pipe.yml
+++ b/.github/workflows/nightly_pipe.yml
@@ -45,52 +45,24 @@ jobs:
fail-fast: false
matrix:
include:
- - shopware: '6.7.7.1'
+ - shopware: '6.7.4.0'
php: '8.3'
image: 'dockware/shopware'
- - shopware: '6.7.6.2'
- php: '8.3'
- image: 'dockware/shopware'
- - shopware: '6.7.5.1'
- php: '8.3'
- image: 'dockware/shopware'
- - shopware: '6.6.10.5'
- php: '8.3'
- image: 'dockware/play'
- - shopware: '6.6.9.0'
- php: '8.2'
- image: 'dockware/play'
- - shopware: '6.6.6.0'
- php: '8.2'
- image: 'dockware/play'
- - shopware: '6.5.8.12'
- php: '8.2'
- image: 'dockware/play'
- - shopware: '6.5.6.1'
- php: '8.2'
- image: 'dockware/play'
- - shopware: '6.5.5.2'
+ - shopware: '6.7.3.1'
php: '8.2'
- image: 'dockware/play'
- - shopware: '6.5.4.1'
- php: '8.2'
- image: 'dockware/play'
- - shopware: '6.5.3.3'
- php: '8.2'
- image: 'dockware/play'
- - shopware: '6.5.3.0'
+ image: 'dockware/shopware'
+ - shopware: '6.7.2.2'
php: '8.2'
- image: 'dockware/play'
- - shopware: '6.5.2.1'
+ image: 'dockware/shopware'
+ - shopware: '6.7.1.2'
php: '8.2'
- image: 'dockware/play'
- - shopware: '6.5.1.1'
+ image: 'dockware/shopware'
+ - shopware: '6.7.0.1'
php: '8.2'
- image: 'dockware/play'
- - shopware: '6.5.0.0'
+ image: 'dockware/shopware'
+ - shopware: '6.6.10.0'
php: '8.2'
image: 'dockware/play'
-
steps:
- name: Clone Code
diff --git a/.github/workflows/pr_pipe.yml b/.github/workflows/pr_pipe.yml
index 3647d0d8f..3f19ad138 100644
--- a/.github/workflows/pr_pipe.yml
+++ b/.github/workflows/pr_pipe.yml
@@ -14,7 +14,7 @@ jobs:
name: Review Pipeline
uses: ./.github/workflows/step_review.yml
with:
- PHP_VERSION: 8.0
+ PHP_VERSION: 8.2
# ------------------------------------------------------------------------------------------------------------------------
@@ -47,25 +47,12 @@ jobs:
fail-fast: false
matrix:
include:
- - shopware: '6.7.7.1'
+ - shopware: '6.7.4.0'
php: '8.3'
image: 'dockware/shopware'
- - shopware: '6.7.6.2'
+ - shopware: '6.6.10.9'
php: '8.3'
image: 'dockware/shopware'
- - shopware: '6.7.5.1'
- php: '8.3'
- image: 'dockware/shopware'
- - shopware: '6.6.10.5'
- php: '8.2'
- image: 'dockware/play'
- - shopware: '6.5.8.12'
- php: '8.2'
- image: 'dockware/play'
- - shopware: '6.5.5.2'
- php: '8.2'
- image: 'dockware/play'
-
steps:
- name: Clone Code
diff --git a/.gitignore b/.gitignore
index 235d4ea42..661d46a96 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,19 +8,14 @@ src/Resources/app/administration/node_modules
src/Resources/app/storefront/dist/storefront
src/Resources/app/storefront/node_modules
-
-src/Resources/public/administration/css/
-src/Resources/public/administration/js/
-src/Resources/public/administration/assets/
+*.js.LICENSE.txt
+config-*
/tests/Cypress/Cypress.env.json
/tests/Cypress/cypress/results
/src/Resources/app/administration/.stryker-tmp
/.phpunuhi/
-/src/Resources/public/static/css
-/src/Resources/public/static/js
-/src/Resources/public/js
-/src/Resources/public/mollie-payments.js
/node_modules/
/src/Resources/public/administration/.vite
composer.lock
-package-lock.json
\ No newline at end of file
+package-lock.json
+.tmp
diff --git a/CHANGELOG_de-DE.md b/CHANGELOG_de-DE.md
index 1658bfe6a..3489c8026 100644
--- a/CHANGELOG_de-DE.md
+++ b/CHANGELOG_de-DE.md
@@ -1,47 +1,26 @@
-# unreleased
-- Behoben: Webhooks für POS-Terminal-Zahlungen funktionieren nun korrekt.
-- Behoben: Beim Express Checkout werden nun nur die ausgewählten Radio-Button-Werte übermittelt, wenn das CustomProducts-Plugin verwendet wird. Zuvor wurden alle Optionen gesendet statt nur die gewählten.
-
-# 4.23.0
-- Neu: Vipps als Zahlungsmethode hinzugefügt.
-- Neu: MobilePay als Zahlungsmethode hinzugefügt.
-- Behoben: Änderungen an den Order-Daten durch Listener des `MollieOrderBuildEvent` werden nun korrekt für den Mollie-API-Request verwendet. Bisher wurde das Event zwar ausgelöst, die modifizierten Order-Daten jedoch ignoriert.
-- Apple Pay Direct: Telefonnummer wird nun auch bei Gast-Checkout korrekt übernommen, wenn sie nachträglich geändert wird.
-- Problem behoben mit verschiedenen Set-Plugins
-- Behoben: Page Extensions werden im Checkout nun korrekt erweitert statt überschrieben, um Kompatibilität mit anderen Plugins zu gewährleisten.
-- Neu: Beim Erstatten aller Line Items im Shopware Return Manager werden Versandkosten nun automatisch mit berücksichtigt. Manuell angegebene Versandkosten werden ebenfalls übernommen.
-- Behoben: Der Apple Pay Direct Button wird im Shopping-Cart-Offcanvas korrekt angezeigt, wenn die Versandart geändert wird.
-- Behoben: Custom Fields von anderen Herstellern werden beim Aktualisieren von OrderLineItems nicht mehr überschrieben.
-- Neu: Bulgarische Übersetzungen hinzugefügt.
-- Kroatische Übersetzungen aktualisiert.
-- Litauische Übersetzungen aktualisiert.
-- Routen mit Kundennummern in der URL wurden überarbeitet. Es wird nun der aktuell eingeloggte Kunde verwendet, anstatt der Kundenummer aus der URL
-
-# 4.22.1
-- Die Verarbeitung von Positionen mit negativen Beträgen wurde behoben.
-
-# 4.22.0
-- Behebung eines falschen Warenkorbpreises bei Apple Pay Direct in Kombination mit Netto-Anzeigepreise bei Kundengruppen. Hier wurden keine Steuern miteinberechnet.
-- Behebung eines Problems, bei dem in manchen zufälligen Fällen die Kreditkartenfelder nicht funktionieren. (mollie.js defer-sync Laden wurde entfernt).
-- Wenn ein Kunde die Zahlungsart eines Abonnements ändert, werden alle älteren, noch stornierbaren Zahlungen automatisch abgebrochen.
-- Die Kompatibilität mit dem Plugin „Zusatzoptionen/Garantien“ wurde implementiert.
-- Kunden mit bestehendem Abonnement haben nun eine Übersichtsseite in der Administration zum Kündigen ihrer Abonnements.
-- Die Darstellung der Zahlarten in älteren Shopware-Versionen wurde korrigiert.
-- Der „Test API Keys“-Button in den Plugin-Einstellungen wurde für Shopware 6.7 korrigiert.
-- Die Zahlungsstatus-Aktion wurde versionsabhängig angepasst, sodass in älteren Shopware-Versionen wieder die korrekte Action verwendet wird.
-- iDEAL wurde zu iDEAL | Wero umbenannt.
-
-# 4.21.0
-- Versandkosten werden bei Erstattung über Shopware Return Management berücksichtig
+# 5.0.0
+- Zahlungsarten verwenden jetzt die Mollie Payments API.
+- Die minimale PHP-Version ist 8.2.
+- Die minimale Shopware-Version ist 6.6.10.x.
+- Order Events und Flows werden nicht mehr ausgelöst.
+- Neue Payment Flows wurden hinzugefügt.
+- Das Event ModifyCreatePaymentPayloadEvent wurde eingeführt, um die Anfrage vor der Erstellung einer Mollie-Zahlung anzupassen.
+- Alle zahlungsbezogenen Logs enthalten nun die Shopware-orderNumber.
+- Die URL zum Speichern des Kreditkarten-Tokens wird nicht mehr verwendet; übergebe stattdessen creditCardToken in der Checkout-Anfrage.
+- Die URL zum Speichern der Mandats-ID ist veraltet; übergebe mandateId als Body-Parameter in der Checkout-Anfrage.
+- Die URL zum Speichern der POS-Terminal-ID ist veraltet; übergebe terminalId als Body-Parameter in der Checkout-Anfrage.
+- Ein Produkt kann nun mehreren Gutschein-Kategorien zugeordnet werden.
+- Hinzugefügt: Order-bezogene Logeinträge werden nun in einem eigenen mollie-Verzeichnis abgelegt. Die Logdateien tragen ein Namensschema im Format order-
3)){if(c)return!0;if(v)return v<603;var R="",w,E,P,A;for(w=65;w<76;w++){switch(E=String.fromCharCode(w),w){case 66:case 69:case 70:case 72:P=3;break;case 68:case 71:P=4;break;default:P=2}for(A=0;A<47;A++)m.push({k:E+A,v:P})}for(m.sort(function(M,T){return T.v-M.v}),A=0;A >1,h=u===23?r(2,-24)-r(2,-77):0,b=s<0||s===0&&1/s<0?1:0,f=0,g,k,y;for(s=t(s),s!==s||s===1/0?(k=s!==s?1:0,g=v):(g=a(i(s)/n),y=r(2,-g),s*y<1&&(g--,y*=2),g+m>=1?s+=h/y:s+=h*r(2,1-m),s*y>=2&&(g++,y/=2),g+m>=v?(k=0,g=v):g+m>=1?(k=(s*y-1)*r(2,u),g+=m):(k=s*r(2,m-1)*r(2,u),g=0));u>=8;)c[f++]=k&255,k/=256,u-=8;for(g=g<0;)c[f++]=g&255,g/=256,p-=8;return c[f-1]|=b*128,c},l=function(s,u){var d=s.length,c=d*8-u-1,p=(1< 1?arguments[1]:void 0),M;M=M?M.next:P.first;)for(A(M.value,M.key,this);M&&M.removed;)M=M.previous},has:function(E){return!!R(this,E)}}),r(y,f?{get:function(E){var P=R(this,E);return P&&P.value},set:function(E,P){return S(this,E===0?0:E,P)}}:{add:function(E){return S(this,E=E===0?0:E,E)}}),d&&t(y,"size",{configurable:!0,get:function(){return _(this).size}}),k},setStrong:function(h,b,f){var g=b+" Iterator",k=m(b),y=m(g);l(h,b,function(_,S){v(this,{type:g,target:_,state:k(_),kind:S,last:null})},function(){for(var _=y(this),S=_.kind,R=_.last;R&&R.removed;)R=R.previous;return!_.target||!(_.last=R=R?R.next:_.state.first)?(_.target=null,s(void 0,!0)):s(S==="keys"?R.key:S==="values"?R.value:[R.key,R.value],!1)},f?"entries":"values",!f,!0),u(b)}},ys}var Mh;function Ij(){if(Mh)return yh;Mh=1;var e=Ia(),t=FP();return e("Map",function(r){return function(){return r(this,arguments.length?arguments[0]:void 0)}},t),yh}var Ph;function jj(){return Ph||(Ph=1,Ij()),kh}var Th={},_s,Ih;function VP(){if(Ih)return _s;Ih=1;var e=te(),t=Map.prototype;return _s={Map,set:e(t.set),get:e(t.get),has:e(t.has),remove:e(t.delete),proto:t},_s}var jh;function Cj(){if(jh)return Th;jh=1;var e=I(),t=te(),r=Fe(),a=rt(),i=ct(),n=VP(),o=Ye(),l=X(),s=n.Map,u=n.has,d=n.get,c=n.set,p=t([].push),v=o||l(function(){return s.groupBy("ab",function(m){return m}).get("a").length!==1});return e({target:"Map",stat:!0,forced:o||v},{groupBy:function(h,b){a(h),r(b);var f=new s,g=0;return i(h,function(k){var y=b(k,g++);u(f,y)?p(d(f,y),k):c(f,y,[k])}),f}}),Th}var Ch={},Ss,Oh;function BP(){if(Oh)return Ss;Oh=1;var e=Math.log;return Ss=Math.log1p||function(r){var a=+r;return a>-1e-8&&a<1e-8?a-a*a/2:e(1+a)},Ss}var zh;function Oj(){if(zh)return Ch;zh=1;var e=I(),t=BP(),r=Math.acosh,a=Math.log,i=Math.sqrt,n=Math.LN2,o=!r||Math.floor(r(Number.MAX_VALUE))!==710||r(1/0)!==1/0;return e({target:"Math",stat:!0,forced:o},{acosh:function(s){var u=+s;return u<1?NaN:u>9490626562425156e-8?a(u)+n:t(u-1+i(u-1)*i(u+1))}}),Ch}var Dh={},xh;function zj(){if(xh)return Dh;xh=1;var e=I(),t=Math.asinh,r=Math.log,a=Math.sqrt;function i(o){var l=+o;return!isFinite(l)||l===0?l:l<0?-i(-l):r(l+a(l*l+1))}var n=!(t&&1/t(0)>0);return e({target:"Math",stat:!0,forced:n},{asinh:i}),Dh}var qh={},Nh;function Dj(){if(Nh)return qh;Nh=1;var e=I(),t=Math.atanh,r=Math.log,a=!(t&&1/t(-0)<0);return e({target:"Math",stat:!0,forced:a},{atanh:function(n){var o=+n;return o===0?o:r((1+o)/(1-o))/2}}),qh}var Lh={},Fh;function xj(){if(Fh)return Lh;Fh=1;var e=I(),t=xu(),r=Math.abs,a=Math.pow;return e({target:"Math",stat:!0},{cbrt:function(n){var o=+n;return t(o)*a(r(o),1/3)}}),Lh}var Vh={},Bh;function qj(){if(Bh)return Vh;Bh=1;var e=I(),t=Math.floor,r=Math.log,a=Math.LOG2E;return e({target:"Math",stat:!0},{clz32:function(n){var o=n>>>0;return o?31-t(r(o+.5)*a):32}}),Vh}var Uh={},ws,$h;function ja(){if($h)return ws;$h=1;var e=Math.expm1,t=Math.exp;return ws=!e||e(10)>22025.465794806718||e(10)<22025.465794806718||e(-2e-17)!==-2e-17?function(a){var i=+a;return i===0?i:i>-1e-6&&i<1e-6?i+i*i/2:t(i)-1}:e,ws}var Hh;function Nj(){if(Hh)return Uh;Hh=1;var e=I(),t=ja(),r=Math.cosh,a=Math.abs,i=Math.E,n=!r||r(710)===1/0;return e({target:"Math",stat:!0,forced:n},{cosh:function(l){var s=t(a(l)-1)+1;return(s+1/(s*i*i))*(i/2)}}),Uh}var Kh={},Wh;function Lj(){if(Wh)return Kh;Wh=1;var e=I(),t=ja();return e({target:"Math",stat:!0,forced:t!==Math.expm1},{expm1:t}),Kh}var Gh={},Yh;function Fj(){if(Yh)return Gh;Yh=1;var e=I(),t=TP();return e({target:"Math",stat:!0},{fround:t}),Gh}var Qh={},Zh;function Vj(){if(Zh)return Qh;Zh=1;var e=I(),t=PP(),r=.0009765625,a=65504,i=6103515625e-14;return e({target:"Math",stat:!0},{f16round:function(o){return t(o,r,a,i)}}),Qh}var Jh={},Xh;function Bj(){if(Xh)return Jh;Xh=1;var e=I(),t=Math.hypot,r=Math.abs,a=Math.sqrt,i=!!t&&t(1/0,NaN)!==1/0;return e({target:"Math",stat:!0,arity:2,forced:i},{hypot:function(o,l){for(var s=0,u=0,d=arguments.length,c=0,p,v;u2?arguments[2]:!1)}}),Nf}var Bf={},Go,Uf;function jP(){if(Uf)return Go;Uf=1;var e=se(),t=ha(),r=St(),a=e.ArrayBuffer,i=e.TypeError;return Go=a&&t(a.prototype,"byteLength","get")||function(n){if(r(n)!=="ArrayBuffer")throw new i("ArrayBuffer expected");return n.byteLength},Go}var Yo,$f;function CP(){if($f)return Yo;$f=1;var e=se(),t=Ra(),r=jP(),a=e.DataView;return Yo=function(i){if(!t||r(i)!==0)return!1;try{return new a(i),!1}catch{return!0}},Yo}var Hf;function YI(){if(Hf)return Bf;Hf=1;var e=Ae(),t=ot(),r=CP(),a=ArrayBuffer.prototype;return e&&!("detached"in a)&&t(a,"detached",{configurable:!0,get:function(){return r(this)}}),Bf}var Kf={},Qo,Wf;function ra(){if(Wf)return Qo;Wf=1;var e=CP(),t=TypeError;return Qo=function(r){if(e(r))throw new t("ArrayBuffer is detached");return r},Qo}var Zo,Gf;function OP(){if(Gf)return Zo;Gf=1;var e=se(),t=xr();return Zo=function(r){if(t){try{return e.process.getBuiltinModule(r)}catch{}try{return Function('return require("'+r+'")')()}catch{}}},Zo}var Jo,Yf;function qu(){if(Yf)return Jo;Yf=1;var e=se(),t=X(),r=Wt(),a=wa(),i=e.structuredClone;return Jo=!!i&&!t(function(){if(a==="DENO"&&r>92||a==="NODE"&&r>94||a==="BROWSER"&&r>97)return!1;var n=new ArrayBuffer(8),o=i(n,{transfer:[n]});return n.byteLength!==0||o.byteLength!==8}),Jo}var Xo,Qf;function zP(){if(Qf)return Xo;Qf=1;var e=se(),t=OP(),r=qu(),a=e.structuredClone,i=e.ArrayBuffer,n=e.MessageChannel,o=!1,l,s,u,d;if(r)o=function(c){a(c,{transfer:[c]})};else if(i)try{n||(l=t("worker_threads"),l&&(n=l.MessageChannel)),n&&(s=new n,u=new i(2),d=function(c){s.port1.postMessage(null,[c])},u.byteLength===2&&(d(u),u.byteLength===0&&(o=d)))}catch{}return Xo=o,Xo}var es,Zf;function DP(){if(Zf)return es;Zf=1;var e=se(),t=te(),r=ha(),a=Ea(),i=ra(),n=jP(),o=zP(),l=qu(),s=e.structuredClone,u=e.ArrayBuffer,d=e.DataView,c=Math.min,p=u.prototype,v=d.prototype,m=t(p.slice),h=r(p,"resizable","get"),b=r(p,"maxByteLength","get"),f=t(v.getInt8),g=t(v.setInt8);return es=(l||o)&&function(k,y,_){var S=n(k),R=y===void 0?S:a(y),w=!h||!h(k),E;if(i(k),l&&(k=s(k,{transfer:[k]}),S===R&&(_||w)))return k;if(S>=R&&(!_||w))E=m(k,0,R);else{var P=_&&!w&&b?{maxByteLength:b(k)}:void 0;E=new u(R,P);for(var A=new d(k),M=new d(E),T=c(R,S),C=0;C