Advertisement
Guest User

Untitled

a guest
Dec 13th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Kemana\Checkout\Observer;
  4.  
  5. use Magento\Framework\Event\ObserverInterface;
  6.  
  7. /**
  8. * Class PaymentActive
  9. * @package Kemana\Checkout\Observer
  10. */
  11. class PaymentActive implements ObserverInterface
  12. {
  13. const PAYMENT_CODE_PARADOXLABS_STRIPE = 'paradoxlabs_stripe';
  14.  
  15. /**
  16. * @var \Magento\Store\Model\StoreManagerInterface
  17. */
  18. protected $storeManager;
  19.  
  20. /**
  21. * @var \ParadoxLabs\TokenBase\Model\Method\Factory
  22. */
  23. protected $methodFactory;
  24.  
  25. /**
  26. * PaymentActive constructor.
  27. * @param \Magento\Store\Model\StoreManagerInterface $storeManager
  28. * @param \ParadoxLabs\TokenBase\Model\Method\Factory $methodFactory
  29. */
  30. public function __construct(
  31. \Magento\Store\Model\StoreManagerInterface $storeManager,
  32. \ParadoxLabs\TokenBase\Model\Method\Factory $methodFactory
  33. )
  34. {
  35. $this->storeManager = $storeManager;
  36. $this->methodFactory = $methodFactory;
  37. }
  38.  
  39. /**
  40. * @param \Magento\Framework\Event\Observer $observer
  41. */
  42. public function execute(\Magento\Framework\Event\Observer $observer)
  43. {
  44. $event = $observer->getEvent();
  45. $method = $event->getMethodInstance();
  46. if ($method->getCode() == self::PAYMENT_CODE_PARADOXLABS_STRIPE) {
  47. $isAvailable = true;
  48. $storeId = $this->storeManager->getStore()->getStoreId();
  49.  
  50. $currentMethod = $this->methodFactory->getMethodInstance(self::PAYMENT_CODE_PARADOXLABS_STRIPE);
  51. $currentMethod->setStore($storeId);
  52.  
  53. //check public key and secret key
  54. $publicKey = $currentMethod->getConfigData('public_key');
  55. $secretKey = $currentMethod->getConfigData('secret_key');
  56. if (empty($publicKey) || empty($secretKey)) {
  57. $isAvailable = false;
  58. }
  59.  
  60. if ($isAvailable) {
  61. //checking have 'test' value inside secretKey
  62. $publicKeyIsTest = substr($secretKey, 3, 4) === 'test';
  63. $secretKeyIsTest = substr($secretKey, 3, 4) === 'test';
  64. if ($publicKeyIsTest && !$secretKeyIsTest) {
  65. $isAvailable = false;
  66. } elseif (!$publicKeyIsTest && $secretKeyIsTest) {
  67. $isAvailable = false;
  68. }
  69.  
  70. if ($isAvailable) {
  71. //check json return result
  72. if (json_decode($currentMethod->getConfigData('field_style'), true, 4) === null) {
  73. $isAvailable = false;
  74. }
  75.  
  76. if ($isAvailable) {
  77. //connect to stripe api to check connection
  78. $gateway = $currentMethod->gateway();
  79. try {
  80. $account = $gateway->getAccount();
  81. } catch (\Exception $e) {
  82. $isAvailable = false;
  83. }
  84. }
  85. }
  86. }
  87.  
  88. if (!$isAvailable) {
  89. $result = $event->getResult();
  90. $result->setData('is_available', false);
  91. }
  92. }
  93. }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement