@maksim_fix
Junior PHP developer

Почему не работает QIWI API 400 Bad Request?

Решил выставить счет через QIWI API. Использую Laravel. Делал все по примеру: подключил SDK, все работает. Ввел верный ключ(при вводе неверного приходит другая ошибка), но при попытке выставить счет получаю ошибку 400. Вот логи:
[2020-01-10 19:14:49] local.ERROR: HTTP/1.1 400 Bad Request {"exception":"[object] (Qiwi\\Api\\BillPaymentsException(code: 400): HTTP/1.1 400 Bad Request at /home/riimukrg/roulette.anonask.ru/vendor/qiwi/bill-payments-php-sdk/src/BillPayments.php:592)
Вот эта самая строка 592:
if (true === $this->internalCurl->error) {
            throw new BillPaymentsException( //ВОТ ОНА
                clone $this->internalCurl,
                $this->internalCurl->error_message,
                $this->internalCurl->error_code
            );
        }

Мой код:
$billPayments = new Qiwis('xxxxxxxxx');

        $billId = '89393155728';
        $fields = [
            'amount' => 1.00,
            'currency' => 'RUB',
            'comment' => 'test',
            'expirationDateTime' => '2018-03-02T08:44:07+03:00',
            'email' => 'example@mail.org',
            'account' => 'client4563',
        ];

        $billPayments->createBill($billId, $fields);

Не обращайте внимания на Qiwis, все нормально, так и должно быть, я сделал для удобства
Целый день убил. Помогите, пожалуйста
  • Вопрос задан
  • 1154 просмотра
Пригласить эксперта
Ответы на вопрос 1
@felllixk
Друже, я тут тоже пытался создать ссылку на оплату, Вообщем, сделал всё в ручную

$SECRET_KEY = "твой секретный код";
$ch = curl_init();
$billid =  "какой-нибудь уникальный айди";
$timexpr = date(DATE_ATOM,time()+120); // 120 это сколько секунд до закрытия

$data = array(
    'amount' => array(
        "currency" => 'KZT',
        "value" => '10'
    ),
    "comment" => "Тестируем апи",
    "expirationDateTime" => "$timexpr",
    "customer" => array(
        "phone" => "88003553535",
        "email" => "kakoito@gmail.com",
        "account" => "kakoito"
    )
);
$data = json_encode($data); // обязательно в джава массив перегнать надо 
curl_setopt($ch,CURLOPT_URL,"https://api.qiwi.com/partner/bill/v1/bills/$billid");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_HTTPHEADER,array(
    'content-type: application/json',
    'accept: application/json',
    "Authorization: Bearer $SECRET_KEY"
));

$result = curl_exec($ch);
if(curl_errno($ch)){
    echo curl_error($ch);
}
curl_close($ch);
print_r($result);


Кстати ошибка bad request : Что у тебя массив с настройками не правильно задан, в моём случае $date;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы