Email.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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\Helper;
  17. use Amazon\Core\Helper\Data as AmazonCoreHelper;
  18. use Magento\Framework\App\Area;
  19. use Magento\Framework\App\Helper\AbstractHelper;
  20. use Magento\Framework\App\Helper\Context;
  21. use Magento\Sales\Model\Order;
  22. use Magento\Framework\Mail\Template\TransportBuilderFactory;
  23. use Magento\Store\Model\ScopeInterface;
  24. class Email extends AbstractHelper
  25. {
  26. /**
  27. * @var TransportBuilderFactory
  28. */
  29. private $emailTransportBuilderFactory;
  30. /**
  31. * @var AmazonCoreHelper
  32. */
  33. private $amazonCoreHelper;
  34. /**
  35. * @param Context $context
  36. * @param TransportBuilderFactory $emailTransportBuilderFactory
  37. * @param AmazonCoreHelper $amazonCoreHelper
  38. */
  39. public function __construct(
  40. Context $context,
  41. TransportBuilderFactory $emailTransportBuilderFactory,
  42. AmazonCoreHelper $amazonCoreHelper
  43. ) {
  44. parent::__construct($context);
  45. $this->emailTransportBuilderFactory = $emailTransportBuilderFactory;
  46. $this->amazonCoreHelper = $amazonCoreHelper;
  47. }
  48. /**
  49. * @param Order $order
  50. *
  51. * @return void
  52. */
  53. public function sendAuthorizationSoftDeclinedEmail(Order $order)
  54. {
  55. $emailTransportBuilder = $this->emailTransportBuilderFactory->create();
  56. $emailTransportBuilder->addTo($order->getCustomerEmail(), $order->getCustomerName());
  57. $emailTransportBuilder->setFrom('general');
  58. $emailTransportBuilder->setTemplateIdentifier('amazon_payments_auth_soft_decline');
  59. $emailTransportBuilder->setTemplateOptions(
  60. [
  61. 'area' => Area::AREA_FRONTEND,
  62. 'store' => $order->getStoreId()
  63. ]
  64. );
  65. $paymentRegionByOrderStore = $this->amazonCoreHelper->getPaymentRegion(
  66. ScopeInterface::SCOPE_STORE,
  67. $order->getStoreId()
  68. );
  69. $storeName = $this->amazonCoreHelper->getStoreName(ScopeInterface::SCOPE_STORE, $order->getStoreId());
  70. if (!$storeName) {
  71. $storeName = $this->amazonCoreHelper->getStoreFrontName($order->getStoreId());
  72. }
  73. $vars = [
  74. 'amazonAccountUrl' => $this->amazonCoreHelper
  75. ->getAmazonAccountUrlByPaymentRegion($paymentRegionByOrderStore),
  76. 'storeName' => $storeName,
  77. ];
  78. $emailTransportBuilder->setTemplateVars($vars);
  79. $emailTransportBuilder->getTransport()->sendMessage();
  80. }
  81. /**
  82. * @param Order $order
  83. *
  84. * @return void
  85. */
  86. public function sendAuthorizationHardDeclinedEmail(Order $order)
  87. {
  88. $emailTransportBuilder = $this->emailTransportBuilderFactory->create();
  89. $storeName = $this->amazonCoreHelper->getStoreName(ScopeInterface::SCOPE_STORE, $order->getStoreId());
  90. if (!$storeName) {
  91. $storeName = $this->amazonCoreHelper->getStoreFrontName($order->getStoreId());
  92. }
  93. $emailTransportBuilder->addTo($order->getCustomerEmail(), $order->getCustomerName());
  94. $emailTransportBuilder->setFrom('general');
  95. $emailTransportBuilder->setTemplateIdentifier('amazon_payments_auth_hard_decline');
  96. $emailTransportBuilder->setTemplateOptions(
  97. [
  98. 'area' => Area::AREA_FRONTEND,
  99. 'store' => $order->getStoreId()
  100. ]
  101. );
  102. $vars = [
  103. 'storeName' => $storeName,
  104. ];
  105. $emailTransportBuilder->setTemplateVars($vars);
  106. $emailTransportBuilder->getTransport()->sendMessage();
  107. }
  108. }