Как получить данные из реквеста пришедшие в json?

Я разрабатываю платежный модуль.

Платежка делает callback запрос в случае успешной оплаты. Платежка делает POST запрос. И передает данные в json

POST http://localhost/bitrix/tools/sale_ps_result.php
Content-Type: application/json
{
  "foo": "ok",
}

Как получить данные из реквеста? Я знаю этот способ.

$json = json_decode(file_get_contents('php://input'), true);

Может быть CMS имеет способ читать json из реквеста своим оброзом?


Ответы (2 шт):

Автор решения: Blay Wille

Да, попадается иногда \CUtil::JsObjectToPhp

Вот например, навскидку написал:

class MyJSON extends CModule 
{

    public function __construct($strJSON)
    {
        $this->strJSON=$strJSON;
    }

    public function isJson($string)
    {
        json_decode($string);
        return (json_last_error() == JSON_ERROR_NONE);
    }


    private function query($url)
    {
        if($this->access_token === false)
            return false;

        $http = new HttpClient();
        $http->setHeader("authorization", "Bearer ".$this->access_token);
        $result = $http->get($url);

        if(!defined("BX_UTF"))
        {
            $result = CharsetConverter::ConvertCharset($result, "utf-8", LANG_CHARSET);
        }

        $result = CUtil::JsObjectToPhp($result);

        return $result;
    }       

    public function getDownloadToken()
    {
        $url = 'https://clou12d.mai1123l.ru/api/v2/tokens/download';

        $postData = ''
                . 'api=2'
                . '&build=' . $this->build
                . '&email=' . $this->user //. '%40mail.ru'
                . '&token=' . $this->token
                . '&x-email=' . $this->user //. '%40mail.ru'
                . '&x-page-id=' . $this->x_page_id;

        $result = $this->Post($url, $postData);
        if ($result !== 'error') {
            $result = \CUtil::JsObjectToPhp($result);
            if($result['body']['token'])
            {
                $this->downloadToken = $result['body']['token'];
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }   


}

var_dump(\MyJSON->isJson("{'key':'val'}"))
→ Ссылка
Автор решения: 110nn
$context = \Bitrix\Main\Context::getCurrent();
$arData = $context->getRequest()->getJsonList()->toArray();
→ Ссылка