Я пытаюсь установить соединение с сервером детской площадки Klarna. Для этого случая мне нужно создать сеанс HPP с session_id от клиента. Я уже получаю session_id с помощью cURL, но когда я пытаюсь отправить другой запрос cURL, тип содержимого равен NULL.
Я попытался создать функцию для правильной установки параметров cURL, которая прекрасно работает для создания КПсеанс для получения session_id от Klarna, но не для сессии HPP.
Этот код предназначен для установки параметров сеанса cURL, поскольку меняются только URL-адрес и данные, поэтому я предоставляю их в качестве параметра.
private function executeCurl( $url, $data ) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $this->setHeader()); // set header for request
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); // set authorization
curl_setopt($ch, CURLOPT_USERPWD, $this->username() . ":" . $this->password()); // set authorization
curl_setopt($ch, CURLOPT_URL, $url); // set URL
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // set data for request
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$curl = curl_exec($ch);
$info = curl_getinfo($ch);
var_dump($info);
curl_close($ch);
return $curl;
}
В этой функции KP session_idправильно создан и вызывает функцию hostpayment.
public function start() {
$data = $this->createJson();
$curl = $this->executeCurl("https://api.playground.klarna.com/payments/v1/sessions", $data);
$data = json_decode($curl,true);
$session_id = $data["session_id"];
$this->hostpayment($session_id);
}
В этой функции должен быть создан сеанс HPP.
public function hostpayment($session_id) {
$url = "https://api.playground.klarna.com/payments/v1/sessions/" . $session_id;
$data = $this->createSessionJson($session_id);
$curl = $this->executeCurl($url, $data);
$data = json_decode($curl,true);
}
Я ожидаю, что вывод cURL в обоих случаях будетто же самое, за исключением URL-адреса и данных.
curl_getinfo опередил следующее для сеанса KP:
{ ["url"]=> string(54) "https://api.playground.klarna.com/payments/v1/sessions" ["content_type"]=> string(16) "application/json" ["http_code"]=> int(200) ["header_size"]=> int(290) ["request_size"]=> int(271)}
Запрос HPP выдает следующее:
{ ["url"]=> string(91) "https://api.playground.klarna.com/payments/v1/sessions/53ac5196-ced3-7573-96c7-332a7b8ab0ae" ["content_type"]=> NULL ["http_code"]=> int(204) ["header_size"]=> int(212) ["request_size"]=> int(307)}
Вы видите, что тип контента во второмзапрос равен нулю, а код HTTP - 204, поэтому запрос выполнен успешно, но заголовок установлен неправильно.