Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Kemana\Checkout\Observer;
- use Magento\Framework\Event\ObserverInterface;
- /**
- * Class PaymentActive
- * @package Kemana\Checkout\Observer
- */
- class PaymentActive implements ObserverInterface
- {
- const PAYMENT_CODE_PARADOXLABS_STRIPE = 'paradoxlabs_stripe';
- /**
- * @var \Magento\Store\Model\StoreManagerInterface
- */
- protected $storeManager;
- /**
- * @var \ParadoxLabs\TokenBase\Model\Method\Factory
- */
- protected $methodFactory;
- /**
- * PaymentActive constructor.
- * @param \Magento\Store\Model\StoreManagerInterface $storeManager
- * @param \ParadoxLabs\TokenBase\Model\Method\Factory $methodFactory
- */
- public function __construct(
- \Magento\Store\Model\StoreManagerInterface $storeManager,
- \ParadoxLabs\TokenBase\Model\Method\Factory $methodFactory
- )
- {
- $this->storeManager = $storeManager;
- $this->methodFactory = $methodFactory;
- }
- /**
- * @param \Magento\Framework\Event\Observer $observer
- */
- public function execute(\Magento\Framework\Event\Observer $observer)
- {
- $event = $observer->getEvent();
- $method = $event->getMethodInstance();
- if ($method->getCode() == self::PAYMENT_CODE_PARADOXLABS_STRIPE) {
- $isAvailable = true;
- $storeId = $this->storeManager->getStore()->getStoreId();
- $currentMethod = $this->methodFactory->getMethodInstance(self::PAYMENT_CODE_PARADOXLABS_STRIPE);
- $currentMethod->setStore($storeId);
- //check public key and secret key
- $publicKey = $currentMethod->getConfigData('public_key');
- $secretKey = $currentMethod->getConfigData('secret_key');
- if (empty($publicKey) || empty($secretKey)) {
- $isAvailable = false;
- }
- if ($isAvailable) {
- //checking have 'test' value inside secretKey
- $publicKeyIsTest = substr($secretKey, 3, 4) === 'test';
- $secretKeyIsTest = substr($secretKey, 3, 4) === 'test';
- if ($publicKeyIsTest && !$secretKeyIsTest) {
- $isAvailable = false;
- } elseif (!$publicKeyIsTest && $secretKeyIsTest) {
- $isAvailable = false;
- }
- if ($isAvailable) {
- //check json return result
- if (json_decode($currentMethod->getConfigData('field_style'), true, 4) === null) {
- $isAvailable = false;
- }
- if ($isAvailable) {
- //connect to stripe api to check connection
- $gateway = $currentMethod->gateway();
- try {
- $account = $gateway->getAccount();
- } catch (\Exception $e) {
- $isAvailable = false;
- }
- }
- }
- }
- if (!$isAvailable) {
- $result = $event->getResult();
- $result->setData('is_available', false);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement