subjectReader = $subjectReader; } /** * @inheritdoc */ public function handle(array $handlingSubject, array $response) { $paymentDO = $this->subjectReader->readPayment($handlingSubject); /** * @TODO after changes in sales module should be refactored for new interfaces */ /** @var OrderPaymentInterface $payment */ $payment = $paymentDO->getPayment(); ContextHelper::assertOrderPayment($payment); /** @var Transaction $transaction */ $transaction = $this->subjectReader->readTransaction($response); if ($payment->hasAdditionalInformation(self::LIABILITY_SHIFTED)) { // remove 3d secure details for reorder $payment->unsAdditionalInformation(self::LIABILITY_SHIFTED); $payment->unsAdditionalInformation(self::LIABILITY_SHIFT_POSSIBLE); } if (empty($transaction->threeDSecureInfo)) { return; } /** @var \Braintree\ThreeDSecureInfo $info */ $info = $transaction->threeDSecureInfo; $payment->setAdditionalInformation(self::LIABILITY_SHIFTED, $info->liabilityShifted ? 'Yes' : 'No'); $shiftPossible = $info->liabilityShiftPossible ? 'Yes' : 'No'; $payment->setAdditionalInformation(self::LIABILITY_SHIFT_POSSIBLE, $shiftPossible); } }