Регистрируем новое приложение, не забыв отметить чекбокс "Использовать проверку подлинности приложения (OAuth2 client_secret)"; сразу при регистрации (либо в любой момент позже, открыв перечень приложений) - вводим необходимые данные: в полях "Адрес сайта" и "Redirect URI" указываем один и тот же url, по которому у вас находится показанный далее скрипт авторизации и получения токена:
<?php
$client_id = "******";
$client_secret = "*****";
$redirect_uri = "http://*****.php";
if (empty($_GET['code'])) {
$url = "https://money.yandex.ru/oauth/authorize";
if($curl = curl_init()) {
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_POSTFIELDS, "client_id=".$client_id ."&response_type=code&redirect_uri=" . $redirect_uri . "&scope=account-info operation-details");
$out = curl_exec($curl);
curl_close($curl); }
} else {
$url = "https://money.yandex.ru/oauth/token";
if($curl = curl_init()) {
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_POSTFIELDS, "code=".$_GET["code"]."&client_id=". $client_id . "&grant_type=authorization_code&redirect_uri=" . $redirect_uri . "&client_secret=" . $client_secret);
$out = curl_exec($curl);
curl_close($curl); }
}
Будьте внимательны, ряд ссылок на сервисы и документы Яндекса устарел и был удален.
Полученные "Идентификатор приложения" и "OAuth2 client_secret" переносим в скрипт, затем открываем его в браузере. Видим приглашение:
Приложение «Test» запрашивает доступ к вашему кошельку
Если хотите разрешить доступ, сначала войдите под своим логином и паролем. Если сомневаетесь, откажитесь.
Авторизуемся, соглашаемся со всем, о чем спрашивают, вводим код, полученный в sms:
Запрос доступа к кошельку
Приложение «Test» просит разрешения:
видеть информацию о кошельке: статус, баланс, привязанные карты, видеть детали операций — что вы покупали, кому переводили и от кого получали деньги, на какие суммы.
Вуаля, открывается новая страничка, на которой теперь красуется один-единственный наш access_token (как утверждает документация Яндекса, полученный токен действителен в течение аж трех лет); теперь всего только и нужно, что скопировать его и подставить во второй, финальный наш скрипт (первый больше не понадобится, удаляем):
<?php
$token = "*****";
$url = "https://money.yandex.ru/api/account-info";
/* $url = "https://money.yandex.ru/api/operation-details"; */
$header = array();
$header[] = "Authorization: Bearer ".$token;
if($curl = curl_init()) {
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
/* curl_setopt($curl, CURLOPT_POSTFIELDS, "operation_id=1234567"); */
$out = curl_exec($curl);
curl_close($curl);
$out = json_decode($out);
print_r ($out); }
После чего открываем теперь уже его в браузере, и видим информацию о нашем яндекс-кошельке, что-нибудь вроде:
stdClass Object ( [account] => 41001********* [balance] => 0 [currency] => 643 [account_type] => personal [identified] => [account_status] => named [balance_details] => stdClass Object ( [total] => 0 [available] => 0 ) )
Все получилось.