Download the PHP package integrify/azericard without Composer
On this page you can find all versions of the php package integrify/azericard. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download integrify/azericard
More information about integrify/azericard
Files in integrify/azericard
Package azericard
Short Description Azericard inteqrasiyası — kart ödənişləri (MPI) və pul köçürmələri (MT).
License MIT
Homepage https://integrify.mmzeynalli.dev
Informations about the package azericard
Integrify Azericard (PHP)
Azericard inteqrasiyası — kart ödənişləri (MPI, 3-D Secure) və pul köçürmələri (MT).
Composer: integrify/azericard
Kod: https://github.com/integrify-sdk/integrify-php/tree/main/packages/azericard
Sənədlər: https://integrify.mmzeynalli.dev/integrations/azericard
Python qarşılığı: integrify-azericard
[!IMPORTANT] Bu API-nin əksəriyyəti server-server sorğu deyil. Səkkiz əməliyyatdan beşi heç bir HTTP sorğusu atmır: onlar müştərinin brauzerinin Azericard-a özünün göndərməli olduğu formanı qaytarır. Nəticə sonradan sizin callback URL-inizə gəlir.
Kitabxananın yüklənməsi
ext-openssl tələb olunur — MPI sorğuları RSA ilə imzalanır.
İki sistem, iki host, iki açar
| Sistem | Nə üçün | Host (test / prod) | İmza |
|---|---|---|---|
| MPI | kart ödənişləri | testmpi.3dsecure.az / mpi.3dsecure.az |
RSA SHA-256 (P_SIGN) |
| MT | pul köçürmələri | testmt.azericard.com / mt.azericard.com |
MD5 + paylaşılan açar |
[!WARNING] İki açar var və onlar fərqlidir. MPI RSA private key (PEM) istəyir, MT isə adi sətir açarı. Python kitabxanası ikisini də eyni
AZERICARD_KEY_FILE_PATHdəyişənindən oxuyur, halbuki bir fayl hər ikisi ola bilməz. Burada onlar ayrıdır və yalnız istifadə etdiyiniz sistem üçün açar vermək kifayətdir.
Konfiqurasiya
| Dəyişən | Məcburi | Təsvir |
|---|---|---|
AZERICARD_MERCHANT_ID |
✅ | Terminal IDsi |
AZERICARD_KEY_FILE_PATH |
kart üçün | RSA private key faylı (PKCS#1 və ya PKCS#8) |
AZERICARD_TRANSFER_KEY |
köçürmə üçün | MT-nin MD5 açarı |
AZERICARD_MERCHANT_NAME |
kart üçün | Satıcının adı, maksimum 50 simvol |
AZERICARD_MERCHANT_URL |
kart üçün | Satıcının saytı |
AZERICARD_CALLBACK_URL |
kart üçün | Nəticənin post olunduğu URL |
AZERICARD_MERCHANT_EMAIL |
❌ | Satıcının email ünvanı |
AZERICARD_ENV |
❌ | test və ya prod |
AZERICARD_INTERFACE_LANG |
❌ | Dil (default az) |
Ödəniş axını
Öz şablonunuzu qurmaq istəyirsinizsə:
Bloklama və tamamlama
authorize() default olaraq məbləği birbaşa silir. Bloklamaq üçün:
ResponseType |
Nə edir |
|---|---|
AcceptPayment (21) |
bloklanmış məbləği silir |
ReturnPayment (22) |
ödənişi geri qaytarır |
CancelPayment (24) |
bloku azad edir |
Kart yaddaşı
Callback-lər
[!CAUTION] Kart callback-inin imzası yoxlanıla bilmir.
P_SIGNAzericard-ın öz açarı ilə imzalanıb; yoxlamaq üçün onların public açarı lazımdır, sizdə isə yalnız öz private açarınız var. Python kitabxanası da yoxlamır. Ona görə bu callback-i tək başına "ödəniş oldu" sübutu saymayın —getTransactionStatus()ilə təsdiqləyin.
Köçürmə callback-i isə yoxlanılır:
Pul köçürmələri (MT)
Status sorğusu
Bu endpoint cavabında boşluqlu, insan üçün yazılmış açarlar qaytarır
("Transaction Status message", "Banks approval code") — digər endpoint-lərdəki
UPPER_SNAKE deyil. DTO adları olduğu kimi qəbul edir.
Vaxt damğası
Azericard TIMESTAMP field-ini GMT olaraq təyin edir, format YYYYMMDDHHMMSS.
Bu paket həmişə UTC göndərir:
Python kitabxanası
datetime.now()— yəni serverin yerli vaxtını — göndərir. Bakıda bu 4 saat fərq deməkdir və şlüz vaxt fərqinə görə sorğunu rədd edə bilər.
Xətalar
| Exception | Nə vaxt |
|---|---|
MissingConfiguration |
Açar və ya merchant məlumatı yoxdur; AZERICARD_ENV tanınmır |
InvalidRequest |
Məbləğ ədəd deyil; imzalama uğursuz; host tanınmır |
SignatureMismatch |
Köçürmə callback-inin və ya cavabının imzası uyğun gəlmir |
ValidationFailed |
Cavab DTO-ya uyğun gəlmir |
RequestFailed |
Şəbəkə xətası, və ya HTTP >= 400 |
Hamısı Integrify\Exception\IntegrifyException-i implement edir.
Testlər
Forma qaytaran metodlar HTTP atmadığı üçün transport lazım deyil:
İmzanın nəyin üzərində hesablandığını yoxlamaq üçün Signature::macSource()
açıqdır — belə ki, test açardan asılı olmadan düsturu yoxlaya bilir: