From 801e656aec712b68c5adf8323b0b193bfb68a71a Mon Sep 17 00:00:00 2001 From: eileen Date: Mon, 26 Nov 2018 17:36:54 +1300 Subject: [PATCH] Handle encrypted credit card details where supplied #9 Eway already supports encryptedCardNumber as a paramter. However, that relies on the calling code 'knowing' whether the card has been encrypted - which would not happen if a script blocker was in play and is hard for the calling code to adapt to generically. However, at this point in the code we know that if it is following the eway format for being encrypted then it has been encrypted. I would note that it is supported by the Request object not the credit card class but a) that is already the case, this just makes it a bit simpler to use and b) the encryptedCardNumber does not hold sensitive data in the same way that the 'card' parameters do. The upstream plan appears to be to have another class to handle this - in which case this bit of handling code and the code that interacts with it could be updated later to reflect that --- src/RapidDirectGateway.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/RapidDirectGateway.php b/src/RapidDirectGateway.php index 28cfce7..de54098 100644 --- a/src/RapidDirectGateway.php +++ b/src/RapidDirectGateway.php @@ -135,6 +135,9 @@ public function setPassword($value) */ public function purchase(array $parameters = []) { + if (is_array($parameters['card']) && isset($parameters['card']['number']) && substr($parameters['card']['number'], 0, 9) === 'eCrypted:') { + $parameters['encryptedCardNumber'] = $parameters['card']['number']; + } return $this->createRequest('\Omnipay\Eway\Message\RapidDirectPurchaseRequest', $parameters); } @@ -152,6 +155,9 @@ public function purchase(array $parameters = []) */ public function authorize(array $parameters = []) { + if (isset($parameters['card']['number']) && substr($parameters['card']['number'], 0, 9) === 'eCrypted:') { + $parameters['encryptedCardNumber'] = $parameters['card']['number']; + } return $this->createRequest('\Omnipay\Eway\Message\RapidDirectAuthorizeRequest', $parameters); }