SettlementHandler.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. /**
  3. * Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
  4. *
  5. * Licensed under the Apache License, Version 2.0 (the "License").
  6. * You may not use this file except in compliance with the License.
  7. * A copy of the License is located at
  8. *
  9. * http://aws.amazon.com/apache2.0
  10. *
  11. * or in the "license" file accompanying this file. This file is distributed
  12. * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
  13. * express or implied. See the License for the specific language governing
  14. * permissions and limitations under the License.
  15. */
  16. namespace Amazon\Payment\Gateway\Response;
  17. use Magento\Payment\Gateway\Response\HandlerInterface;
  18. use Magento\Payment\Model\Method\Logger;
  19. use Amazon\Payment\Gateway\Helper\SubjectReader;
  20. use Amazon\Core\Helper\Data;
  21. use Magento\Sales\Api\OrderRepositoryInterface;
  22. use Magento\Quote\Api\CartRepositoryInterface;
  23. class SettlementHandler implements HandlerInterface
  24. {
  25. /**
  26. * @var Logger
  27. */
  28. private $logger;
  29. /**
  30. * @var SubjectReader
  31. */
  32. private $subjectReader;
  33. /**
  34. * @var Data
  35. */
  36. private $coreHelper;
  37. /**
  38. * @var OrderRepositoryInterface
  39. */
  40. private $orderRepository;
  41. /**
  42. * @var CartRepositoryInterface
  43. */
  44. private $quoteRepository;
  45. /**
  46. * SettlementHandler constructor.
  47. *
  48. * @param Logger $logger
  49. * @param SubjectReader $subjectReader
  50. * @param Data $coreHelper
  51. * @param OrderRepositoryInterface $orderRepository
  52. * @param CartRepositoryInterface $quoteRepository
  53. */
  54. public function __construct(
  55. Logger $logger,
  56. SubjectReader $subjectReader,
  57. Data $coreHelper,
  58. OrderRepositoryInterface $orderRepository,
  59. CartRepositoryInterface $quoteRepository
  60. ) {
  61. $this->logger = $logger;
  62. $this->subjectReader = $subjectReader;
  63. $this->coreHelper = $coreHelper;
  64. $this->orderRepository = $orderRepository;
  65. $this->quoteRepository = $quoteRepository;
  66. }
  67. /**
  68. * @param array $handlingSubject
  69. * @param array $response
  70. */
  71. public function handle(array $handlingSubject, array $response)
  72. {
  73. $paymentDO = $this->subjectReader->readPayment($handlingSubject);
  74. $payment = $paymentDO->getPayment();
  75. // if reauthorized, treat as end of auth + capture process
  76. if ($response['reauthorized']) {
  77. if ($response['status']) {
  78. $orderDO = $paymentDO->getOrder();
  79. $order = $this->orderRepository->get($orderDO->getId());
  80. $payment->setTransactionId($response['capture_transaction_id']);
  81. $payment->setParentTransactionId($response['authorize_transaction_id']);
  82. $payment->setIsTransactionClosed(true);
  83. $quote = $this->quoteRepository->get($order->getQuoteId());
  84. $quoteLink = $this->subjectReader->getQuoteLink($quote->getId());
  85. $quoteLink->setConfirmed(true)->save();
  86. }
  87. } else {
  88. // finish capture
  89. $payment->setTransactionId($response['transaction_id']);
  90. }
  91. }
  92. }