Как получить данные из реквеста пришедшие в 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();