EXPECTED_INTEGER,detail: Ожидается целочисленное значение.,field:amount_money.amount

Я уже прочитал этот сообщение и подтвердил, что отправляю целое число 100 но почему-то постоянно получаю ошибку

Я получаю сумму платежа от POST лайка

$charge_amount = $_POST['charge_amount'];

то в моем API я отправляю его как

$request_body = array (
    "customer_id" => $customer->getId(),
    "customer_card_id" => $card->getId(),
    "amount_money" => array (
        "amount" => $charge_amount,
        "currency" => 'USD'
    ),
    "idempotency_key" => uniqid(),
);

но это не сработало. Поэтому я решил изменить значение статически так

$request_body = array (
    "customer_id" => $customer->getId(),
    "customer_card_id" => $card->getId(),
    "amount_money" => array (
        "amount" => 100,
        "currency" => 'USD'
    ),
    "idempotency_key" => uniqid(),
);

и это сработало.

Почему POST не работает? Я подтвердил, что значение 100 поступает через сообщение с echo $charge_amount. Я даже пытался перейти на "amount" => "$charge_amount",, но это тоже не сработало.

Ошибка, которую я получаю в конце всего этого,

[HTTP/1.1 400 Bad Request] {"errors":[{"category":"INVALID_REQUEST_ERROR","code":"EXPECTED_INTEGER","detail":"Expected an integer value.","field":"amount_money.amount"}]}

person Cesar Bielich    schedule 13.10.2017    source источник
comment
Вам просто нужно привести значение charge_amount к целому числу, например, с помощью intval.   -  person Hackerman    schedule 13.10.2017


Ответы (2)


Вы можете проверить тип данных рассматриваемой переменной, используя var_dump, если это не INT, укажите его как таковой с помощью жонглирование типами:

$my_string = (int) '100';

или с помощью функции intval

$my_string = intval('100');
person Script47    schedule 13.10.2017

$_POST['charge_amount'] будет строкой "100".

Приведите к целому числу, выполнив $charge_amount = (int)$_POST['charge_amount']; или $charge_amount = intval($_POST['charge_amount']); (это два в данном случае функционально идентичны)

person ceejayoz    schedule 13.10.2017