Bir paneli bota, kendi sitenize ya da başka bir panele bağlarken API\'nin ne olduğuna dair genel anlatım işe yaramaz olur - size çağrıların tam listesi, parametreleri ve yanıt biçimleri gerekir. Bu başvuru alışılmış dokümanlardan farklı kuruldu: gerçek sözleşmeyi on bir canlı panelde ölçtük ve kendi çekirdeğimizle karşılaştırdık. Aşağıda on çağrının tamamı, hizmet türüne göre sipariş alanları ve entegrasyonların en sık kırıldığı üç yer var.

Aşağıdaki başvuru neyin çağrılacağını anlatır. Bu sırada panelin kendisinin neyi denetlemesi gerektiği - miktar sınırları, aynı bağlantıya çift sipariş, müşteri yetkileri, istek bütçesi - için API kötüye kullanımı üzerine ayrı bir yazı var: bu kurallar gözetilmeden yazılan entegrasyon onlara canlı ortamda toslar.

Neredeyse her panel neden aynı API\'yi konuşuyor

Pratikte bütün sektör tek bir protokol konuşur, yaygın adıyla API v2. Bu tarihsel olarak oluştu: bir motor biçimi belirledi, geri kalanlar da başka yerde yazılmış bayi istemcileri kendilerine karşı da çalışsın diye onu kopyaladı. Bir entegratör için bu ender bir şans - bir panel için yazılmış istemci, neredeyse hiç değişiklik olmadan bir başkasında çalışır.

Hepsinde ortak olan tam olarak dört kural var:

Panel sahibi için pratik sonuç: kendi biçiminizi uydurmayın. Özel bir protokol, entegrasyonu hâlihazırda yazılmış bayilerden sizi koparır - ve hacmi getirenler onlardır. Anahtarları neden ve kime dağıtacağınız panel API\'si ve bayilerle çalışmak yazısında.

Yedi action, on çağrı

Standartta yedi action var, ama dördü toplu biçimde de gelir - bu da desteklenecek on ayrı çağrı demektir:

Bu listenin dışındaki her şey tek bir panelin uzantısıdır. Bizimki örneğin order ile tek bir cancel kabul eder ve action=create\'i add ile eşanlamlı sayar - ama bir istemci asla böyle kolaylıklara göre yazılmamalıdır, çünkü sıradaki panelde onlar olmayacak.

Sipariş alanları hizmet türüne bağlı

İlk entegrasyondaki en büyük yanılgı, siparişin bir bağlantı ve bir miktar olduğudur. Bu yalnızca temel türdür. services içindeki type alanı metin bir ad olarak gelir ve add\'in bütün parametre setini o belirler:

İki teknik ayrıntı neredeyse herkesi düşürür. Listeler - yorumlar, anahtar kelimeler, kullanıcı adları, hashtag\'ler - JSON dizisi olarak değil, ayırıcı olarak yeni satır kullanan tek bir metin olarak gönderilir. Ve device ile type_of_traffic\'in arkasındaki sayısal karşılıklar services yanıtında hiç dönmez: o değerleri panelin dokümanından önceden bilmeniz gerekir.

Açıkça kabul etmeye değer bir şey daha: tür numaralandırmasında boşluklar var. Motorların bildiği en az altı numara, ölçtüğümüz panellerin hiçbirinde görünmüyor. Dolayısıyla «her türü destekliyoruz» kimsenin tutamayacağı bir vaat - alıcı panel için doğru strateji, bilinmeyen türde alanları tahmin etmek yerine net bir ret vermektir. Türlerin gerçekte ne anlama geldiği sağlayıcının hizmet türleri yazısında açılıyor.

Entegrasyonların kırıldığı üç yer

Bu üçü neredeyse hiçbir doküman setinde yok, ve açılıştan bir hafta sonra yüzeye çıkan hataları üreten tam olarak onlar.

İptal de aynı listeye ait: standartta tek siparişlik cancel yok, yalnızca toplu olan var. Siparişleri tek tek iptal eden bir istemcinin bile tek elemanlı bir liste göndermesi ve karşılığında bir dizi ayrıştırması gerekir.

Durumlar ve hatalar sabit değil, metindir

Sipariş durumu insan okuyabilir metin olarak gelir: Pending, In progress, Processing, Partial, Completed, Canceled, Fail, Error. Refill\'lerin kendi seti var - Completed, Rejected ve aradaki In progress - ve bilinmeyen bir refill numarası Refill not found olarak döner.

Bu da istemciye dört kural verir:

Durumların alıcı için ne anlama geldiği ve her durumda panelin ona ne borçlu olduğu SMM panelinde sipariş durumları yazısında; teslim edilen hacmin neden eridiği ve refill\'in buna nasıl cevap verdiği drop ve refill yazısında.

Entegrasyon canlıya çıkmadan nasıl sınanır

İlk gerçek siparişten önce neredeyse her şeyi yakalayan altı kontrol:

Sağlayıcı tarafında ek iş var: anahtar başına limitler, çağrı günlüğü ve aynı siparişin iki kez gönderilmesine karşı koruma. Bir bayiye anahtar vermeden önce neyi kontrol etmeli, sağlayıcı olarak SMM hizmetleri nasıl satılır yazısında. Kendi sağlayıcınızın bizim tarafta desteklenip desteklenmediğini sağlayıcı kontrol sayfasında bakabilirsiniz.

Toparlarsak

API v2 basit görünür - tek uç nokta, yedi action - ve tam bu yüzden hafife alınır. Gerçek karmaşıklık üç noktada: hizmet türü sipariş alanlarını belirler, toplu yanıtın biçimi action\'a bağlıdır, ve refill kendi numarasının altında yaşar. Bu üçüne saygı gösteren bir istemci paneller arasında neredeyse hiç düzenleme olmadan taşınır; bunları kaçıran bir istemci siparişleri sessizce kaybeder.

İhtiyacınız olan API başkasının değil kendi panelinizinse, bütün bunlar peşin ödeme olmadan sınanabilir: kendi kataloğumuzdan giden siparişler kaç tane olursa olsun hiç faturalandırılmaz, üçüncü taraf sağlayıcılarda ise ayda ilk 100 sipariş ücretsizdir. Anahtar ve tam dokümantasyon hemen verilir, böylece panelin ilk müşterisi olmadan bir istemci yazıp on çağrının hepsini çalıştırabilirsiniz. O limitin nasıl sayıldığı kiralama planı nasıl hesaplanır yazısında anlatılıyor.