- RequiestHeader sınıfından nesne oluşturulup, servis erişim bilgileri atanır:
$reqHeader = new \ClientInterfaceService_RequestHeader();
$reqHeader->InstitutionId = WS_INSTITUTION_ID;
$reqHeader->Username = WS_USERNAME;
$reqHeader->Password = WS_PASSWORD;
- Hangi servis kullanılacaksa o servisin
Request sınıfından nesne oluşturulur Örnek kodda CustomerInquiryRequest yani e-fatura mükellefi olup olmadığını sorgulama:
$wsRequest = new \ClientInterfaceService_CustomerInquiryRequest();
- Oluşturulan request nesnesine, oluşturulan header bilgisi atanır.
(Not: Header otomatik oluşturulan request class'ta tanımlı değil ama olması gerekiyor):
$wsRequest->Header = $reqHeader;
- Request nesnesine, ilgili request için gerekli özelliklerin tümü eklenir. Örnekte vergi numaraları dizi olarak eklenmiştir. Diğer kullanım örneklerinde gerektiğinde başka sınıflardan nesneler oluşturulup request özelliklerine eklenmiştir. Hangi request'e hangi özellikler ekleneceği servis dökümantasyonunda belirtilmiştir veya WSDL şeması ya da oluşturulan sınıf hiyerarşisinden tespit edilebilir:
$wsRequest->IdentityNumbers = array($vergino1, $vergino2);
- Kullanılacak olan web servisi sınıfından yeni nesne oluşturulup,
request özelliğine 2. adımda oluşturulan request nesnesi atanır:
$request = new \ClientInterfaceService_CustomerInquiry();
$request->request = $wsRequest;
- Web servisi çağrılıp, hata oluşup oluşmadığı kontrol edilir:
try {
$response = $ws->CustomerInquiry($request);
} catch (Exception $exception) {
echo "<p class='sRed'>Hata oluştu: <br/>";
echo $exception->getMessage() ."</p>";
$response = false;
}
- Yanıt alındıysa
response nesnesinin ilgili servis yanıtı (örnekte CustomerInquiryResult) alınıp, anahtarlı diziye çevrilebilir veya istenilirse direkt nesne olarak kullanılabilir.
Her serviste ortak olarak Header özelliği bulunmaktadır. Burada hata kodları ve mesajlarından faydalanılabilir. ResponseCode='0000' olması işlemin başarılı olduğunu gösterir.
Response nesnesi her serviste farklı içeriğe sahiptir, bunun için servis dökümanı, WSDL şeması veya sınıf hiyerarşisinden faydalanılabilir.
if ($response) {
//yanıt alındıysa...
$result = json_decode(json_encode($response->CustomerInquiryResult), true);
echo "<h3>Servis Yanıtı</h3>";
if ($result['Header']) {
echo "<p>Message: " . $result['Header']['Message'];
echo "<br>Response Code: " . $result['Header']['ResponseCode'];
echo "<br>Status: " . $result['Header']['Status'];
echo "</p>";
} else {
//yanıt alınamadıysa...
}