> ## Documentation Index
> Fetch the complete documentation index at: https://docs.muhasip.pro/llms.txt
> Use this file to discover all available pages before exploring further.

# PHP ile ilk entegrasyon

> cURL ile Basic kimlikli isteği gönderin; HTTP, JSON ve kaynak sonucunu ayrı değerlendirin.

PHP 8 veya üzeri ve cURL uzantısı kullanın. Aşağıdaki örnek yalnız uygulama listesini okur. Ortam değişkenlerini [kimlik rehberindeki](/baslangic/kimlik-ve-izinler) şekilde sunucunuzda sağlayın.

```php theme={null}
<?php
$apiUserId = getenv('MUHASIP_API_USER_ID');
$secretKey = getenv('MUHASIP_API_SECRET');
if (!$apiUserId || !$secretKey) {
    throw new RuntimeException('API kimlik bilgileri eksik.');
}

$handle = curl_init('https://api.muhasip.pro/apps');
curl_setopt_array($handle, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
    CURLOPT_USERPWD => $apiUserId . ':' . $secretKey,
    CURLOPT_HTTPHEADER => ['Accept: application/json'],
    CURLOPT_CONNECTTIMEOUT => 10,
    CURLOPT_TIMEOUT => 30,
]);
$body = curl_exec($handle);
$httpStatus = curl_getinfo($handle, CURLINFO_RESPONSE_CODE);
curl_close($handle);
if ($body === false) {
    throw new RuntimeException('Bağlantı tamamlanamadı.');
}
try {
    $data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
} catch (JsonException $error) {
    throw new RuntimeException('JSON olmayan cevap; HTTP ' . $httpStatus);
}
if ($httpStatus !== 200 || ($data['status'] ?? null) !== true) {
    throw new RuntimeException('İstek başarısız; HTTP ' . $httpStatus);
}
$apps = $data['result'] ?? [];
echo 'Uygulama sayısı: ' . count($apps) . PHP_EOL;
```

## Yazma işlemlerine geçerken

`Content-Type: application/json` kullanın ve gövdeyi ilgili işlemin sözleşmesine göre gönderin. Gövdenin her zaman `data` içine alınması gerektiğini varsaymayın. Gereken çağrıda `Idempotency-Key` değerini işe başlamadan önce kalıcı olarak saklayın.

İşlem referanslarındaki PHP örnekleri ham cevabı `$response` içinde tutar. JSON için `json_decode` kullanın; HTML/PDF veya base64 içeriği JSON sanarak ayrıştırmayın. Başarılı cevabın `result`, `resultData` veya başka alanını ilgili şemaya göre işleyin. Ham cevapları genel loglara yazmayın.

Zaman aşımı mali işlemin gerçekleşmediğini kanıtlamaz. HTTP 409/422/502/503 için aynı geri dönüş davranışını kullanmayın. [İşlem takibi](/rehberler/islem-takibi) · [Hata yönetimi](/rehberler/hata-yonetimi)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.