Bmbariah Bmbariah - 2 months ago 8
PHP Question

php pass var to curl request

I'm having a bit of an issue with curl. It simply wont take $variables.. Kindly assist. The rest of the curl request is correct and I've managed to isolate it

Here is what I've tried

CURLOPT_POSTFIELDS => "{\"msisdn\":$msisdn, \"transactionId\": $_id, \"transactionAmount\": $amount}",

$payload = json_encode(array("msisdn"=> $s_msisdn,"transactionId"=>$_id, "transactionAmount"=>$_amount));
...
CURLOPT_POSTFIELDS => $payload,


EDIT: Full request

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_PORT => "5001",
CURLOPT_URL => "http://123.123.23.11:5001/demo",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\"msisdn\":"'.$_msisdn.'", \"transactionId\": "'.$_id.'", \"transactionAmount\": "'.$_amount.'"}",
CURLOPT_HTTPHEADER => array(
"authorization: Basic abcdefgh",
"content-type: application/json",
),
));

Answer

Here is what you can use. Your JSON string is not got the correct quotations. I personally find it easier to use an array then json_encode it, it saves having to worry about escaping variables.

$data = array (
    "msisdn" => $_msisdn,
    "transactionId" => $_id,
    "transactionAmount" => $_amount,
);
$jsonData = $json_encode($data);
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_PORT => "5001",
    CURLOPT_URL => "http://123.123.23.11:5001/demo",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => $jsonData,
CURLOPT_HTTPHEADER => array(
    "authorization: Basic abcdefgh",
    "content-type: application/json",
),
));

This is more closer to your code with the JSON fixed.

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_PORT => "5001",
    CURLOPT_URL => "http://123.123.23.11:5001/demo",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => "{\"msisdn\": \"{$_msisdn}\", \"transactionId\": \"{$_id}\", \"transactionAmount\": \"{$_amount}\"}",
CURLOPT_HTTPHEADER => array(
    "authorization: Basic abcdefgh",
    "content-type: application/json",
)
));
Comments