voronkovich / sberbank-acquiring-client

PHP client for Sberbank and Alphabank acquiring REST APIs
MIT License
190 stars 55 forks source link

jsonParams приводит к ошибке 5 #26

Closed gruzoveek closed 4 weeks ago

gruzoveek commented 1 year ago

Пытался отправлять jsonParams c доп. параметрами. Получил "[jsonParams] неверен". Посмотрел код, посмотрел документацию https://securepayments.sberbank.ru/wiki/doku.php/integration:api:rest:requests:register Судя по всему, параметр надо передавать не в виде массива, а в виде его элементов. Не как [{"key":"value"},{"key2":"value2"}] а просто {"key":"value"},{"key2":"value2"}.

В классе Client.php:289 видимо надо сделать декомпозицию: $data['jsonParams'] = json_encode(...$data['jsonParams']);

voronkovich commented 1 year ago

@gruzoveek, честно говоря, из документации действительно не понятно, как правильно передавать несколько значений через jsonParams одновременно. Но, у меня есть подозрение, что дело в другом. Там используется "весёлый" JSON, в котором вместо значений true и false используются строки "true" и "false". Поэтому использовать их нужно следующим образом:

$client->registerOrder(1, 1, 'returnUrl', [
    'jsonParams' => [
        // Вместо 'showApplePay' => true,
        'showApplePay' => 'true',
        // Вместо 'showGooglePay' => false,
        'showGooglePay' => 'false',
    ],
]);