ฉันจะถอดรหัสค่าการกำหนดค่าที่เข้ารหัสได้อย่างไร


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

Echo ผลลัพธ์: idfrk3-45pfnrkhwneirgplbmisniepssnie: hirtw45 True Key - 'p92GBhcQl7TklHOsWcxBk4eOmL6wpQWBG9nT2Qcf'

คำตอบ:


27

ในที่สุดก็ประสบความสำเร็จในการถอดรหัสรหัส ...

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;

แบ่งปันและช่วยเหลือผู้อื่น ...


ส่งคืนค่าว่าง ฉันจะรับเอาต์พุตในรูปแบบที่อ่านได้ได้อย่างไร?
Emipro Technologies Pvt. จำกัด Ltd.

คุณสามารถแบ่งปันรหัสปัญหาได้หรือไม่
Magento2 Devloper

20

\Magento\Framework\App\Config\ScopeConfigInterface::getValueจะคืนค่าถอดรหัส เมื่อScopeConfigInterface::getValueผลตอบแทนคุ้มค่าการเข้ารหัสตัวเลือกการกำหนดค่าการติดตั้งไม่ถูกต้อง การใช้งานที่ถูกต้องของค่าการกำหนดค่าที่เข้ารหัสคือ:

ผู้ขาย / โมดูล / etc / adminhtml / system.xml

ที่นี่เราเพิ่มค่าการกำหนดค่าปิดบังในเส้นทางpayment/webpay/keyidสิ่งที่สำคัญที่นี่คือการสร้างความมั่นใจfieldมีtype="obscure"และการใช้งานสำหรับMagento\Config\Model\Config\Backend\Encrypted backend_modelนี่คือสิ่งที่วีโอไอพีรู้ที่จะใช้ฟิลด์แบบฟอร์มที่มีหน้ากากและเข้ารหัสข้อมูลที่ผู้ใช้ป้อนเมื่อบันทึก

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

ผู้ขาย / โมดูล / etc / config.xml

การเพิ่มbackend_model="Magento\Config\Model\Config\Backend\Encrypted"ที่นี่จะบอก Magento ค่าการกำหนดค่าที่ควรจะถอดรหัสเมื่อดึงมาด้วยScopeConfigInterface::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>

ผู้ขาย / โมดูล / etc / di.xml

สิ่งนี้จะเพิ่มพา ธ การกำหนดค่าไปยังอาร์เรย์ที่ละเอียดอ่อนและป้องกันไม่ให้รวมค่าของพา ธ เมื่อทำการดัมพ์การกำหนดค่าร้านค้า

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

ดูเหมือนจะมีบางสถานการณ์ที่ไม่สามารถใช้งานได้ในกรณีของฉันมันเคยทำงานมาก่อนและมันพังหลังจากที่ฉันย้ายฟิลด์ไปเป็นกลุ่ม xml ที่กำหนดค่าไว้ ข้อเสนอแนะดังกล่าวข้างต้นถูกนำมาใช้ แต่ไม่ได้ทำงาน
snez

@snez คุณได้ลองบันทึกการกำหนดค่าอีกครั้งหลังจากที่คุณย้ายหรือไม่
Roman Snitko

5

หากคุณติดตั้ง n98-magerun2.phar คุณสามารถรับค่าการกำหนดค่าที่ถอดรหัสด้วยสิ่งต่อไปนี้:

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

นอกจากนี้คุณยังสามารถตั้งค่าเข้ารหัสที่กำหนดค่าจากบรรทัดคำสั่งด้วยสิ่งต่อไปนี้:

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

คุณสามารถรับ n98-magerun2.phar ได้จากที่นี่: https://github.com/netz98/n98-magerun2


2
ไม่ใช่สิ่งที่ยิ่งใหญ่ที่สุดหรือไม่
วิลเลียมทราน

สิ่งนี้ยังใช้งานได้ใน n98-magerun (สำหรับ Magento 1)
CCBlackburn

0

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

คุณต้องแทนที่\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,ด้วยคลาสพา ธ ด้านล่าง\Magento\Payment\Gateway\ConfigInterface นี่ใช้งานได้ดี

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

มันเหมาะกับคุณหรือไม่
Rakesh Jesadiya

ข้อผิดพลาดร้ายแรง: ไม่สามารถยกตัวอย่างอินเทอร์เฟซ Magento \ Payment \ Gateway \ ConfigInterface ใน E: \ wamp \ www \ magento2_8 \ ผู้ขาย \ magento \ framework \ ObjectManager \ Factory \ Dynamic \ Developer.php ในบรรทัด 73
Magento2 Devloper

คุณแก้ปัญหาแล้วหรือยัง?
Rakesh Jesadiya

ไม่ได้รับข้อผิดพลาดร้ายแรง: ไม่สามารถสร้างอินเทอร์เฟซ Magento \ Payment \ Gateway \ ConfigInterface ใน E: \ wamp \ www \ magento2_8 \ seller \ magento \ framework \ ObjectManager \ Factory \ Dynamic \ De‌ veloper.php ที่บรรทัด 73 ข้อผิดพลาด
Magento2 Devloper

ลองด้วยรหัสที่อัปเดตข้างต้นแล้วลบโฟลเดอร์ var
Rakesh Jesadiya

0

ในกรณีที่คุณต้องการถอดรหัสค่าบางอย่างโดยใช้คีย์: ใส่โค้ดด้านล่างลงใน decrypt-config-value.php ในรูทของโครงการวีโอไอพีของคุณ

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

เรียกใช้php decrypt-config-value.phpโดยใช้ console หรือ //yourwebsite.com/decrypt-config-value.php โดยใช้เบราว์เซอร์


-1

ลองด้วยรหัสด้านล่างสำหรับค่าการถอดรหัส 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
การถอดรหัสล้มเหลว: ข้อผิดพลาดของไวยากรณ์ "; i: 1; s: 10720:" # 0 E: \ wamp \ www \ magento2_8 \ seller \ magento \ framework \ Json \ Decoder.php (20): Zend_Json :: decode ('0: 2: 234SyEIM4aj ... ') # 1 E: \ wamp \ www \ magento2_8 \ seller \ magento \ module-checkout \ Controller \ Onepage \ Success.php (58): Magento \ Framework \ Json \ Decoder-> ถอดรหัส (' 0: 2: 234SyEIM4aj ... ')
Magento2 Devloper

ความคิดเกี่ยวกับข้อผิดพลาดนี้?
Magento2 Devloper

ฉันไม่มีความคิดเกี่ยวกับเรื่องนี้เพราะนี่เป็นวิธีการชำระเงินฉันได้ทำงานกับวิธีการข้างต้นสำหรับการค้นหาแบบง่าย
Rakesh Jesadiya

ข้อผิดพลาดทางไวยากรณ์ฉันคิดว่ากำหนดประเภทอื่น
Magento2 Devloper

ทำงานได้ดีในแบบสอบถามง่ายๆ
Magento2 Devloper
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.