From 160650a1d3e605837674ce16ee5beabf26775a22 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 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/RapidDirectGateway.php b/src/RapidDirectGateway.php index 28cfce7..4e11ffd 100644 --- a/src/RapidDirectGateway.php +++ b/src/RapidDirectGateway.php @@ -135,6 +135,10 @@ public function setPassword($value) */ public function purchase(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\RapidDirectPurchaseRequest', $parameters); } @@ -152,6 +156,10 @@ 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); }