Skip to content

Commit ec6b96e

Browse files
committed
Added option to not select ideal issuer in the magento checkout
1 parent 06eaeb8 commit ec6b96e

File tree

11 files changed

+52
-15
lines changed

11 files changed

+52
-15
lines changed

Api/Config/ConfigInterface.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ interface ConfigInterface
4545
public const XML_PATH_PAYMENT_GIFTCARD_PROFILE = 'payment/cm_payments_giftcard/profile';
4646
public const XML_PATH_PAYMENT_KLARNA_MANUAL_CAPTURE = 'payment/cm_payments_klarna/manual_capture';
4747
public const XML_PATH_PAYMENT_CM_PAYMENTS_PROFILE = 'payment/cm_payments/profile';
48+
public const XML_PATH_PAYMENT_IDEAL_ENABLE_ISSUER_SELECTION = 'payment/cm_payments_ideal/enable_issuer_selection';
4849

4950
/**
5051
* Checks that extension is enabled
@@ -280,4 +281,9 @@ public function getAdjustmentFeeName(): ?string;
280281
* @return bool
281282
*/
282283
public function isLogAllRestApiCalls(): bool;
284+
285+
/**
286+
* @return bool
287+
*/
288+
public function isIdealIssuerSelectionEnabled(): bool;
283289
}

Api/GuestPaymentMethodManagementInterface.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ public function getPaymentMethods(string $cartId, ?AddressInterface $shippingAdd
3535

3636
/**
3737
* @param string $cartId
38-
* @return \CM\Payments\Client\Api\IdealIssuerInterface[]
38+
* @return \CM\Payments\Client\Api\IdealIssuerInterface[]|bool
3939
*
4040
* @throws InputException
4141
* @throws StateException
4242
* @throws NoSuchEntityException
4343
*/
44-
public function getIbanIssuers(string $cartId): array;
44+
public function getIbanIssuers(string $cartId);
4545
}

Api/PaymentMethodManagementInterface.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ public function getPaymentMethods(int $cartId, ?AddressInterface $shippingAddres
3535

3636
/**
3737
* @param int $cartId
38-
* @return \CM\Payments\Client\Api\IdealIssuerInterface[]
38+
* @return \CM\Payments\Client\Api\IdealIssuerInterface[]|bool
3939
*
4040
* @throws InputException
4141
* @throws StateException
4242
* @throws NoSuchEntityException
4343
*/
44-
public function getIbanIssuers(int $cartId): array;
44+
public function getIbanIssuers(int $cartId);
4545
}

Config/Config.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,16 @@ public function getIsKlarnaManualCapture(): bool
514514
return $manualCapture === '1' || $manualCapture === true;
515515
}
516516

517+
public function isIdealIssuerSelectionEnabled(): bool
518+
{
519+
return $this->getConfig(
520+
self::XML_PATH_PAYMENT_IDEAL_ENABLE_ISSUER_SELECTION,
521+
ScopeInterface::SCOPE_STORES,
522+
(string)$this->storeManager->getStore()->getId(),
523+
true
524+
);
525+
}
526+
517527
/**
518528
* Get config value by path
519529
*

Service/Payment/Request/Part/IdealDetails.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,12 @@ public function process(
2929
}
3030

3131
$value = $this->getSelectedIssuer($order);
32-
$paymentCreate->setIdealDetails([
33-
'issuer_id' => $value
34-
]);
32+
33+
if (!empty($value)) {
34+
$paymentCreate->setIdealDetails([
35+
'issuer_id' => $value
36+
]);
37+
}
3538

3639
return $paymentCreate;
3740
}

Webapi/GuestPaymentMethodManagement.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public function getPaymentMethods(
5555
/**
5656
* {@inheritDoc}
5757
*/
58-
public function getIbanIssuers(string $cartId): array
58+
public function getIbanIssuers(string $cartId)
5959
{
6060
$quoteId = $this->maskedQuoteIdToQuoteId->execute($cartId);
6161

Webapi/PaymentMethodManagement.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,12 @@ public function getPaymentMethods(
101101
/**
102102
* {@inheritDoc}
103103
*/
104-
public function getIbanIssuers(int $cartId): array
104+
public function getIbanIssuers(int $cartId)
105105
{
106+
if (!$this->configService->isIdealIssuerSelectionEnabled()) {
107+
return false;
108+
}
109+
106110
if (!$this->configService->isAvailablePaymentMethodsCheckEnabled()) {
107111
$issuers = [];
108112

etc/adminhtml/system.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,16 @@
297297
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
298298
<config_path>payment/cm_payments_ideal/active</config_path>
299299
</field>
300+
<field id="enable_issuer_selection" translate="label comment" type="select" sortOrder="35" showInDefault="1" showInWebsite="1"
301+
showInStore="1" canRestore="1">
302+
<label>Enable Issuer Select</label>
303+
<comment><![CDATA[Enable Ideal Issuer Checkout Selection (Deprecated)]]></comment>
304+
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
305+
<config_path>payment/cm_payments_ideal/enable_issuer_selection</config_path>
306+
<depends>
307+
<field id="active">1</field>
308+
</depends>
309+
</field>
300310
<field id="title" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="1"
301311
showInStore="1" canRestore="1">
302312
<label>Title</label>

etc/config.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
</cm_payments>
5353
<cm_payments_ideal>
5454
<active>0</active>
55+
<enable_issuer_selection>1</enable_issuer_selection>
5556
<mode>direct</mode>
5657
<model>CMPaymentsIdealFacade</model>
5758
<order_status>pending</order_status>

view/frontend/web/js/view/payment/method-renderer/ideal.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,13 @@ define([
4242

4343
var self = this;
4444

45-
getIssuers().done(function(issuers) {
46-
self.issuers(issuers);
45+
getIssuers().done(function (issuers) {
46+
if ((issuers !== undefined) && (issuers.length > 0)) {
47+
$('#iban-select').show();
48+
$('#iban-select > form > select').attr('data-validate', "{required:true}");
49+
self.issuers(issuers);
50+
}
51+
4752
$('#iban-select').trigger('processStop');
4853
});
4954

0 commit comments

Comments
 (0)