Вожусь с оплатой lava
Раньше был сделан модуль по этому апи
https://dev.lava.ru/invoicecreate
Теперь нужно переделать на бизнес
https://dev.lava.ru/api-invoice-create
Собственно было
$data = array(
'wallet_to' => $wallet,
'sum' => $amount,
'order_id' => $order->id,
'hook_url' => $settings['hook_url'],
'success_url' => $success_url,
'fail_url' => $fail_url,
'expire' => 1440,
'subtract' => '1',
'comment' => $comment,
'merchant_name' => $settings['merchant_name']
);
Теперь так, добавляем секретный ключ, убирае токен, добавляем id shop и также формируем сигнатуру
https://dev.lava.ru/api-invoice-sign
Стало
$secretKey = "6cc765db400218ab83394f4f3c8e00866b05a0vq";
$data = array(
'shopId' => $shopId,
'sum' => $amount,
'order_id' => $order->id,
'hook_url' => $settings['hook_url'],
'success_url' => $success_url,
'fail_url' => $fail_url,
'expire' => 1440,
'subtract' => '1',
'comment' => $comment,
'merchant_name' => $settings['merchant_name']
);
ksort($data);
// Сама сигнатура
$signature= hash_hmac("sha256", json_encode($data), $secretKey);
$data = json_encode($data + ['signature' => $signature]);
Тут вроде всё понятно.
Дальше через курл отправляем запрос. По апи пишут так
Заголовки 'Accept: application/json','Content-Type: application/json'обязательны. Все запросы отправлять в data-raw
Было так
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.lava.ru/invoice/create");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: ".$jwt_token));
$response = json_decode(curl_exec($ch),true);
curl_close($ch);
Стало так, получается передаем обязательные заголовки в CURL запросе. Меняется url запроса.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.lava.ru/business/invoice/create");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json","Content-Type: application/json"));
$response = json_decode(curl_exec($ch),true);
curl_close($ch);
А как понимать это?
Все запросы отправлять в data-raw