SaleCommand.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Paypal\Gateway\Payflowpro\Command;
  7. use Magento\Payment\Gateway\Command;
  8. use Magento\Payment\Gateway\Command\ResultInterface;
  9. use Magento\Payment\Gateway\CommandInterface;
  10. use Magento\Payment\Gateway\Data\PaymentDataObjectInterface;
  11. use Magento\Payment\Helper\Formatter;
  12. use Magento\Paypal\Model\Payflow\Transparent;
  13. class SaleCommand implements CommandInterface
  14. {
  15. use Formatter;
  16. /**
  17. * @var Transparent
  18. */
  19. private $payflowFacade;
  20. /**
  21. * SaleCommand constructor.
  22. * @param Transparent $payflowFacade
  23. */
  24. public function __construct(
  25. Transparent $payflowFacade
  26. ) {
  27. $this->payflowFacade = $payflowFacade;
  28. }
  29. /**
  30. * Executes command basing on business object
  31. *
  32. * @param array $commandSubject
  33. * @return null|ResultInterface
  34. */
  35. public function execute(array $commandSubject)
  36. {
  37. /** @var double $amount */
  38. $amount = $commandSubject['amount'];
  39. /** @var PaymentDataObjectInterface $paymentDO */
  40. $paymentDO = $commandSubject['payment'];
  41. $payment = $paymentDO->getPayment();
  42. $storeId = $paymentDO->getOrder()->getStoreId();
  43. $this->payflowFacade->setStore($storeId);
  44. /** @var \Magento\Vault\Api\Data\PaymentTokenInterface $token */
  45. $token = $payment->getExtensionAttributes()->getVaultPaymentToken();
  46. $request = $this->payflowFacade->buildBasicRequest();
  47. $request->setAmt($this->formatPrice($amount));
  48. $request->setTrxtype(Transparent::TRXTYPE_SALE);
  49. $request->setOrigid($token->getGatewayToken());
  50. $this->payflowFacade->addRequestOrderInfo($request, $payment->getOrder());
  51. $response = $this->payflowFacade->postRequest($request, $this->payflowFacade->getConfig());
  52. $this->payflowFacade->processErrors($response);
  53. $this->payflowFacade->setTransStatus($payment, $response);
  54. }
  55. }