Məzmuna keçin

Integrify (PHP)

Azərbaycan servislərinin API-lərini bir kiçik, ardıcıl klient abstraksiyası arxasında birləşdirən PHP kitabxanaları ailəsi.

Hər inteqrasiya ayrıca Composer paketidir: yalnız istifadə etdiyinizi quraşdırırsınız, hamısı isə eyni Integrify\ namespace kökünü və eyni qaydaları paylaşır.

composer require integrify/epoint
composer require guzzlehttp/guzzle nyholm/psr7

Paketlər

Paket Servis
integrify/core Ortaq mexanika: Client, Transport, Response, DTO qatı
integrify/azericard Azericard — kart ödənişləri (MPI) və pul köçürmələri (MT)
integrify/clopos Clopos — POS: menyu, müştərilər, sifarişlər, çeklər
integrify/epoint EPoint — kart ödənişləri
integrify/kapitalbank Kapital Bank — kart ödənişləri
integrify/lsim LSIM — SMS
integrify/postaguvercini Posta Güvercini — SMS

integrify/ecustoms (DGK Carriers V4) məxfidir və ayrıca, qapalı repodadır.

Dörd qayda

Bütün paketlər eyni formadadır, ona görə birini öyrənmək hamısını öyrənmək deməkdir.

Endpoint-lər adi, tipli metodlardır. Magic dispatch yoxdur; $client->pay(...) IDE-də görünür, PHPStan onu yoxlayır.

Konfiqurasiya obyektdir, qlobal vəziyyət deyil. fromEnvironment() adlandırılmış konstruktordur — dəyərlər bir dəfə, obyekt yaradılarkən oxunur. Testlər heç bir mühit dəyişəni olmadan işləyir.

Uğursuzluq exception-dur. Metodlar konkret tip qaytardığı üçün xətanı qaytarış dəyəri ilə bildirmək mümkün deyil: şəbəkə problemi və HTTP >= 400 RequestFailed atır. Servisin HTTP 200 ilə bildirdiyi məntiqi xətalar isə cavab DTO-sundadır (isSuccessful()), və throwOnFailure() ilə exception-a çevrilir.

Sorğu göndərmədən yoxlamaq olar. RecordingTransport sorğuları yadda saxlayır və hazır cavabları qaytarır, yəni HTTP klientini mock etmək lazım deyil:

use Integrify\Http\RecordingTransport;
use Integrify\Response;

$transport = new RecordingTransport();
$client = new EPointClient(EPointConfig::fromEnvironment(), $transport);

$transport->queue(Response::json(['status' => 'success']));

$client->pay(amount: 10.5, orderId: '123');

$transport->lastRequest()->body;   // nə göndərildi

Bu sənədlər haradan gəlir

API Referansı səhifələri mənbədən qurulur: composer docs paketlərin üzərindən refleksiya ilə keçir və hər DTO-nun property-lərini, onların məftildəki adlarını (#[Field(name: ...)]) və qaydalarını cədvələ yazır. Paketlərin giriş səhifəsi isə README-nin özüdür — mətn iki yerdə saxlanılmır.

Python qarşılığı üçün: integrify-python.