@html_student
Молодой и глупый.

Как запросы отправлять в data-raw?

Вожусь с оплатой 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
  • Вопрос задан
  • 894 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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