1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Braintree\Gateway\Response;
- use Magento\Braintree\Gateway\Config\Config;
- use Magento\Braintree\Gateway\SubjectReader;
- use Magento\Payment\Gateway\Helper\ContextHelper;
- use Magento\Payment\Gateway\Response\HandlerInterface;
- use Magento\Sales\Api\Data\OrderPaymentInterface;
- /**
- * Class CardDetailsHandler
- */
- class CardDetailsHandler implements HandlerInterface
- {
- const CARD_TYPE = 'cardType';
- const CARD_EXP_MONTH = 'expirationMonth';
- const CARD_EXP_YEAR = 'expirationYear';
- const CARD_LAST4 = 'last4';
- const CARD_NUMBER = 'cc_number';
- /**
- * @var Config
- */
- private $config;
- /**
- * @var SubjectReader
- */
- private $subjectReader;
- /**
- * Constructor
- *
- * @param Config $config
- * @param SubjectReader $subjectReader
- */
- public function __construct(
- Config $config,
- SubjectReader $subjectReader
- ) {
- $this->config = $config;
- $this->subjectReader = $subjectReader;
- }
- /**
- * @inheritdoc
- */
- public function handle(array $handlingSubject, array $response)
- {
- $paymentDO = $this->subjectReader->readPayment($handlingSubject);
- $transaction = $this->subjectReader->readTransaction($response);
- /**
- * @TODO after changes in sales module should be refactored for new interfaces
- */
- $payment = $paymentDO->getPayment();
- ContextHelper::assertOrderPayment($payment);
- $creditCard = $transaction->creditCard;
- $payment->setCcLast4($creditCard[self::CARD_LAST4]);
- $payment->setCcExpMonth($creditCard[self::CARD_EXP_MONTH]);
- $payment->setCcExpYear($creditCard[self::CARD_EXP_YEAR]);
- $payment->setCcType($this->getCreditCardType($creditCard[self::CARD_TYPE]));
- // set card details to additional info
- $payment->setAdditionalInformation(self::CARD_NUMBER, 'xxxx-' . $creditCard[self::CARD_LAST4]);
- $payment->setAdditionalInformation(OrderPaymentInterface::CC_TYPE, $creditCard[self::CARD_TYPE]);
- }
- /**
- * Get type of credit card mapped from Braintree
- *
- * @param string $type
- * @return array
- */
- private function getCreditCardType($type)
- {
- $replaced = str_replace(' ', '-', strtolower($type));
- $mapper = $this->config->getCcTypesMapper();
- return $mapper[$replaced];
- }
- }
|