Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
PaymentTokenManagement.php
Go to the documentation of this file.
1 <?php
6 namespace Magento\Vault\Model;
7 
16 use Magento\Vault\Api\Data\PaymentTokenSearchResultsInterfaceFactory;
20 
26 {
31 
36 
40  protected $resourceModel;
41 
46 
51 
55  protected $filterBuilder;
56 
61 
65  private $encryptor;
66 
70  private $dateTimeFactory;
71 
82  public function __construct(
88  PaymentTokenSearchResultsInterfaceFactory $searchResultsFactory,
89  EncryptorInterface $encryptor,
90  DateTimeFactory $dateTimeFactory
91  ) {
92  $this->paymentTokenRepository = $repository;
93  $this->paymentTokenResourceModel = $paymentTokenResourceModel;
94  $this->paymentTokenFactory = $paymentTokenFactory;
95  $this->filterBuilder = $filterBuilder;
96  $this->searchCriteriaBuilder = $searchCriteriaBuilder;
97  $this->searchResultsFactory = $searchResultsFactory;
98  $this->encryptor = $encryptor;
99  $this->dateTimeFactory = $dateTimeFactory;
100  }
101 
109  {
110  $filters[] = $this->filterBuilder
112  ->setValue($customerId)
113  ->create();
114  $entities = $this->paymentTokenRepository->getList(
115  $this->searchCriteriaBuilder
116  ->addFilters($filters)
117  ->create()
118  )->getItems();
119 
120  return $entities;
121  }
122 
130  {
131  $customerFilter = [
132  $this->filterBuilder->setField(PaymentTokenInterface::CUSTOMER_ID)
133  ->setValue($customerId)
134  ->create()
135  ];
136  $visibleFilter = [
137  $this->filterBuilder->setField(PaymentTokenInterface::IS_VISIBLE)
138  ->setValue(1)
139  ->create()
140  ];
141  $isActiveFilter = [
142  $this->filterBuilder->setField(PaymentTokenInterface::IS_ACTIVE)
143  ->setValue(1)
144  ->create()
145  ];
146  $expiresAtFilter = [
147  $this->filterBuilder->setField(PaymentTokenInterface::EXPIRES_AT)
148  ->setConditionType('gt')
149  ->setValue(
150  $this->dateTimeFactory->create(
151  'now',
152  new \DateTimeZone('UTC')
153  )->format('Y-m-d 00:00:00')
154  )
155  ->create()
156  ];
157  $this->searchCriteriaBuilder->addFilters($customerFilter);
158  $this->searchCriteriaBuilder->addFilters($visibleFilter);
159  $this->searchCriteriaBuilder->addFilters($isActiveFilter);
160  // add filters to different filter groups in order to filter by AND expression
161  $searchCriteria = $this->searchCriteriaBuilder->addFilters($expiresAtFilter)->create();
162 
163  return $this->paymentTokenRepository->getList($searchCriteria)->getItems();
164  }
165 
172  public function getByPaymentId($paymentId)
173  {
174  $tokenData = $this->paymentTokenResourceModel->getByOrderPaymentId($paymentId);
175  $tokenModel = !empty($tokenData) ? $this->paymentTokenFactory->create(['data' => $tokenData]) : null;
176  return $tokenModel;
177  }
178 
187  public function getByGatewayToken($token, $paymentMethodCode, $customerId)
188  {
189  $tokenData = $this->paymentTokenResourceModel->getByGatewayToken($token, $paymentMethodCode, $customerId);
190  $tokenModel = !empty($tokenData) ? $this->paymentTokenFactory->create(['data' => $tokenData]) : null;
191  return $tokenModel;
192  }
193 
201  public function getByPublicHash($hash, $customerId)
202  {
203  $tokenData = $this->paymentTokenResourceModel->getByPublicHash($hash, $customerId);
204  $tokenModel = !empty($tokenData) ? $this->paymentTokenFactory->create(['data' => $tokenData]) : null;
205  return $tokenModel;
206  }
207 
214  {
215  $tokenDuplicate = $this->getByPublicHash(
216  $token->getPublicHash(),
217  $token->getCustomerId()
218  );
219 
220  if (!empty($tokenDuplicate)) {
221  if ($token->getIsVisible() || $tokenDuplicate->getIsVisible()) {
222  $token->setEntityId($tokenDuplicate->getEntityId());
223  $token->setIsVisible(true);
224  } elseif ($token->getIsVisible() === $tokenDuplicate->getIsVisible()) {
225  $token->setEntityId($tokenDuplicate->getEntityId());
226  } else {
227  $token->setPublicHash(
228  $this->encryptor->getHash(
229  $token->getPublicHash() . $token->getGatewayToken()
230  )
231  );
232  }
233  }
234 
235  $this->paymentTokenRepository->save($token);
236 
237  $result = $this->addLinkToOrderPayment($token->getEntityId(), $payment->getEntityId());
238 
239  return $result;
240  }
241 
249  public function addLinkToOrderPayment($paymentTokenId, $orderPaymentId)
250  {
251  return $this->paymentTokenResourceModel->addLinkToOrderPayment($paymentTokenId, $orderPaymentId);
252  }
253 }
__construct(PaymentTokenRepositoryInterface $repository, PaymentTokenResourceModel $paymentTokenResourceModel, PaymentTokenFactory $paymentTokenFactory, FilterBuilder $filterBuilder, SearchCriteriaBuilder $searchCriteriaBuilder, PaymentTokenSearchResultsInterfaceFactory $searchResultsFactory, EncryptorInterface $encryptor, DateTimeFactory $dateTimeFactory)
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
saveTokenWithPaymentLink(PaymentTokenInterface $token, OrderPaymentInterface $payment)
$searchCriteria
$payment
Definition: order.php:17
$filters
Definition: uploader.phtml:11
addLinkToOrderPayment($paymentTokenId, $orderPaymentId)
getByGatewayToken($token, $paymentMethodCode, $customerId)