Curl'de bazı argümanları iletmeye çalışıyorum ancak test verilerini (basit dizeler) kullandığımda sonucu alabileceğimi (payId ve payUrl) ancak test verileri yerine değişkenleri kullandığımda hiçbir şey geri alamayacağımı fark ettim.
Bu tür bir sorunu gidermenin en iyi yolu nedir? Bu benim ilk kez Curl kullanıyorum, bu yüzden burada bulduğum makalelere dayanarak bu işlevi oluşturuyorum.
Örneğin," name " i $clientName ile değiştirirsem, apı'den herhangi bir geri dönüş almayacağım.
function generatePayment($sendId, $clientCPF, $clientName, $clientEmail, $clientCep, $clientPhone, $amount){
// CONFIG
$urlCallBack = "http://192.168.0.79/sistema/admin/shipList.php?transactionStatus=success";
$urlError = "http://192.168.0.79/sistema/admin/shipList.php?transactionStatus=failed";
$debug = true;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'urlhere');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\n\t\"reference\": \"my-order-ref-0001\",\n\t\"client\": {\n \t\"cpf\": \"43164853858\",\n \t\"name\": \"John Doe\",\n \t\"email\": \"[email protected]\",\n \t\"birthdate\": \"1982-01-14\",\n \t\"cep\": \"18053190\",\n \t\"phone\": \"15987452584\"\n\t},\n\t\"items\": [\n \t{\n \t\"reference\": \"my-item-ref-0001\",\n \t\"description\": \"Apple iMac 21.5-inch\",\n \t\"quantity\": \"1\",\n \t\"amount\": 149900\n \t},\n \t{\n \t\"reference\": \"my-item-ref-0002\",\n \t\"description\": \"Apple iPhone 11 Pro\",\n \t\"quantity\": 1,\n \t\"amount\": 99900\n \t}\n\t],\n \"coupon\": {\n \"code\": \"10DESCONTO\",\n \"value\": 1000,\n \"issuer\": \"merchant_api\"\n },\n\t\"shipping\": {\n \"amount\": 1000\n\t},\n\t\"redirect\": {\n \t \"success\": \"https://example.com/sp_callback?success\",\n \t \"failed\": \"https://example.com/sp_callback?failed\"\n\t}\n}");
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Authorization: Bearer '.$_POST['token'];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
} else {
if ($debug){
echo "<BR><BR><BR> DATA PASSED TO FUNCTION <BR>";
echo "<br>sendId ===> ".$sendId;
echo "<br>clientCPF ===> ".$clientCPF;
echo "<br>clientName ===> ".$clientName;
echo "<br>clientEmail ===> ".$clientEmail;
echo "<br>clientCep ===> ".$clientCep;
echo "<br>clientPhone ===> ".$clientPhone;
echo "<br>amount ===> ".$amount;
$decode = json_decode($result,true);
echo "<BR><BR> DATA RECEIVED FROM API <BR>";
echo '<br> payId generated by API ==> '.$payId = $decode['data']['order_id'];
echo '<br> PayURL generated by API ==>'.$payUrl = $decode['data']['url_checkout'];
} else {
$decode = json_decode($result,true);
$transactionId = $decode['data']['order_id'];
$payUrl = $decode['data']['url_checkout'];
$_SESSION['transactionUrl'] = $decode['data']['url_checkout'];
$_SESSION['transactionId'] = $transactionId;
$_SESSION['sendId'] = $sendId;
}
}
curl_close($ch);
// END GENERATE PAYMENT
}
Sorun giderme konusunda herhangi bir yardım takdir edilmektedir.
JSON kullanarak Kodu Güncelleme
//INITIALIZE
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://sandbox.splipay.com/api/orders');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
// POST
$post = array(
"items" => array (
"description" => "Test",
"quantity" => 1,
"amount" => 10
),
"redirect" => array (
"success" => "www.success",
"failed" => "www.success"
)
);
$post = json_encode($post);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
// HEADERS
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Authorization: Bearer '.$_POST['token'];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//EXECUTE
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
} else {
$arr = json_decode($result);
echo "<br><br>Return from VAR_DUMP";
var_dump ($arr);
echo "<BR><BR>INFO RETURN<BR>";
$info = curl_getinfo($ch);
var_dump ($info);
// $_POST['token'] = $arr['access_token'];
}
curl_close($ch);
Belgelere göre, bunlar API'ye iletmem gereken tek değerlerdir ve aşağıdaki yanıtı alırım (örnek):
{ "başarı": doğru, "veriler": { "sipariş_adı": 57, "url_checkout": "https://sandbox.splipay.com/payment/4openRe7Az/kzPdyP7bQr?expires=1583164527&signature=e1caae419137903f930f5a5b3d4c72608a61c0fdd36c70803d4a92c15556a4c5" } }