Làm thế nào tôi có thể giải mã một giá trị cấu hình được mã hóa?


11
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; 
}

Kết quả Echo: idfrk3-45pfnrkhwneirgplbmisniepssnie: hirtw45 True Key - 'p92GBhcQl7TklHOsWcxBk4eOmL6wpQWBG9nT2Qcf'

Câu trả lời:


25

Cuối cùng, hãy thành công trong việc giải mã ...

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;

Chia sẻ và giúp đỡ người khác ...


Nó trả về giá trị trống. Làm thế nào tôi có thể nhận được đầu ra ở định dạng có thể đọc được?
Công nghệ Emipro Pvt. Ltd.

bạn có thể chia sẻ mã vấn đề?
Magento2 Devloper

20

\Magento\Framework\App\Config\ScopeConfigInterface::getValuesẽ trả về giá trị được giải mã. Khi ScopeConfigInterface::getValuetrả về một giá trị được mã hóa, tùy chọn cấu hình được thiết lập không chính xác . Việc thực hiện đúng giá trị cấu hình được mã hóa là:

Nhà cung cấp / Mô-đun / etc / adminhtml / system.xml

Ở đây chúng tôi thêm một giá trị cấu hình tối nghĩa trong đường dẫn payment/webpay/keyidnhững điều quan trọng ở đây là đảm bảo fieldtype="obscure"và sử dụng Magento\Config\Model\Config\Backend\Encryptedcho backend_model. Đây là cách Magento biết sử dụng trường biểu mẫu đeo mặt nạ và mã hóa mọi dữ liệu nhập của người dùng khi lưu.

<?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>

Nhà cung cấp / Mô-đun / etc / config.xml

Thêm vào backend_model="Magento\Config\Model\Config\Backend\Encrypted"đây cho Magento giá trị cấu hình sẽ được giải mã khi được truy xuất bằngScopeConfigInterface::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>

Nhà cung cấp / Mô-đun / etc / di.xml

Điều này thêm đường dẫn cấu hình vào mảng nhạy cảm và ngăn giá trị của đường dẫn được đưa vào khi hủy cấu hình cửa hàng.

<?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>

Dường như có một số tình huống trong đó điều này không hoạt động, trong trường hợp của tôi nó đã hoạt động trước đó và nó đã bị hỏng sau khi tôi chuyển trường vào cấu hình xml nhóm đi kèm. Các đề xuất trên đã được thực hiện, nhưng không hoạt động
snez

@snez bạn đã thử lưu lại cấu hình sau khi bạn di chuyển nó chưa?
Roman Snitko

5

Nếu bạn đã cài đặt n98-magerun2.phar, bạn có thể nhận được giá trị cấu hình được giải mã với một cái gì đó như:

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

Bạn cũng có thể đặt các giá trị cấu hình được mã hóa từ dòng lệnh bằng một cái gì đó như:

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

Bạn có thể nhận n98-magerun2.phar từ đây: https://github.com/netz98/n98-magerun2


2
N98 không phải là điều tuyệt vời nhất?
William Trần

Điều này cũng hoạt động trong n98-magerun (cho Magento 1)
CCBlackburn

0

Hãy thử với mã dưới đây cho giá trị giải mã json,

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
Giải mã không thành công: Lỗi cú pháp "; i: 1; s: 10720:" # 0 E: \ wamp \ www \ magento2_8 \ eller \ magento \ framework \ Json \ Decoder.php (20): Zend_Json :: decode ('0: 2: 234SyEIM4aj ... ') # 1 E: \ wamp \ www \ magento2_8 \ eller \ magento \ module-checkout \ Controller \ Onepage \ Success.php (58): Magento \ Framework \ Json \ Decoder-> decode (' 0: 2: 234SyEIM4aj ... ')
Magento2 Devloper 11/07/2016

Bất cứ ý tưởng về lỗi này?
Magento2 Devloper

Tôi không biết gì về nó, vì đây là phương thức thanh toán, tôi đã làm việc cho phương thức trên cho truy vấn đơn giản
Rakesh Jesadiya

lỗi cú pháp tôi nghĩ định nghĩa các loại khác.
Magento2 Devloper

làm việc tốt trong truy vấn đơn giản ??
Magento2 Devloper

0

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

Bạn phải thay thế \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,bằng đường dẫn lớp bên dưới, \Magento\Payment\Gateway\ConfigInterface Điều này hoạt động tốt,

   <?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')
    }
}

Đây có phải là công việc cho bạn?
Rakesh Jesadiya

Lỗi nghiêm trọng: Không thể khởi tạo giao diện Magento \ Payment \ Gateway \ ConfigInterface trong E: \ wamp \ www \ magento2_8 \ eller \ magento \ framework \ ObjectManager \ Factory \ Dynamic \ Developer.php trên dòng 73
Magento2 Devloper

bạn đã giải quyết vấn đề chưa?
Rakesh Jesadiya

không nhận được lỗi nghiêm trọng: Không thể khởi tạo giao diện Magento \ Payment \ Gateway \ ConfigInterface trong E: \ wamp \ www \ magento2_8 \ eller \ magento \ framework \ ObjectManager \ Factory \ Dynamic \ De‌ veloper.php trên dòng 73 lỗi.
Magento2 Devloper

thử với mã cập nhật ở trên và loại bỏ thư mục var.
Rakesh Jesadiya
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.