Hello im trying to get work REST API of one company but they are using POST and GET requests which i have never seen. I was studying whole day and i understand some things. I probably need to use cUrl or html forms but guess cUrl is easier. How can i do this post request by cUrl in 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 trying this one but it wont send data correctly.
$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");
$client_id should not be quoted in the array as it is not sending the value of variable it is sending $client_id as a header instead of its value
If it's the first time you work with an API, I think it's useful to use an API Client (like Postman Chrome app) to try request before code.
So concerning your current request, there are some problems :
For the user auth, you can use CURLOPT_HTTPAUTH
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, 'username:password');
"grant_type" and "scope" are not headers but data, so pass there like :
$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));
keep in mind that this function is only to process auth, and normaly return a token that after you must pass at every request.