123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Paypal\Model\Payflow;
- /**
- * PayPal Website Payments Pro (Payflow Edition) implementation for payment method instances
- * This model was created because right now PayPal Direct and PayPal Express payment
- * (Payflow Edition) methods cannot have same abstract
- */
- class Pro extends \Magento\Paypal\Model\Pro
- {
- /**
- * Api model type
- *
- * @var string
- */
- protected $_apiType = \Magento\Paypal\Model\Api\PayflowNvp::class;
- /**
- * Config model type
- *
- * @var string
- */
- protected $_configType = \Magento\Paypal\Model\Config::class;
- /**
- * Payflow trx_id key in transaction info
- */
- const TRANSPORT_PAYFLOW_TXN_ID = 'payflow_trxid';
- /**
- * Refund a capture transaction
- *
- * @param \Magento\Framework\DataObject $payment
- * @param float $amount
- * @return void
- */
- public function refund(\Magento\Framework\DataObject $payment, $amount)
- {
- $captureTxnId = $this->_getParentTransactionId($payment);
- if ($captureTxnId) {
- $api = $this->getApi();
- $api->setAuthorizationId($captureTxnId);
- }
- parent::refund($payment, $amount);
- }
- /**
- * Is capture request needed on this transaction
- *
- * @return true
- */
- protected function _isCaptureNeeded()
- {
- return true;
- }
- /**
- * Get payflow transaction id from parent transaction
- *
- * @param \Magento\Framework\DataObject $payment
- * @return string
- */
- protected function _getParentTransactionId(\Magento\Framework\DataObject $payment)
- {
- if ($payment->getParentTransactionId()) {
- return $this->transactionRepository->getByTransactionId(
- $payment->getParentTransactionId(),
- $payment->getId(),
- $payment->getOrder()->getId()
- )->getAdditionalInformation(
- self::TRANSPORT_PAYFLOW_TXN_ID
- );
- }
- return $payment->getParentTransactionId();
- }
- /**
- * Import capture results to payment
- *
- * @param \Magento\Paypal\Model\Api\Nvp $api
- * @param \Magento\Sales\Model\Order\Payment $payment
- * @return void
- */
- protected function _importCaptureResultToPayment($api, $payment)
- {
- $payment->setTransactionId(
- $api->getPaypalTransactionId()
- )->setIsTransactionClosed(
- false
- )->setTransactionAdditionalInfo(
- self::TRANSPORT_PAYFLOW_TXN_ID,
- $api->getTransactionId()
- );
- $payment->setPreparedMessage(__('Payflow PNREF: #%1.', $api->getTransactionId()));
- $this->_infoFactory->create()->importToPayment($api, $payment);
- }
- /**
- * Fetch transaction details info method does not exists in Payflow
- *
- * @param \Magento\Payment\Model\InfoInterface $payment
- * @param string $transactionId
- * @throws \Magento\Framework\Exception\LocalizedException
- * @return void
- * @SuppressWarnings(PHPMD.UnusedFormalParameter)
- */
- public function fetchTransactionInfo(\Magento\Payment\Model\InfoInterface $payment, $transactionId)
- {
- throw new \Magento\Framework\Exception\LocalizedException(
- __('Unable to fetch transaction details.')
- );
- }
- /**
- * Import refund results to payment
- *
- * @param \Magento\Paypal\Model\Api\Nvp $api
- * @param \Magento\Sales\Model\Order\Payment $payment
- * @param bool $canRefundMore
- * @return void
- */
- protected function _importRefundResultToPayment($api, $payment, $canRefundMore)
- {
- $payment->setTransactionId(
- $api->getPaypalTransactionId()
- )->setIsTransactionClosed(
- 1 // refund initiated by merchant
- )->setShouldCloseParentTransaction(
- !$canRefundMore
- )->setTransactionAdditionalInfo(
- self::TRANSPORT_PAYFLOW_TXN_ID,
- $api->getTransactionId()
- );
- $payment->setPreparedMessage(__('Payflow PNREF: #%1.', $api->getTransactionId()));
- $this->_infoFactory->create()->importToPayment($api, $payment);
- }
- }
|