Пример #1
0
 /**
  * Builds ENV request
  *
  * @param array $buildSubject
  * @return array
  */
 public function build(array $buildSubject)
 {
     $paymentDO = $this->subjectReader->readPayment($buildSubject);
     /** @var Payment $payment */
     $payment = $paymentDO->getPayment();
     return ['transaction_id' => $payment->getParentTransactionId() ?: $payment->getLastTransId()];
 }
 /**
  * @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);
 }
Пример #3
0
 /**
  * @inheritdoc
  */
 public function build(array $buildSubject)
 {
     $paymentDO = $this->subjectReader->readPayment($buildSubject);
     $order = $paymentDO->getOrder();
     $billingAddress = $order->getBillingAddress();
     return [self::CUSTOMER => [self::FIRST_NAME => $billingAddress->getFirstname(), self::LAST_NAME => $billingAddress->getLastname(), self::COMPANY => $billingAddress->getCompany(), self::PHONE => $billingAddress->getTelephone(), self::EMAIL => $billingAddress->getEmail()]];
 }
 /**
  * @inheritdoc
  */
 public function build(array $buildSubject)
 {
     $paymentDO = $this->subjectReader->readPayment($buildSubject);
     $payment = $paymentDO->getPayment();
     $extensionAttributes = $payment->getExtensionAttributes();
     $paymentToken = $extensionAttributes->getVaultPaymentToken();
     return ['amount' => $this->formatPrice($this->subjectReader->readAmount($buildSubject)), 'paymentMethodToken' => $paymentToken->getGatewayToken()];
 }
Пример #5
0
 /**
  * @inheritdoc
  */
 public function build(array $buildSubject)
 {
     $paymentDO = $this->subjectReader->readPayment($buildSubject);
     $payment = $paymentDO->getPayment();
     $transactionId = $payment->getCcTransId();
     if (!$transactionId) {
         throw new LocalizedException(__('No authorization transaction to proceed capture.'));
     }
     return [self::TRANSACTION_ID => $transactionId, PaymentDataBuilder::AMOUNT => $this->formatPrice($this->subjectReader->readAmount($buildSubject))];
 }
 /**
  * @inheritdoc
  */
 public function build(array $buildSubject)
 {
     $result = [];
     $paymentDO = $this->subjectReader->readPayment($buildSubject);
     $amount = $this->formatPrice($this->subjectReader->readAmount($buildSubject));
     if ($this->is3DSecureEnabled($paymentDO->getOrder(), $amount)) {
         $result['options'][Config::CODE_3DSECURE] = ['required' => true];
     }
     return $result;
 }
 /**
  * @inheritdoc
  */
 public function handle(array $handlingSubject, array $response)
 {
     $paymentDO = $this->subjectReader->readPayment($handlingSubject);
     /** @var \Braintree\Transaction $transaction */
     $transaction = $this->subjectReader->readTransaction($response);
     /** @var OrderPaymentInterface $payment */
     $payment = $paymentDO->getPayment();
     $payPal = $this->subjectReader->readPayPal($transaction);
     $payment->setAdditionalInformation(self::PAYMENT_ID, $payPal[self::PAYMENT_ID]);
     $payment->setAdditionalInformation(self::PAYER_EMAIL, $payPal[self::PAYER_EMAIL]);
 }
Пример #8
0
 /**
  * @inheritdoc
  */
 public function build(array $buildSubject)
 {
     $paymentDO = $this->subjectReader->readPayment($buildSubject);
     $payment = $paymentDO->getPayment();
     $order = $paymentDO->getOrder();
     $result = [self::AMOUNT => $this->formatPrice($this->subjectReader->readAmount($buildSubject)), self::PAYMENT_METHOD_NONCE => $payment->getAdditionalInformation(DataAssignObserver::PAYMENT_METHOD_NONCE), self::ORDER_ID => $order->getOrderIncrementId()];
     $merchantAccountId = $this->config->getValue(Config::KEY_MERCHANT_ACCOUNT_ID);
     if (!empty($merchantAccountId)) {
         $result[self::MERCHANT_ACCOUNT_ID] = $merchantAccountId;
     }
     return $result;
 }
Пример #9
0
 /**
  * @inheritdoc
  */
 public function handle(array $handlingSubject, array $response)
 {
     $paymentDO = $this->subjectReader->readPayment($handlingSubject);
     $transaction = $this->subjectReader->readTransaction($response);
     $payment = $paymentDO->getPayment();
     // add vault payment token entity to extension attributes
     $paymentToken = $this->getVaultPaymentToken($transaction);
     if (null !== $paymentToken) {
         $extensionAttributes = $this->getExtensionAttributes($payment);
         $extensionAttributes->setVaultPaymentToken($paymentToken);
     }
 }
Пример #10
0
 /**
  * Handles response
  *
  * @param array $handlingSubject
  * @param array $response
  * @return void
  */
 public function handle(array $handlingSubject, array $response)
 {
     $paymentDO = $this->subjectReader->readPayment($handlingSubject);
     /** @var \Braintree\Transaction $transaction */
     $transaction = $this->subjectReader->readTransaction($response);
     if (!isset($transaction->riskData)) {
         return;
     }
     $payment = $paymentDO->getPayment();
     ContextHelper::assertOrderPayment($payment);
     $payment->setAdditionalInformation(self::RISK_DATA_ID, $transaction->riskData->id);
     $payment->setAdditionalInformation(self::RISK_DATA_DECISION, $transaction->riskData->decision);
 }
 /**
  * @inheritdoc
  */
 public function build(array $buildSubject)
 {
     $result = [];
     if (!$this->config->hasFraudProtection()) {
         return $result;
     }
     $paymentDO = $this->subjectReader->readPayment($buildSubject);
     $payment = $paymentDO->getPayment();
     $data = $payment->getAdditionalInformation();
     if (isset($data[DataAssignObserver::DEVICE_DATA])) {
         $result[self::DEVICE_DATA] = $data[DataAssignObserver::DEVICE_DATA];
     }
     return $result;
 }
Пример #12
0
 /**
  * Handles response
  *
  * @param array $handlingSubject
  * @param array $response
  * @return void
  */
 public function handle(array $handlingSubject, array $response)
 {
     $paymentDO = $this->subjectReader->readPayment($handlingSubject);
     if ($paymentDO->getPayment() instanceof Payment) {
         /** @var \Braintree\Transaction $transaction */
         $transaction = $this->subjectReader->readTransaction($response);
         /** @var Payment $orderPayment */
         $orderPayment = $paymentDO->getPayment();
         $this->setTransactionId($orderPayment, $transaction);
         $orderPayment->setIsTransactionClosed($this->shouldCloseTransaction());
         $closed = $this->shouldCloseParentTransaction($orderPayment);
         $orderPayment->setShouldCloseParentTransaction($closed);
     }
 }
Пример #13
0
 /**
  * @inheritdoc
  */
 public function build(array $buildSubject)
 {
     $paymentDO = $this->subjectReader->readPayment($buildSubject);
     $order = $paymentDO->getOrder();
     $result = [];
     $billingAddress = $order->getBillingAddress();
     if ($billingAddress) {
         $result[self::BILLING_ADDRESS] = [self::FIRST_NAME => $billingAddress->getFirstname(), self::LAST_NAME => $billingAddress->getLastname(), self::COMPANY => $billingAddress->getCompany(), self::STREET_ADDRESS => $billingAddress->getStreetLine1(), self::EXTENDED_ADDRESS => $billingAddress->getStreetLine2(), self::LOCALITY => $billingAddress->getCity(), self::REGION => $billingAddress->getRegionCode(), self::POSTAL_CODE => $billingAddress->getPostcode(), self::COUNTRY_CODE => $billingAddress->getCountryId()];
     }
     $shippingAddress = $order->getShippingAddress();
     if ($shippingAddress) {
         $result[self::SHIPPING_ADDRESS] = [self::FIRST_NAME => $shippingAddress->getFirstname(), self::LAST_NAME => $shippingAddress->getLastname(), self::COMPANY => $shippingAddress->getCompany(), self::STREET_ADDRESS => $shippingAddress->getStreetLine1(), self::EXTENDED_ADDRESS => $shippingAddress->getStreetLine2(), self::LOCALITY => $shippingAddress->getCity(), self::REGION => $shippingAddress->getRegionCode(), self::POSTAL_CODE => $shippingAddress->getPostcode(), self::COUNTRY_CODE => $shippingAddress->getCountryId()];
     }
     return $result;
 }
 /**
  * @inheritdoc
  */
 public function handle(array $handlingSubject, array $response)
 {
     $paymentDO = $this->subjectReader->readPayment($handlingSubject);
     /** @var \Braintree\Transaction $transaction */
     $transaction = $this->subjectReader->readTransaction($response);
     /** @var OrderPaymentInterface $payment */
     $payment = $paymentDO->getPayment();
     $payment->setCcTransId($transaction->id);
     $payment->setLastTransId($transaction->id);
     //remove previously set payment nonce
     $payment->unsAdditionalInformation(DataAssignObserver::PAYMENT_METHOD_NONCE);
     foreach ($this->additionalInformationMapping as $item) {
         if (!isset($transaction->{$item})) {
             continue;
         }
         $payment->setAdditionalInformation($item, $transaction->{$item});
     }
 }
Пример #15
0
 /**
  * @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]);
 }
 /**
  * @inheritdoc
  */
 public function execute(array $commandSubject)
 {
     /** @var \Magento\Payment\Gateway\Data\PaymentDataObjectInterface $paymentDO */
     $paymentDO = $this->subjectReader->readPayment($commandSubject);
     /** @var \Magento\Sales\Api\Data\OrderPaymentInterface $paymentInfo */
     $paymentInfo = $paymentDO->getPayment();
     ContextHelper::assertOrderPayment($paymentInfo);
     $command = $this->getCommand($paymentInfo);
     $this->commandPool->get($command)->execute($commandSubject);
 }
Пример #17
0
 /**
  * Builds ENV request
  *
  * @param array $buildSubject
  * @return array
  */
 public function build(array $buildSubject)
 {
     $paymentDO = $this->subjectReader->readPayment($buildSubject);
     /** @var Payment $payment */
     $payment = $paymentDO->getPayment();
     $amount = null;
     try {
         $amount = $this->formatPrice($this->subjectReader->readAmount($buildSubject));
     } catch (\InvalidArgumentException $e) {
         // pass
     }
     /*
      * we should remember that Payment sets Capture txn id of current Invoice into ParentTransactionId Field
      * We should also support previous implementations of Magento Braintree -
      * and cut off '-capture' postfix from transaction ID to support backward compatibility
      */
     $txnId = str_replace('-' . TransactionInterface::TYPE_CAPTURE, '', $payment->getParentTransactionId());
     return ['transaction_id' => $txnId, PaymentDataBuilder::AMOUNT => $amount];
 }
Пример #18
0
 /**
  * Retrieve method configured value
  *
  * @param array $subject
  * @param int|null $storeId
  *
  * @return mixed
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function handle(array $subject, $storeId = null)
 {
     $paymentDO = $this->subjectReader->readPayment($subject);
     $payment = $paymentDO->getPayment();
     return $payment instanceof Payment && !(bool) $payment->getAmountPaid();
 }