मैं एन्क्रिप्टेड कॉन्फ़िगरेशन मान को कैसे डीक्रिप्ट कर सकता हूं?


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

इको रिजल्ट: idfrk3-45pfnrkhwneirgplbmisniepssnie: hirtw45 True Key - 'p92GBhcQl7TklHOsWcxBk4e4mm6wpQWBG9nT2Qcf'

जवाबों:


26

अंत में डिक्रिप्ट कोड में सफलता प्राप्त करें ...

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;

शेयर करें और दूसरों की मदद करें ...


यह रिक्त मान देता है। मैं पठनीय प्रारूप में आउटपुट कैसे प्राप्त कर सकता हूं?
एमिप्रो टेक्नोलॉजीज प्रा। लिमिटेड

क्या आप इश्यू कोड साझा कर सकते हैं?
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। इस तरह से Magento नकाबपोश फ़ॉर्म फ़ील्ड का उपयोग करना और सहेजने पर किसी भी उपयोगकर्ता इनपुट को एन्क्रिप्ट करना जानता है।

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

ऐसा कुछ परिदृश्य प्रतीत होता है जहाँ यह काम नहीं करता है, मेरे मामले में यह पहले काम कर रहा था और जब मैंने फ़ील्ड को एक सम्मिलित समूह xX कॉन्फ़िगरेशन में स्थानांतरित किया तो यह टूट गया। उपरोक्त सुझावों को लागू किया गया था, लेकिन काम नहीं कर रहा था
snez

@snez क्या आपने इसे स्थानांतरित करने के बाद कॉन्फ़िगरेशन को फिर से सहेजने की कोशिश की है?
रोमन स्नीको

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 सबसे बड़ी बात नहीं है?
विलियम ट्रान

यह 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')
    }
}

क्या यह काम आपके लिए है?
राकेश जेसादिया 11:11 बजे

गंभीर त्रुटि: नहीं कर पा रहे इन्स्तांत इंटरफ़ेस Magento \ भुगतान ई में \ गेटवे \ ConfigInterface: \ WAMP \ www \ magento2_8 \ विक्रेता \ Magento \ ढांचे \ ObjectManager \ फैक्टरी \ गतिशील \ Developer.php लाइन 73 पर
Magento2 devloper

क्या आपने समस्या हल की है?
राकेश Jesadiya

कोई त्रुटि नहीं हो रही है: E: \ wamp \ www \ magento2_8 \ वेंडर \ magento \ फ्रेमवर्क \ ObjectManager \ फ़ैक्टरी \ गतिशील \ De-in_वाहक लाइन पर 73 त्रुटि।
Magento2 Devloper

उपरोक्त अद्यतन कोड के साथ प्रयास करें और var फ़ोल्डर निकालें।
राकेश जेसादिया

0

यदि आप कुछ कुंजी का उपयोग करके कुछ मूल्य को डिक्रिप्ट करना चाहते हैं: अपने मैगेंटो प्रोजेक्ट की जड़ में कोड को डिक्रिप्ट-कॉन्फिगर-वैल्यू में डाल दें।

<?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 डिक्रिप्ट-config-value.php कंसोल का उपयोग कर या एक ब्राउज़र का उपयोग //yourwebsite.com/decrypt-config-value.php।


-1

जेसन डिकोड मूल्य के लिए नीचे दिए गए कोड के साथ प्रयास करें,

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 \ विक्रेता \ magento \ फ्रेमवर्क \ Json \ Decoder.php (20): Z__Json :: डिकोड ('0: 2: 234SEEIM4aj ... ') # 1 E: \ wamp \ www \ magento2_8 \ _ विक्रेता \ magento \ मॉड्यूल-चेकआउट \ नियंत्रक \ Onepage \ Success.php (58): Magento के फ्रेमवर्क + Json \ Decoder-> डिकोड (') 0: 2: 234SEEIM4aj ... ')
Magento2 Devloper

इस त्रुटि के बारे में कोई विचार?
Magento2 Devloper

मुझे इसके बारे में कोई जानकारी नहीं है, क्योंकि यह भुगतान विधि के लिए है, मैंने सरल क्वेरी के लिए उपरोक्त विधि पर काम किया है
राकेश जेसादिया

सिंटैक्स त्रुटि मुझे लगता है कि एक और प्रकार को परिभाषित करता है।
Magento2 Devloper

सरल क्वेरी में ठीक काम कर रहा है ??
Magento2 Devloper
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.