Şifreli bir yapılandırma değerinin şifresini nasıl çözebilirim?


12
protected $_paymentData;
protected $_scopeConfig;
protected $logger;

public function __construct(
    \Magento\Framework\Model\Context $context,
    \Magento\Framework\Registry $registry,
    \Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory,
    \Magento\Framework\Api\AttributeValueFactory $customAttributeFactory,
    \Magento\Payment\Helper\Data $paymentData,
    \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
    \Magento\Payment\Model\Method\Logger $logger,
    \Magento\Framework\Module\ModuleListInterface $moduleList,
    \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
    \Magento\Directory\Model\CountryFactory $countryFactory,
    \Stripe\Stripe $stripe,
    \Inchoo\Stripe\Model\StripeFactory $stripeFactory,
    array $data = array()
) {
    parent::__construct(
        $context,
        $registry,
        $extensionFactory,
        $customAttributeFactory,
        $paymentData,
        $scopeConfig,
        $logger,
        $moduleList,
        $localeDate,
        null,
        null,
        $data
    );
    $this->_scopeConfig = $scopeConfig;
    $this->logger = $logger;
    $this->initializeData($data);
}
 public function getPaymentKey(){
   $key= $this->_scopeConfig->getValue('payment/webpay/keyid');
    echo $key;
    exit; 
}

Yankı Sonucu: idfrk3-45pfnrkhwneirgplbmisniepssnie: hirtw45 Gerçek Anahtar - 'p92GBhcQl7TklHOsWcxBk4eOmL6wpQWBG9nT2Qcf'

Yanıtlar:


27

Sonunda şifresini çözme kodu ...

protected $_encryptor;

public function __construct(
    \Magento\Framework\Encryption\EncryptorInterface $encryptor,
) {
    $this->_encryptor = $encryptor;
    parent::__construct($context);
}
$test = 'dfrk3-45pfnrkhwneirgplbmisniepssnie';
$test = $this->_encryptor->decrypt($test);
echo $test;

Başkalarını paylaşın ve onlara yardım edin ...


Boş değer döndürür. Çıktıları okunabilir biçimde nasıl alabilirim?
Emipro Technologies Pvt. Ltd.

sorun kodunu paylaşabilir misiniz?
Magento2 Devloper

20

\Magento\Framework\App\Config\ScopeConfigInterface::getValueşifresi çözülen değeri döndürür. Ne zaman ScopeConfigInterface::getValuebir şifrelenmiş değeri verir, konfigürasyon seçeneği kurulum yanlış . Şifreli yapılandırma değerinin doğru uygulanması:

Satıcı / Modül / etc / adminhtml / system.xml

Burada yolunda bir karanlık yapılandırma değer katmak payment/webpay/keyidkritik şeyler burada sağlamaktır fieldvardır type="obscure"ve kullanımları Magento\Config\Model\Config\Backend\Encryptediçin backend_model. Magento, maskelenmiş bir form alanını kullanmayı ve kaydetme sırasında herhangi bir kullanıcı girişini şifrelemeyi bilmektedir.

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
    <system>
        <section id="payment">
            <group id="webpay">
                <field id="keyid" translate="label" type="obscure" sortOrder="100" showInDefault="1" showInWebsite="1" showInStore="0">
                    <label>Key Id</label>
                    <backend_model>Magento\Config\Model\Config\Backend\Encrypted</backend_model>
                </field>
            </group>
        </section>
    </system>
</config>

Satıcı / Modül / etc / Config.xml

backend_model="Magento\Config\Model\Config\Backend\Encrypted"Buraya eklemek Magento'ya yapılandırma değeri ile alındığında şifresinin çözülmesi gerektiğini söylerScopeConfigInterface::getValue

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
    <default>
        <payment>
            <webpay>
                <keyid backend_model="Magento\Config\Model\Config\Backend\Encrypted" />
            </webpay>
        </payment>
    </default>
</config>

Satıcı / Modül / etc / di.xml

Bu, hassas diziye yapılandırma yolunu ekler ve mağaza yapılandırmasını dökerken yolun değerinin eklenmesini önler.

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Config\Model\Config\TypePool">
        <arguments>
            <argument name="sensitive" xsi:type="array">
                <item name="payment/webpay/keyid" xsi:type="string">1</item>
            </argument>
        </arguments>
    </type>
</config>

Bunun işe yaramadığı bazı senaryolar var gibi görünüyor, benim durumumda daha önce çalışıyordu ve alanı dahil bir grup xml yapılandırmasına taşıdıktan sonra kırıldı. Yukarıdaki öneriler uygulandı, ancak çalışmıyor
snez

@snez, yapılandırmayı taşıdıktan sonra yeniden kaydetmeyi denediniz mi?
Roman Snitko

5

N98-magerun2.phar yüklüyse, şifresi çözülmüş bir yapılandırma değeri alabilirsiniz:

php bin/n98-magerun2.phar config:store:get --decrypt payment/webpay/keyid

Komut satırından şifrelenmiş yapılandırma değerlerini aşağıdaki gibi bir şeyle de ayarlayabilirsiniz:

php bin/n98-magerun2.phar config:store:set --encrypt payment/webpay/keyid NEW_KEY_ID_VALUE_HERE

N98-magerun2.phar'ı şu adresten alabilirsiniz: https://github.com/netz98/n98-magerun2


2
n98 en büyük şey değil mi?
William Tran

Bu ayrıca n98-magerun'da da çalışıyor (Magento 1 için)
CCBlackburn

0

You can try with below method for payment encryption method to get value,

\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,Aşağıdaki sınıf yolu ile değiştirmek zorundasınız , \Magento\Payment\Gateway\ConfigInterface Bu iyi çalışıyor,

   <?php
/**
 * Copyright © 2015 Magento. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Vendor\Module\Gateway\Http;

use Magento\Payment\Gateway\Http\TransferBuilder;
use Magento\Payment\Gateway\Http\TransferFactoryInterface;
use Magento\Payment\Gateway\Http\TransferInterface;
use Magento\Payment\Gateway\ConfigInterface;

class TransferFactory implements TransferFactoryInterface
{
    private $config;

    private $transferBuilder;

    public function __construct(
        ConfigInterface $config,
        TransferBuilder $transferBuilder
    ) {
        $this->config = $config;
        $this->transferBuilder = $transferBuilder;
    }


    public function getPaymentKey()
    {
        echo $this->config->getValue('payment/webpay/keyid')
    }
}

Bu iş senin için mi?
Rakesh Jesadiya

Önemli hata: Can not örneğini arayüzü Magento'nın \ Ödeme E \ Ağ Geçidi \ ConfigInterface: \ wamp \ www \ magento2_8 \ satıcı \ magento \ framework \ ObjectManager \ Fabrikası \ Dinamik \ Developer.php hattı 73 üzerinde
Magento2 Devloper

problemi çözdün mü
Rakesh Jesadiya

önemli hata almıyor: E: \ wamp \ www \ magento2_8 \ vendor \ magento \ framework \ ObjectManager \ Factory \ Dynamic \ De‌ veloper.php satırındaki Magento \ Payment \ Gateway \ ConfigInterface arabirimi başlatılamıyor.
Magento2 Devloper

yukarıdaki güncellenmiş kod ile deneyin ve var klasörünü kaldırın.
Rakesh Jesadiya

0

Bazı anahtarları kullanarak bir değerin şifresini çözmek istiyorsanız: Magento projenizin kök dizininde decrypt-config-value.php dosyasına aşağıdaki kodu koyun.

<?php

use Magento\Framework\App\Bootstrap;
require __DIR__ . '/app/bootstrap.php';

$bootstrap = Bootstrap::create(BP, $_SERVER);

$obj = $bootstrap->getObjectManager();

$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');


######################################################################################################################

/**
 * @var \Magento\Framework\Encryption\EncryptorInterfaceFactory $ef
 */
$ef = $obj->get('Magento\Framework\Encryption\EncryptorInterfaceFactory');

class CustomDeploymentConfig extends \Magento\Framework\App\DeploymentConfig {
    public function get($key = null, $defaultValue = null)
    {
        return '8343d1c27ee612c73131c0ec693ed86e';
    }
}

/**
 * @var CustomDeploymentConfig $d
 */
$d = $obj->get(CustomDeploymentConfig::class);

/**
 * @var \Magento\Framework\Encryption\EncryptorInterface $e
 */
$e = $ef->create(['deploymentConfig' => $d]);

echo ">>>", $e->decrypt('encripted-value-here'), "<<<\n";

Run php şifre çözme-config-value.php konsolunu kullanarak veya bir tarayıcı kullanarak //yourwebsite.com/decrypt-config-value.php.


-1

Json kod çözme değeri için aşağıdaki kodu deneyin,

class Paymentmodule
{
    protected $jsonEncoder;
    protected $jsonDecoder;

    public function __construct(
        ..//
        \Magento\Framework\Json\DecoderInterface $jsonDecoder
    ) {
        ..//
        $this->jsonDecoder = $jsonDecoder;
    }

    public function getPaymentKey()
    {
        $key= $this->_scopeConfig->getValue('payment/webpay/keyid');
        $config = $this->jsonDecoder->decode($key);
        echo $key;
    }

}

1
Kod çözme başarısız oldu: Sözdizimi hatası "; i: 1; s: 10720:" # 0 E: \ wamp \ www \ magento2_8 \ vendor \ magento \ framework \ Json \ Decoder.php (20): Zend_Json :: decode ('0: 2: 234SyEIM4aj ... ') # 1 E: \ wamp \ www \ magento2_8 \ vendor \ magento \ module-checkout \ Controller \ Onepage \ Success.php (58): Magento \ Framework \ Json \ Decoder-> kod çözme (' 0E24aj ... ')
Magento2 Devloper

Bu hata hakkında bir fikrin var mı?
Magento2 Devloper

Bu konuda hiçbir fikrim yok, çünkü bu ödeme yöntemi için, ben basit bir sorgu için yukarıdaki yöntem için çalıştı
Rakesh Jesadiya

sözdizimi hatası başka tür tanımlamak düşünüyorum.
Magento2 Devloper

basit sorguda iyi çalışıyor ??
Magento2 Devloper
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.