From dcd411ddccf8b812156a1334d4331caa487bd0ec Mon Sep 17 00:00:00 2001 From: Kristian Williams Date: Tue, 11 Jul 2023 07:15:57 +0000 Subject: [PATCH] - Fixed broken `AbstractPaymentRequest::setMode()` method. - Added support for iDEAL bank codes. --- lib/Ogone/AbstractPaymentRequest.php | 29 ++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/lib/Ogone/AbstractPaymentRequest.php b/lib/Ogone/AbstractPaymentRequest.php index 2fa49a3..fc2d363 100644 --- a/lib/Ogone/AbstractPaymentRequest.php +++ b/lib/Ogone/AbstractPaymentRequest.php @@ -18,6 +18,9 @@ abstract class AbstractPaymentRequest extends AbstractRequest const MODE_TEST = 'test'; const MODE_PRODUCTION = 'production'; + const TEST = ''; + const PRODUCTION = ''; + /** * Set Mode * @@ -27,9 +30,9 @@ abstract class AbstractPaymentRequest extends AbstractRequest public function setMode($mode) { if ($mode === self::MODE_TEST) { - return $this->setOgoneUri(self::TEST); + return $this->setOgoneUri(static::TEST); } elseif ($mode === self::MODE_PRODUCTION) { - return $this->setOgoneUri(self::PRODUCTION); + return $this->setOgoneUri(static::PRODUCTION); } throw new InvalidArgumentException('Invalid mode parameter'); @@ -215,6 +218,10 @@ public function setBrand($brand) { $this->parameters['brand'] = $brand; + if (strtolower($brand) !== 'ideal') { + $this->setIssuer(null); + } + return $this; } @@ -227,6 +234,24 @@ public function setPm($pm) { $this->parameters['pm'] = $pm; + if (!str_starts_with(strtolower($pm), 'ideal')) { + $this->setIssuer(null); + } + + return $this; + } + + public function setIssuer(?string $issuerId) + { + if ($issuerId === null) { + unset($this->parameters['issuerid']); + } else { + $this->setBrand("IDEAL") + ->setPm("IDEAL"); + + $this->parameters["issuerid"] = $issuerId; + } + return $this; }