X

Magento: Как расшифровать креды API PayPal, Braintree, SLI Systems

Столкнулся с тем, что потребовалось настроить на локале такой же конфиг как на одном из серверов. Все заработало, кроме sandbox-а PayPal-а. К сожалению, необходимых кредов у меня не было. В админке они скрыты, а в базе они были зашифрованы таким образом, что простой перенос значений не помогал..

Найти эти значения в базе можно выполнив такой запрос

SELECT * FROM core_config_data WHERE path LIKE '%paypal/wpp%'

config_id|scope  |scope_id|path                         |value                                                                 |
---------|-------|--------|-----------------------------|----------------------------------------------------------------------|
      272|default|       0|paypal/wpp/api_authentication|0                                                                     |
      273|default|       0|paypal/wpp/api_username      |0:2:8d1c3ddf7fca1a9b:F8mDXdycZ0QtRt6EiuTWqKOU=                        |
      274|default|       0|paypal/wpp/api_password      |0:2:e1200a9a9a3023f7:0MmlRBrODB/Z3w==                                 |
      275|default|       0|paypal/wpp/api_signature     |0:2:cdcdc18dac552d6c:RUAK8qVlwGBnDQyo2aWzmAcSNCapcbJ7puUCY48y5Dg06pA==|
      276|default|       0|paypal/wpp/sandbox_flag      |1                                                                     |
      277|default|       0|paypal/wpp/use_proxy         |0                                                                     |
      297|default|       0|paypal/wpp/button_flavor     |dynamic                                                               |

Нас интересуют поля

  • paypal/wpp/api_username
  • paypal/wpp/api_password
  • paypal/wpp/api_signature

Magento 1

Чтобы получить их исходные значения в Magento 1 используем такой скрипт, который надо расположить в корне сайта: /decrypt-paypal.php

<?php
require_once("app/Mage.php");

$store = Mage::app()->getStore(Mage::app()->getStore()->getStoreId());
$username = Mage::getStoreConfig('paypal/wpp/api_username',$store);
$password = Mage::getStoreConfig('paypal/wpp/api_password',$store);
$signature = Mage::getStoreConfig('paypal/wpp/api_signature',$store);

print_r([
    'username' => $username,
    'password' => $password,
    'signature' => $signature,
]);

После чего выполнить из консоли вот так

php decrypt-paypal.php

Не забудьте удалить его, после того как получите нужные данные

Magento 2

В Magento 2 можно ничего не писать, а воспользоваться утилитой n98-magerun2 найти которую можно тут: https://github.com/netz98/n98-magerun2

php ./n98-magerun2.phar config:store:get --decrypt paypal/wpp/api_username
php ./n98-magerun2.phar config:store:get --decrypt paypal/wpp/api_password
php ./n98-magerun2.phar config:store:get --decrypt paypal/wpp/api_signature

Другое

Обратите внимание что хеши шифруются на основе значений конфигурации, поэтому если вы скачаете, например, дамп с сервера к себе и у вас будет отличаться конфигурационный файл (app/etc/env.php), то вероятнее всего, вместо расшифрованных паролей, вы увидите пустое значение. Если так произойдет, то нужно синхронизировать ваш локальный конфиг с конфигом сервера. Ну, или выполнить все вышеописанное на сервере, что не рекомендуется, тк с точки зрения безопасности не стоит загружать ничего лишнего на сервер, поэтому это уже на ваше усмотрение.

--добавлено--

Все тоже самое работает и для Public/Private ключей к API Braintree

$ php ./n98-magerun2.phar config:store:get --decrypt payment/braintree/public_key
+------------------------------+----------+----------+------------------+
| Path                         | Scope    | Scope-ID | Value            |
+------------------------------+----------+----------+------------------+
| payment/braintree/public_key | default  | 0        | abcabcabcabcabca |
| payment/braintree/public_key | websites | 2        | abcabcabcabcabca |
| payment/braintree/public_key | websites | 3        | abcabcabcabcabca |
+------------------------------+----------+----------+------------------+
$ php ./n98-magerun2.phar config:store:get --decrypt payment/braintree/private_key
+-------------------------------+----------+----------+----------------------------------+
| Path                          | Scope    | Scope-ID | Value                            |
+-------------------------------+----------+----------+----------------------------------+
| payment/braintree/private_key | default  | 0        | xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxy |
| payment/braintree/private_key | websites | 2        | xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxy |
| payment/braintree/private_key | websites | 3        | xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxy |
+-------------------------------+----------+----------+----------------------------------+

--добавлено--

Все тоже самое работает для SLI Systems

$ php ./n98-magerun2.phar config:store:get --decrypt sli_feed_generation/ftp/password
+----------------------------------+----------+----------+------------------+
| Path                             | Scope    | Scope-ID | Value            |
+----------------------------------+----------+----------+------------------+
| sli_feed_generation/ftp/password | default  | 0        | abcabcabcabcabca |
+----------------------------------+----------+----------+------------------+
Категории: Magento