kenangms1 yazdı: 06.03.2023, 16:19
Merhaba arkadaşlar; Bir konuda takıldım çözüm yolu bulamadım o yüzden yardımlarınızı rica edeceğim.
Biraz araştırdım ancak sonuç olarak işime yarayacak bir şey bulamadım.
3 tane yedek parça firması ile anlaşmam var 2 tanesi xml olarak bana ürünleri sağlıyor ancak bir firma sadece servisapi şeklinde bir uygulama dosyasını sunuyor bu b2b olarak kullanılmak için uygun ancak bana xml olarak veri alabilmem gerekli. ben uğraşarak 2 defada json olarak alabiliyorum ama her defasında aldığım token i diğerine tanımlayıp öyle alabiliyorum.
token aldığım kod:
Kod: Tümünü seç
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://servis.basbug.com.tr/api/B2B/Giris',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"KullaniciAd": "*****",
"Sifre": "******"
}',
CURLOPT_HTTPHEADER => array(
'KullaniciAd: ******',
'Sifre: ******',
'Authorization: Basic TVMwNDI3Ok1TMDQyNw==',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
bu kod ile aldığım tokeni de alttaki sayfaya yazarak ürünleri çekebiliyorum.
Kod: Tümünü seç
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://servis.basbug.com.tr/api/Malzeme/MalzemeleriGetir',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"FirmaAdi": "BASBUG",
"ListeGrubu": "FORD"
}',
CURLOPT_HTTPHEADER => array(
'Token: 9c51b5bd-728d-4f20-9d41-ea5288b3c2bc',
'Authorization: Basic TVMwNDI3Ok1TMDQyNw==',
'Content-Type: text/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
bunu tek sayfada yapmam mümkün mü? sayfaya girdiğimde tokeni otomatik olarak alıp ürünleri getirebilir miyim?
Evet, token alımını ve ürünleri çekme işlemini tek bir sayfada birleştirmeniz mümkün. Aşağıda, token alımını gerçekleştiren ve ardından ürünleri çeken bir PHP kodu örneği bulabilirsiniz. Bu kod, sayfa yüklendiğinde otomatik olarak token alacak ve ürünleri getirecektir.
Kod: Tümünü seç
<?php
// Token alma fonksiyonu
function getToken() {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://servis.basbug.com.tr/api/B2B/Giris',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode(array(
"KullaniciAd" => "*****", // Kullanıcı adınızı buraya yazın
"Sifre" => "******" // Şifrenizi buraya yazın
)),
CURLOPT_HTTPHEADER => array(
'Authorization: Basic TVMwNDI3Ok1TMDQyNw==',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
// JSON yanıtını diziye çevir
$responseData = json_decode($response, true);
// Token'ı döndür
return $responseData['Token'] ?? null; // Token'ı döndür, yoksa null döner
}
// Ürünleri çekme fonksiyonu
function getProducts($token) {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://servis.basbug.com.tr/api/Malzeme/MalzemeleriGetir',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode(array(
"FirmaAdi" => "BASBUG",
"ListeGrubu" => "FORD"
)),
CURLOPT_HTTPHEADER => array(
'Token: ' . $token,
'Authorization: Basic TVMwNDI3Ok1TMDQyNw==',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response; // Ürünleri döndür
}
// Sayfa yüklendiğinde token al ve ürünleri getir
$token = getToken();
if ($token) {
$products = getProducts($token);
echo $products; // Ürünleri ekrana yazdır
} else {
echo "Token alınamadı.";
}
?>
Açıklamalar:
getToken() Fonksiyonu: Bu fonksiyon, API'den token almak için gerekli cURL ayarlarını yapar ve yanıtı döndürür.
getProducts() Fonksiyonu: Bu fonksiyon, alınan token ile ürünleri çekmek için gerekli cURL ayarlarını yapar ve yanıtı döndürür.
Sayfa Yüklenmesi: Sayfa yüklendiğinde önce token alınır, ardından bu token ile ürünler çekilir ve ekrana yazdırılır.
Dikkat Edilmesi Gerekenler:
1.Kullanıcı adı ve şifre bilgilerinizi doğru bir şekilde girin.
2.API yanıtlarının yapısını kontrol edin; örneğin, token'ı almak için dönen yanıtın yapısına göre json_decode fonksiyonundaki anahtarları güncelleyebilirsiniz.
3.Tüm bu işlemleri yapmadan önce mutlaka orjinal dosyaların yedeklerini alın.