ARNPROXY istemci kütüphaneleri / SDK 1.1.1
PHP 8.1+ (cURL), Python 3.10+, Node.js 20+, Java 17+, Go 1.22+.
Java için Gson bağımlılığı Maven ile alınır. Diğer diller ek paket gerektirmez. Klasör yapısını ve resources.json dosyasını koruyun.
Bu sürüm ince bir istemcidir: request() ile rehberdeki 77 kaynağı çağırır;
sunucu tarafındaki kapalı kaynaklar, hesap/izin/sahiplik ve IP izin listesi denetimleri aynen geçerlidir.
Şu aşamada API yalnız 2 ve 10231 test hesaplarına açıktır. SDK indirmek erişim açmaz.

BAŞLANGIÇ — yalnız account okuması, satın alma veya sağlayıcı çağrısı yok
Anahtarınızı ARNPROXY_API_KEY ortam değişkenine sunucu tarafında yerel/gizli olarak tanımlayın.
Anahtarı kaynak dosyaya yazmayın, tarayıcıya göndermeyin veya SDK klasörüyle paylaşmayın.

PHP (paketin kökünde bir örnek dosya):
<?php
require __DIR__.'/php/Arnproxy.php';
$client = new \ArnproxySdk\Client(getenv('ARNPROXY_API_KEY'));
$response = $client->account();
echo $response['data']['id'], PHP_EOL;

Python (paket kökünde):
from python.arnproxy import Client
import os
client = Client(os.environ['ARNPROXY_API_KEY'])
response = client.account()
print(response['data']['id'])

Node.js (paket kökünde example.mjs):
import {Client} from './node/arnproxy.mjs';
const client = new Client(process.env.ARNPROXY_API_KEY);
const response = await client.account();
console.log(response.data.id);

ORTAK ÇAĞRI
PHP: client->request('order_delivery', ['id'=>KENDI_SIPARIS_ID]);
Python: client.request('order_delivery', {'id': KENDI_SIPARIS_ID})
Node: await client.request('order_delivery', {id: KENDI_SIPARIS_ID})
Tam JSON zarfı döner: ok, data, meta. İstek kimliği meta.request_id içindedir.
HTTP/JSON/taşıma hatasında ArnproxyError oluşur; yanıt gövdesi veya anahtar hata mesajına eklenmez.
PHP hata kodu error_code; Python/Node code. Ortak alanlar: http_status, request_id,
retry_after (saniye veya null), uncertain (yazmanın sonucu belirsiz olabilir).
API, HTTP 200 içinde state=unknown/review döndürebilir; bu normal yanıttır, başarı saymayın.
credentials içeren yanıtları, exception traceback yerel değişkenlerini veya istemci nesnesini loglamayın.

GÜVENLİ VARSAYILANLAR
allow_writes=false ve allow_provider_reads=false. Yerel fiyat sorgusu gibi POST okumaları açıktır.
Sağlayıcı okuması/uzlaştırması için allow_provider_reads=true seçin.
Gerçek değişiklik için allow_writes=true seçin. Bunlar istemci emniyet anahtarlarıdır;
sunucuda API izni vermez. terms/accept_package_scope/accept_current_pricing vb. alanları
istemci kendiliğinden doldurmaz. Gövdeyi ilgili işlem rehberinden hazırlayın.

PHP: new Client($key,['allow_writes'=>true,'allow_provider_reads'=>true]);
Python: Client(key, allow_writes=True, allow_provider_reads=True)
Node: new Client(key,{allow_writes:true,allow_provider_reads:true})

İŞLEM ANAHTARI VE TAKİP
Gerekli uçlarda operation_key değerini siz oluşturup kalıcı olarak saklayın:
16–100 ASCII harf/rakam/_/-. Bu, API anahtarı değildir.
PHP: request('purchase', $hazirGövde, $sabitIslemAnahtari)
Python: request('purchase', body, operation_key=saved_key)
Node: request('purchase', body, {operation_key:savedKey})
İstek yolu/metodu resources.json içinden otomatik seçilir; anahtar URL'ye eklenmez.
Belirsiz yanıtta yeni işlem başlatmayın; aynı işlem anahtarıyla purchase_status gibi
ilgili durum kaynağını sorgulayın. SDK yeni işlem anahtarı üretmez ve tekrar göndermez.
resources.json status_resource alanı ilişkili durum kaynağını gösterir.
GET sorgu değerleri düz metin/tamsayı/bool; dizi gerekiyorsa rehberdeki virgüllü metni kullanın.
POST gövdesi JSON nesnesidir. Sayısal tutarlarda rehberdeki total_minor tamsayılarını kullanın.

SÜRÜM VE SINIRLAR
Sabit hedef: https://www.arnproxy.com/account/api/v1/ . Özel hedef URL/anahtar URL biçimi yoktur.
TLS doğrulaması açık; 3xx takip edilmez; ortam proxy'leri kullanılmaz.
Otomatik tekrar, arka plan işi, toplu yazma, otomatik sayfalama veya durum sorgulama yoktur.
timeout varsayılan 20, aralık 1–60 saniye. Python ağ zaman aşımı bloklayan soket işlemlerini
sınırlar; DNS/başlık okuması için kesin toplam süre garantisi verilmez.
İstek/yanıt boyutu SDK'da en fazla 2 MiB. Daha büyük veri için sayfalayın veya rehberdeki
doğrudan HTTP yöntemini kullanın. Node sayıları güvenli tamsayı sınırını aşamaz.
429 için retry_after süresini bekleyin. SDK sayacı sıfırlamaz veya kendiliğinden tekrar etmez.
SDK sunucudaki yeni kaynaklarla birlikte güncellenmelidir; bu sürüm indirildiği sözleşmeyi taşır.
NPM/PyPI/Composer kaydı yoktur; sürümlü kaynak paketi olarak sunulur.

WEBHOOK — ZORUNLU DEĞİLDİR
PHP: Client::verifyWebhook($rawBytes,$headers,$whsecSecret)
Python: verify_webhook(raw_bytes, headers, whsec_secret)
Node: verifyWebhook(rawBuffer, headers, whsecSecret)
Python/Node yardımcılarını aynı modülden ayrıca içe aktarın.
İmza sırrı API anahtarı değildir. İşlemeden önce ham gövdeyi (yeniden JSON üretmeden)
ve webhook-id / webhook-timestamp / webhook-signature başlıklarını geçirin.
Sunucu saatinizi doğru tutun. İmza HMAC-SHA256, zaman toleransı 300 saniye, gövde sınırı 4096 bayt.
Fonksiyon imza ve zarfı doğrular; iş sonucu, hesap yetkisi veya olayın ilk kez geldiğini kanıtlamaz.
Olay id'sini kendi kalıcı veritabanınızda tekilleştirin; tekrar gelen olayı ikinci kez işlemeyin.
Uygulamanız yalnız tanıdığı olay türlerini işlesin. Bildirimi güvenilir kuyruğa kaydettikten sonra 2xx dönün.
Olay sırası garantisi yoktur. api.request.result HTTP sonucudur; otomatik yenileme ayarı tahsilat değildir.
Webhook kullanmadan aynı işlem durumlarını sorgulayarak da API'yi kullanabilirsiniz.

Rehber: https://docs.arnproxy.com/api-v1/overview
İndirilen dosyalar anahtar, müşteri/proxy bilgisi veya otomatik çalışan örnek içermez.


Java ve Go kullanım ayrıntıları README-EN.txt dosyasındadır. Paket kaynak kodudur; herhangi bir canlı işlem otomatik çalışmaz.
