Skip to content

Commit edfeaba

Browse files
Merge pull request #838 from mollie/release/2.42.1
Release/2.42.1
2 parents c720af6 + dfc40b6 commit edfeaba

23 files changed

+253
-281
lines changed

.github/workflows/end-2-end-test.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,20 @@ jobs:
5151
include:
5252
- PHP_VERSION: php74-fpm
5353
MAGENTO_VERSION: 2.3.7-p4
54+
NO_API_KEY_TEST: false
5455
- PHP_VERSION: php82-fpm
5556
MAGENTO_VERSION: 2.4.6-p5
57+
NO_API_KEY_TEST: false
58+
- PHP_VERSION: php74-fpm
59+
MAGENTO_VERSION: 2.3.7-p4
60+
NO_API_KEY_TEST: true
5661
runs-on: ubuntu-latest
5762
env:
5863
PHP_VERSION: ${{ matrix.PHP_VERSION }}
5964
MAGENTO_VERSION: ${{ matrix.MAGENTO_VERSION }}
6065
MOLLIE_API_KEY_TEST: ${{ secrets.MOLLIE_API_KEY_TEST }}
6166
NGROK_AUTHTOKEN: ${{ secrets.NGROK_AUTHTOKEN }}
67+
NO_API_KEY_TEST: ${{ matrix.NO_API_KEY_TEST }}
6268
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
6369
CYPRESS_TESTRAIL_DOMAIN: ${{ secrets.TESTRAIL_DOMAIN }}
6470
CYPRESS_TESTRAIL_USERNAME: ${{ secrets.TESTRAIL_USERNAME }}
@@ -92,11 +98,17 @@ jobs:
9298
run: |
9399
docker exec magento-project-community-edition php /data/merge-config.php
94100
docker exec magento-project-community-edition ./retry "php bin/magento module:enable Mollie_Payment"
95-
docker exec magento-project-community-edition ./retry "php bin/magento setup:upgrade --no-interaction"
101+
docker exec magento-project-community-edition ./retry "php bin/magento setup:upgrade --keep-generated --no-interaction"
96102
docker exec magento-project-community-edition /bin/bash /data/configure-mollie.sh
97103
docker exec magento-project-community-edition ./retry "bin/magento config:set payment/mollie_general/use_webhooks custom_url"
98104
docker exec magento-project-community-edition ./retry "bin/magento config:set payment/mollie_general/custom_webhook_url ${{ env.magento_url }}/mollie/checkout/webhook"
99105
106+
- name: Configure Mollie
107+
run: |
108+
if [ ${{ matrix.NO_API_KEY_TEST }} == 'false' ]; then
109+
docker exec magento-project-community-edition /bin/bash /data/configure-mollie.sh
110+
fi
111+
100112
- name: Prepare Magento
101113
run: |
102114
docker exec magento-project-community-edition /bin/bash ./change-base-url https://magento.test/

.github/workflows/integration-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
run: docker cp $(pwd) magento-project-community-edition:/data/extensions/ && docker exec magento-project-community-edition ./install-composer-package mollie/magento2:@dev
3131

3232
- name: Activate the extension
33-
run: docker exec magento-project-community-edition ./retry "php bin/magento module:enable Mollie_Payment && php bin/magento setup:upgrade"
33+
run: docker exec magento-project-community-edition ./retry "php bin/magento module:enable Mollie_Payment && php bin/magento setup:upgrade --keep-generated"
3434

3535
- name: Run tests
3636
run: docker exec magento-project-community-edition bash -c "cd /data/dev/tests/integration/ && /data/vendor/bin/phpunit -c /data/dev/tests/integration/phpunit.xml"

.github/workflows/phpstan.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
run: docker exec magento-project-community-edition ./install-composer-package mollie/magento2:@dev
3838

3939
- name: Activate the extension
40-
run: docker exec magento-project-community-edition ./retry "php bin/magento module:enable Mollie_Payment && php bin/magento setup:upgrade && php bin/magento setup:di:compile"
40+
run: docker exec magento-project-community-edition ./retry "php bin/magento module:enable Mollie_Payment && php bin/magento setup:upgrade --keep-generated && php bin/magento setup:di:compile"
4141

4242
- name: Run PHPStan
4343
continue-on-error: ${{ matrix.PHPSTAN_LEVEL == 2 }}

.github/workflows/templates/docker-compose.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ services:
3434
links:
3535
- "nginx-proxy:magento.test"
3636
environment:
37+
- NO_API_KEY_TEST
3738
- CYPRESS_TESTRAIL_DOMAIN
3839
- CYPRESS_TESTRAIL_USERNAME
3940
- CYPRESS_TESTRAIL_PASSWORD

.github/workflows/templates/magento/configure-mollie.sh

Lines changed: 39 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -9,67 +9,59 @@ if [ -z "$MOLLIE_API_KEY_TEST" ]; then
99
fi
1010

1111
# General configuration
12-
bin/magento config:set payment/mollie_general/profileid pfl_8yCABHRz37 &
13-
magerun2 config:store:set payment/mollie_general/apikey_test $MOLLIE_API_KEY_TEST --encrypt &
14-
bin/magento config:set payment/mollie_general/enabled 1 &
15-
bin/magento config:set payment/mollie_general/type test &
12+
bin/magento config:set payment/mollie_general/profileid pfl_8yCABHRz37
13+
magerun2 config:store:set payment/mollie_general/apikey_test $MOLLIE_API_KEY_TEST --encrypt
14+
bin/magento config:set payment/mollie_general/enabled 1
15+
bin/magento config:set payment/mollie_general/type test
1616

1717
# Enable all payment methods
18-
bin/magento config:set payment/mollie_methods_applepay/active 1 &
19-
bin/magento config:set payment/mollie_methods_banktransfer/active 1 &
20-
bin/magento config:set payment/mollie_methods_billie/active 1 &
21-
bin/magento config:set payment/mollie_methods_blik/active 1 &
22-
bin/magento config:set payment/mollie_methods_creditcard/active 1 &
23-
bin/magento config:set payment/mollie_methods_giftcard/active 1 &
24-
bin/magento config:set payment/mollie_methods_ideal/active 1 &
25-
bin/magento config:set payment/mollie_methods_kbc/active 1 &
26-
bin/magento config:set payment/mollie_methods_klarnasliceit/active 1 &
27-
bin/magento config:set payment/mollie_methods_paypal/active 1 &
28-
bin/magento config:set payment/mollie_methods_przelewy24/active 1 &
29-
bin/magento config:set payment/mollie_methods_payconiq/active 1 &
30-
bin/magento config:set payment/mollie_methods_alma/active 1 &
31-
bin/magento config:set payment/mollie_methods_bancontact/active 1 &
32-
bin/magento config:set payment/mollie_methods_bancomatpay/active 1 &
33-
bin/magento config:set payment/mollie_methods_belfius/active 1 &
34-
bin/magento config:set payment/mollie_methods_eps/active 1 &
35-
bin/magento config:set payment/mollie_methods_klarnapaylater/active 1 &
36-
bin/magento config:set payment/mollie_methods_paymentlink/active 1 &
37-
bin/magento config:set payment/mollie_methods_paysafecard/active 1 &
38-
bin/magento config:set payment/mollie_methods_pointofsale/active 1 &
39-
bin/magento config:set payment/mollie_methods_riverty/active 1 &
40-
bin/magento config:set payment/mollie_methods_satispay/active 1 &
41-
bin/magento config:set payment/mollie_methods_sofort/active 1 &
42-
bin/magento config:set payment/mollie_methods_trustly/active 1 &
43-
bin/magento config:set payment/mollie_methods_twint/active 1 &
18+
bin/magento config:set payment/mollie_methods_applepay/active 1
19+
bin/magento config:set payment/mollie_methods_banktransfer/active 1
20+
bin/magento config:set payment/mollie_methods_billie/active 1
21+
bin/magento config:set payment/mollie_methods_blik/active 1
22+
bin/magento config:set payment/mollie_methods_creditcard/active 1
23+
bin/magento config:set payment/mollie_methods_giftcard/active 1
24+
bin/magento config:set payment/mollie_methods_ideal/active 1
25+
bin/magento config:set payment/mollie_methods_kbc/active 1
26+
bin/magento config:set payment/mollie_methods_klarnasliceit/active 1
27+
bin/magento config:set payment/mollie_methods_paypal/active 1
28+
bin/magento config:set payment/mollie_methods_przelewy24/active 1
29+
bin/magento config:set payment/mollie_methods_payconiq/active 1
30+
bin/magento config:set payment/mollie_methods_alma/active 1
31+
bin/magento config:set payment/mollie_methods_bancontact/active 1
32+
bin/magento config:set payment/mollie_methods_bancomatpay/active 1
33+
bin/magento config:set payment/mollie_methods_belfius/active 1
34+
bin/magento config:set payment/mollie_methods_eps/active 1
35+
bin/magento config:set payment/mollie_methods_klarnapaylater/active 1
36+
bin/magento config:set payment/mollie_methods_paymentlink/active 1
37+
bin/magento config:set payment/mollie_methods_paysafecard/active 1
38+
bin/magento config:set payment/mollie_methods_pointofsale/active 1
39+
bin/magento config:set payment/mollie_methods_riverty/active 1
40+
bin/magento config:set payment/mollie_methods_satispay/active 1
41+
bin/magento config:set payment/mollie_methods_sofort/active 1
42+
bin/magento config:set payment/mollie_methods_trustly/active 1
43+
bin/magento config:set payment/mollie_methods_twint/active 1
4444

4545
# Enable Components
46-
bin/magento config:set payment/mollie_methods_creditcard/use_components 1 &
47-
48-
# Enable QR
49-
bin/magento config:set payment/mollie_methods_ideal/add_qr 1 &
50-
51-
# Disable webhooks
52-
bin/magento config:set payment/mollie_general/use_webhooks disabled &
46+
bin/magento config:set payment/mollie_methods_creditcard/use_components 1
5347

5448
# Configure currency for the swiss store view
55-
bin/magento config:set currency/options/allow EUR,CHF,PLN &
49+
bin/magento config:set currency/options/allow EUR,CHF,PLN
5650

5751
# Swiss scope
58-
bin/magento config:set currency/options/default CHF --scope=ch &
59-
bin/magento config:set payment/mollie_general/currency 0 --scope=ch &
52+
bin/magento config:set currency/options/default CHF --scope=ch --scope-code=ch
53+
bin/magento config:set payment/mollie_general/currency 0 --scope=ch --scope-code=ch
6054

6155
# Polish scope
62-
bin/magento config:set currency/options/default PLN --scope=pl &
63-
bin/magento config:set payment/mollie_general/currency 0 --scope=pl &
56+
bin/magento config:set currency/options/default PLN --scope=pl --scope-code=pl
57+
bin/magento config:set payment/mollie_general/currency 0 --scope=pl --scope-code=pl
6458

6559
# Disable the use of the base currency
66-
bin/magento config:set payment/mollie_general/currency 0 &
60+
bin/magento config:set payment/mollie_general/currency 0
6761

6862
# Insert rates, otherwise the currency switcher won't show
69-
magerun2 db:query 'INSERT INTO `directory_currency_rate` (`currency_from`, `currency_to`, `rate`) VALUES ("EUR", "PLN", 1.0);' &
70-
magerun2 db:query 'INSERT INTO `directory_currency_rate` (`currency_from`, `currency_to`, `rate`) VALUES ("EUR", "CHF", 1.0);' &
71-
72-
wait
63+
magerun2 db:query 'INSERT INTO `directory_currency_rate` (`currency_from`, `currency_to`, `rate`) VALUES ("EUR", "PLN", 1.0);'
64+
magerun2 db:query 'INSERT INTO `directory_currency_rate` (`currency_from`, `currency_to`, `rate`) VALUES ("EUR", "CHF", 1.0);'
7365

7466
if grep -q Magento_TwoFactorAuth "app/etc/config.php"; then
7567
./retry "php bin/magento module:disable Magento_TwoFactorAuth -f"

.github/workflows/unit-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
run: docker cp $(pwd) magento-project-community-edition:/data/extensions/ && docker exec magento-project-community-edition ./install-composer-package mollie/magento2:@dev
3131

3232
- name: Activate the extension
33-
run: docker exec magento-project-community-edition ./retry "php bin/magento module:enable Mollie_Payment && php bin/magento setup:upgrade && php bin/magento setup:di:compile"
33+
run: docker exec magento-project-community-edition ./retry "php bin/magento module:enable Mollie_Payment && php bin/magento setup:upgrade --keep-generated && php bin/magento setup:di:compile"
3434

3535
- name: Run tests
3636
run: docker exec magento-project-community-edition bash -c "vendor/bin/phpunit extensions/*/Test/Unit"

Controller/ApplePay/PlaceOrder.php

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
use Magento\Sales\Api\Data\OrderInterface;
1919
use Magento\Sales\Api\OrderRepositoryInterface;
2020
use Mollie\Payment\Api\Webapi\PaymentTokenRequestInterface;
21+
use Mollie\Payment\Config;
2122
use Mollie\Payment\Service\PaymentToken\Generate;
23+
use Mollie\Payment\Service\Quote\SetRegionFromApplePayAddress;
2224

2325
class PlaceOrder extends Action
2426
{
@@ -56,6 +58,14 @@ class PlaceOrder extends Action
5658
* @var OrderRepositoryInterface
5759
*/
5860
private $orderRepository;
61+
/**
62+
* @var SetRegionFromApplePayAddress
63+
*/
64+
private $setRegionFromApplePayAddress;
65+
/**
66+
* @var Config
67+
*/
68+
private $config;
5969

6070
public function __construct(
6171
Context $context,
@@ -64,7 +74,9 @@ public function __construct(
6474
QuoteManagement $quoteManagement,
6575
Session $checkoutSession,
6676
Generate $paymentToken,
67-
OrderRepositoryInterface $orderRepository
77+
SetRegionFromApplePayAddress $setRegionFromApplePayAddress,
78+
OrderRepositoryInterface $orderRepository,
79+
Config $config
6880
) {
6981
parent::__construct($context);
7082

@@ -74,6 +86,8 @@ public function __construct(
7486
$this->checkoutSession = $checkoutSession;
7587
$this->paymentToken = $paymentToken;
7688
$this->orderRepository = $orderRepository;
89+
$this->setRegionFromApplePayAddress = $setRegionFromApplePayAddress;
90+
$this->config = $config;
7791
}
7892

7993
public function execute()
@@ -104,8 +118,22 @@ public function execute()
104118
$this->cartRepository->save($cart);
105119
$cart->getPayment()->addData(['method' => 'mollie_methods_applepay']);
106120

107-
/** @var OrderInterface $order */
108-
$order = $this->quoteManagement->submit($cart);
121+
$response = $this->resultFactory->create(ResultFactory::TYPE_JSON);
122+
123+
try {
124+
/** @var OrderInterface $order */
125+
$order = $this->quoteManagement->submit($cart);
126+
} catch (\Exception $exception) {
127+
$this->config->addToLog('error', [
128+
'message' => 'Error while try place Apple Pay order',
129+
'quote_id' => $cart->getId(),
130+
'exception' => $exception->getMessage(),
131+
'trace' => $exception->getTraceAsString(),
132+
]);
133+
134+
return $response->setData(['error' => true, 'error_message' => $exception->getMessage()]);
135+
}
136+
109137
$order->getPayment()->setAdditionalInformation(
110138
'applepay_payment_token',
111139
$this->getRequest()->getParam('applePayPaymentToken')
@@ -126,8 +154,7 @@ public function execute()
126154
->setLastRealOrderId($order->getIncrementId())
127155
->setLastOrderId($order->getId());
128156

129-
$response = $this->resultFactory->create(ResultFactory::TYPE_JSON);
130-
return $response->setData(['url' => $url]);
157+
return $response->setData(['url' => $url, 'error' => false, 'error_message' => '']);
131158
}
132159

133160
private function updateAddress(AddressInterface $address, array $input)
@@ -141,6 +168,8 @@ private function updateAddress(AddressInterface $address, array $input)
141168
AddressInterface::KEY_POSTCODE => $input['postalCode'],
142169
]);
143170

171+
$this->setRegionFromApplePayAddress->execute($address, $input);
172+
144173
if (isset($input['phoneNumber'])) {
145174
$address->setTelephone($input['phoneNumber']);
146175
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
/*
3+
* Copyright Magmodules.eu. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Mollie\Payment\Model\Adminhtml\Source;
8+
9+
use Magento\Sales\Model\Config\Source\Order\Status;
10+
11+
class PendingPaymentStatus extends Status
12+
{
13+
/**
14+
* @var string
15+
*/
16+
protected $_stateStatuses = \Magento\Sales\Model\Order::STATE_PENDING_PAYMENT;
17+
}

Model/MollieConfigProvider.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public function getMethodInstance($code)
141141
public function getConfig(): array
142142
{
143143
// Do not load the config when on the cart page.
144-
if ($this->request->getControllerName() === 'cart') {
144+
if (!$this->config->isModuleEnabled() || $this->request->getControllerName() === 'cart') {
145145
return [];
146146
}
147147

@@ -223,10 +223,16 @@ public function getActiveMethods(CartInterface $cart = null): array
223223

224224
private function getIssuers(string $code, array $config): array
225225
{
226-
$mollieApi = $this->mollieApiClient->loadByStore();
227226
$issuerListType = $this->config->getIssuerListType($code, $this->storeManager->getStore()->getId());
228227
$config['payment']['issuersListType'][$code] = $issuerListType;
229-
$config['payment']['issuers'][$code] = $this->getIssuers->execute($mollieApi, $code, $issuerListType);
228+
229+
try {
230+
$mollieApi = $this->mollieApiClient->loadByStore();
231+
$config['payment']['issuers'][$code] = $this->getIssuers->execute($mollieApi, $code, $issuerListType);
232+
} catch (\Exception $exception) {
233+
$this->config->addTolog('error', 'Unable to load issuers: ' . $exception->getMessage());
234+
$config['payment']['issuers'][$code] = [];
235+
}
230236

231237
return $config;
232238
}

Service/Mollie/Wrapper/MollieApiClientFallbackWrapper.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,17 @@
22

33
namespace Mollie\Payment\Service\Mollie\Wrapper;
44

5+
use Mollie\Api\Exceptions\ApiException;
6+
use Mollie\Api\Exceptions\IncompatiblePlatform;
57
use Mollie\Api\MollieApiClient;
68

79
class MollieApiClientFallbackWrapper extends MollieApiClient
810
{
11+
/**
12+
* @throws ApiException If there's an API error during initialization.
13+
* @throws IncompatiblePlatform If the platform is not compatible.
14+
* @return void
15+
*/
916
public function initializeEndpoints()
1017
{
1118
parent::initializeEndpoints();

0 commit comments

Comments
 (0)