2015-07-20 3 views
-1

Привет, я пытаюсь получить REST API для одной компании, но они используют запросы POST и GET, которых я никогда не видел. Я изучал целый день, и я понимаю некоторые вещи. Мне, вероятно, нужно использовать cUrl или html-формы, но думаю, cUrl проще. Как я могу сделать этот запрос по почте cUrl в php?Первый раз с использованием cUrl с PHP

curl -v https://testgw.gopay.cz/api/oauth2/token \ 
-X "POST" \ 
-H "Accept: application/json" \ 
-H "Content-Type: application/x-www-form-urlencoded" \ 
-u "<Client ID>:<Client Secret>" \ 
-d "grant_type=client_credentials&scope=payment-create" 

Im пытается этот, но он не будет правильно отправлять данные.

$client_id = "000000:111111"; 

function httpPost($url) 
{ 

    $ch = curl_init(); 

    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    "Content-Type: application/x-www-form-urlencoded", 
    "Accept: application/json", 
    "$client_id", 
    "grant_type=client_credentials&scope=payment-create" 
    )); 

    $output=curl_exec($ch); 

    curl_close($ch); 
    return $output; 

} 

echo httpPost("https://testgw.gopay.cz/api/oauth2/token"); 
+4

'$ client_id' находится за пределами области действия. – Daan

ответ

0

$ client_id не должны быть указаны в массиве, как это не посылающего значение переменной она посылает $ client_id как заголовок, а не его значение

1

Если это первый раз, когда вы работаете с API, я считаю полезным использовать клиент API (например, Postman Chrome app), чтобы попробовать выполнить запрос перед кодом.

Так относительно текущего запроса, есть некоторые проблемы:

  • вы пытаетесь получить маркер, таким образом, создать функцию под названием «Auth» выглядеть лучше.
  • Для Идент.польз, вы можете использовать CURLOPT_HTTPAUTH

    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, 'username:password');

  • "grant_type" и "масштаб" не заголовки, но данные, так что пройти там, как:

    $data = array('grant_type' => 'grant_type_value', 'scope' => 'scope_value'); 
    curl_setopt($request, CURLOPT_CUSTOMREQUEST, "POST"); 
    curl_setopt($request, CURLOPT_POSTFIELDS, http_build_query($data)); 
    

имейте в виду, что эта функция предназначена только для обработки auth, и normaly возвращает токен, который после прохождения каждого запроса.

Смежные вопросы