I
I
Igor2018-12-05 14:20:16
PHP
Igor, 2018-12-05 14:20:16

How to pull data from JSON?

Good afternoon, I ran into a problem, according to the tinkoff API.
Upon successful payment, they send a JSON array with data
. Example:

TYK
{
  "TerminalKey":"1510572937960",
  "OrderId":"test2",
  "Success":true,
  "Status":"CONFIRMED",
  "PaymentId":2006896,
  "ErrorCode":"0",
  "Amount":102120,
  "CardId":867911,
  "Pan":"430000**0777",
  "ExpDate":"1122",
  "Token":"d0815e288f121255d5d6b77831fb486cc5e9f91914a3f58a99b6118b54676d84"
}


And they say that the rest of the data is put in DATA
DATA	String	Дополнительные параметры платежа, переданные при создании заказа

But they don’t write how to get the Email field from there
. As I understand it, it should look like this? Or not so, in general I can’t get data about Email Handler script code:
"DATA" : {"Email": "[email protected]", "Another":"Test"}
TYK
<?php
require '../bot/vendor/autoload.php'; //Подключаем библиотеку
use Telegram\Bot\Api;

$telegram = new Api('API_TOKEN'); //Устанавливаем токен, полученный у BotFather


$result = json_decode(file_get_contents('php://input'));

if($result->Status == CONFIRMED ){

    $Amount = $result->Amount/100;

    echo "OK"; // Отсылаем ответ тинькову что получили нотификацию

    /*
    echo $result->Status.'<br>';
    echo 'Новый платеж: '.$result->OrderId;
    echo '<br>Сумма: '.$Amount;
    echo '<br>Информация : '.$result->DATA;
*/
    if ($result->Success == true) {

        $reply = "
<code>Новый платеж: </code>$result->Status
<code>Сумма: </code> $Amount р.
<code>Номер заказа: </code>$result->OrderId
<code>Информация: </code>$result->DATA";

        $telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'text' => $reply ]);
    }
}

elseif($result->Status == AUTHORIZED ){

    echo "OK"; // Отсылаем ответ тинькову что получили нотификацию
/*
    echo '<br>'.$result->Status.'<br>';
    echo 'Деньги захолдированы на карте клиента. Ожидается подтверждение операции*';
*/
}

elseif($result->Status == REVERSED ){

    echo "OK"; // Отсылаем ответ тинькову что получили нотификацию
/*
    echo $result->Status.'<br>';
    echo 'Операция отменена';
*/
}

elseif($result->Status == REFUNDED ){
   
    echo "OK"; // Отсылаем ответ тинькову что получили нотификацию
 /*
    echo $result->Status.'<br>';
    echo 'Произведён возврат';
  */
}

elseif($result->Status == PARTIAL_REFUNDED ){

    echo "OK"; // Отсылаем ответ тинькову что получили нотификацию
 /*
    echo $result->Status.'<br>';
    echo 'Произведён частичный возврат';
  */
}

elseif($result->Status == REJECTED ){

    echo "OK"; // Отсылаем ответ тинькову что получили нотификацию
    /*
       echo $result->Status.'<br>';
       echo 'Списание денежных средств закончилась ошибкой';
       */
}

?>
Documentation
I receive all other data, except for those contained in DATA

Answer the question

In order to leave comments, you need to log in

3 answer(s)
2
2cha.headz, 2018-12-05
@m0pfin

$tmp = $result->DATA;
$email = $tmp[0]->Email;

S
Stalker_RED, 2018-12-05
@Stalker_RED

There is no DATA field in this JSON at all, we disagree.

I
Igor, 2018-12-05
@m0pfin

Ie to get Email you need to specify so?
$result->DATA->Email;

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question