আমি কীভাবে একটি এনক্রিপ্ট করা কনফিগারেশন মান ডিক্রিপ্ট করতে পারি?


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 সত্য কী - 'p92GBhcQl7TklHOsWcxBk4eOmL6wpQWBG9nT2Qcf'

উত্তর:


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;

অন্যকে ভাগ করুন এবং সহায়তা করুন ...


এটি ফাঁকা মান দেয়। আমি কীভাবে পঠনযোগ্য ফর্ম্যাটে আউটপুট পেতে পারি?
এমিপ্রো টেকনোলজিস প্রাইভেট। লিঃ

আপনি ইস্যু কোড শেয়ার করতে পারেন?
ম্যাজেন্টো 2 ডেভলপার

20

\Magento\Framework\App\Config\ScopeConfigInterface::getValueডিক্রিপ্ট করা মানটি ফিরিয়ে দেবে। যখন ScopeConfigInterface::getValueকোনও এনক্রিপ্ট করা মান ফিরে আসে, কনফিগারেশন বিকল্পটি ভুলভাবে সেট আপ হয় । একটি এনক্রিপ্ট করা কনফিগারেশন মানের সঠিক প্রয়োগ হ'ল:

বিক্রেতা / মডিউল, / etc / adminhtml / system.xml

এখানে payment/webpay/keyidসমালোচনামূলক জিনিসগুলি যেগুলির জন্য এবং তার ব্যবহারগুলি নিশ্চিত করছে fieldসে পথে আমরা একটি অস্পষ্ট কনফিগারেশন মান যুক্ত করি । এইভাবেই ম্যাজেন্টো একটি মুখোশযুক্ত ফর্ম ক্ষেত্রটি ব্যবহার করতে এবং সংরক্ষণে কোনও ব্যবহারকারীর ইনপুট এনক্রিপ্ট করতে জানে।type="obscure"Magento\Config\Model\Config\Backend\Encryptedbackend_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"এখানে যুক্ত করার মাধ্যমে ম্যাগনটোকে জানায় কনফিগার মানটি ডিক্রিপ্ট করা উচিত যখন এটি পুনরুদ্ধার করা হবে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>

এমন কিছু পরিস্থিতি মনে হচ্ছে যেখানে এটি কাজ করে না, আমার ক্ষেত্রে এটি আগে কাজ করছিল এবং ক্ষেত্রটি একটি অন্তর্ভুক্ত গ্রুপ এক্সএমএল কনফিগারেশনে স্থানান্তরিত করার পরে এটি ভেঙে গেছে। উপরের পরামর্শগুলি কার্যকর করা হয়েছিল, তবে কাজ করছে না
স্নেজ

@ স্নেজ আপনি কি কনফিগারেশনটি সরানোর পরে পুনরায় সেভ করার চেষ্টা করেছেন?
রোমান স্নিটকো

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 (ম্যাজেন্টো 1 এর জন্য)
-তেও কাজ করে

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

এই কাজ কি আপনার জন্য?
রাকেশ জেসাদিদিয়া

মারাত্মক ত্রুটি: যাবে না instantiate ইন্টারফেস Magento \ পেমেন্ট ই \ গেটওয়ে \ ConfigInterface: \ wamp \ WWW \ magento2_8 \ বিক্রেতা \ Magento \ ফ্রেমওয়ার্ক \ ObjectManager \ কারখানার \ ডায়নামিক \ Developer.php লাইন 73 উপর
Magento2 Devloper

আপনি কি সমস্যার সমাধান করেছেন?
রকেশ জেসাদিয়া

মারাত্মক ত্রুটি পাওয়া যাচ্ছে না: Eage এ Magento \ পেমেন্ট \ গেটওয়ে ate কনফিগারেশন ইন্টারফেস ইনস্ট্যান্ট করতে পারে না: \ wamp \ www \ magento2_8 \ বিক্রেতা \ magento \ কাঠামো \ অবজেক্টম্যানেজার actory কারখানা \ ডায়নামিক \ ডিফলার ph
ম্যাজেন্টো 2 ডেভলপার

উপরের আপডেট হওয়া কোড দিয়ে চেষ্টা করুন এবং ভের ফোল্ডারটি সরিয়ে দিন।
রাকেশ জেসাদিয়া

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

একটি ব্রাউজার ব্যবহার করে কনসোল বা //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 ই: amp wamp \ www \ magento2_8 \ বিক্রেতা \ ম্যাজেন্টো \ কাঠামো \ জসন \ ডিকোডার.এফপি (20): জেন্ড_জসন :: ডিকোড ('0: 2: 234 সাইআইআইএম 4 আইজ ... ') # 1 ই: \ ওয়াম্প \ www \ ম্যাজেন্টো 2_8 \ বিক্রেতা \ ম্যাজেন্টো \ মডিউল-চেকআউট \ কন্ট্রোলার \ অনেপেজ \ সাফল্য.এফপিপি (58): ম্যাজেন্টো \ ফ্রেমওয়ার্ক \ জসন \ ডিকোডার-> ডিকোড (' 0: 2: 234 সিআইআইএম 4 আইজ ... ')
ম্যাজেন্টো 2 ডেভলপার

এই ত্রুটি সম্পর্কে কোন ধারণা?
ম্যাজেন্টো 2 ডেভলপার

আমার এটি সম্পর্কে কোনও ধারণা নেই, কারণ এটি অর্থ প্রদানের পদ্ধতির জন্য, আমি সাধারণ প্রশ্নের জন্য উপরের পদ্ধতির জন্য কাজ করেছি
রকেশ জেসাদিয়া

সিনট্যাক্স ত্রুটিটি অন্য ধরণের সংজ্ঞায়িত বলে আমি মনে করি।
ম্যাজেন্টো 2 ডেভলপার

সাধারণ ক্যোয়ারিতে ভাল কাজ করছেন ??
ম্যাজেন্টো 2 ডেভলপার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.