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]; } }