İçeriğe atlayın

Entegrasyonlar

Bu sayfada

Sunucu SDK'ları

TypeScript, Python, PHP, Go, .NET, Java, Ruby ve Rust için tiplenmiş istekler ve HMAC imzalama içeren resmî Paymos Merchant API istemcilerini kullanın.

Paymos, sekiz dil ekosistemi için resmî sunucu taraflı SDK'lar geliştirir. Her SDK; aynı faturalar, çekimler, ödeme kanalları, kanal yatırmaları, bakiyeler, sunucu saati, imleç sayfalaması, hata, yeniden deneme, istek imzalama ve webhook doğrulama sözleşmesini kapsar.

Sekiz istemcinin tamamı kendi ekosisteminin paket deposunda yayımlanmıştır. Kurulumu oradan yapın; kaynak kodu okumak için depoyu kullanın.

Dil Paket deposu Kurulum Resmî kaynak
JavaScript / TypeScript npm npm i @paymos/sdk Paymos-labs/typescript-sdk
Python PyPI pip install paymos-sdk Paymos-labs/python-sdk
PHP Packagist composer require paymos/php-sdk Paymos-labs/php-sdk
Go Go modules go get github.com/Paymos-labs/go-sdk/v2 Paymos-labs/go-sdk
.NET NuGet dotnet add package Paymos Paymos-labs/dotnet-sdk
Java Maven Central io.paymos:paymos-java Paymos-labs/java-sdk
Ruby RubyGems gem install paymos Paymos-labs/ruby-sdk
Rust crates.io cargo add paymos Paymos-labs/rust-sdk

Java'da tek satırlık bir kurulum komutu yoktur: io.paymos:paymos-java bağımlılığını pom.xml dosyanıza veya Gradle yapılandırmanıza ekleyin.

Değişmez bir vMAJOR.MINOR.PATCH sürüm etiketi kullanın. Her deponun sürüm sayfası; desteklenen çalışma zamanını, değişiklik günlüğünü ve sürümün üretildiği kaynak commit'i içerir.

Ortak API yüzeyi

Tüm istemciler altı kaynak sunar:

  • system — istek saati hizalaması için sunucu saatini getirir
  • invoices — oluşturma, getirme, listeleme, iptal, ödeme onayı ve sandbox simülasyonu
  • withdrawals — oluşturma, getirme, listeleme, iptal ve sandbox tamamlama simülasyonu
  • paymentChannels — oluşturma, getirme, listeleme, bloklama, blok kaldırma ve sandbox yatırma simülasyonu
  • paymentChannelDeposits — tek yatırmayı getirir, onaylanmış yatırma akışını okur
  • balances — para birimine göre gruplanmış kullanılabilir bakiyeleri listeler

İki kanal kaynağını her istemci kendi dilinin yazım geleneğine göre adlandırır: TypeScript, PHP ve Java'da paymentChannels; Python, Ruby ve Rust'ta payment_channels; Go ve .NET'te PaymentChannels.

Liste yardımcıları, azami sayfa sınırı olan imleç sayfalaması kullanır ve iki kez dönen bir imleci reddeder. Otomatik yeniden denemeler Retry-After değerine uyar; durum değiştiren istekler aktarım hatalarında veya genel sunucu hatalarında yeniden denenmez. Hız limitine takılan bir istek yeniden denenebilir; çünkü API onu işleme almamıştır.

Sekiz dil, tek sözleşme

Ortak olan yalnızca uç nokta listesi değil, davranışın kendisi. Dilden bağımsız tek bir uygunluk paketi; istek imzasına hangi baytların girdiğini, yukarıdaki yeniden deneme kurallarını, imleç yineleyicilerinin işleyişini ve webhook doğrulamasını sabitler. Bir sürüm, ancak SDK'nın kendi testleri bu pakete karşı koştuktan sonra çıkar.

Pratikte şu anlama gelir: entegrasyonu bu dillerden birinden diğerine taşıdığınızda imza, sayfa gezinme, yeniden deneme ve webhook davranışı olduğu gibi kalır. Aynı filtreli liste isteğini iki SDK aynı baytlarla imzalar.

PHP'ye özel olan katman

PHP SDK'sında, başka hiçbir istemcide bulunmayan bir CMS entegrasyon katmanı var: webhook'u API'den taze bir okumayla karşılaştıran ters doğrulama, sipariş serbest bırakılmadan önce tutar ve para birimi denetimi, takılabilir bir olay deposuyla yinelenen olayların ayıklanması, sandbox ve canlı secret'ı aynı anda tutan bir doğrulayıcı, mutabakat, olaydan sipariş eylemine eşleme ve şifreli kimlik bilgisi saklama.

CMS eklentilerinin bu kadar ince olmasının nedeni bu katman: sipariş durumlarının mantığı, sekiz kez üstte değil, altlarındaki SDK'da bir kez duruyor. Diğer yedisi için bunların hiçbiri geçerli değil; onlarda istemci, imza, kaynaklar, sayfalama ve webhook doğrulaması var, fazlası yok.

Güvenlik kuralları

Bu SDK'lar yalnızca sunucu tarafıdır. API secret'ını asla tarayıcı JavaScript'ine, mobil uygulamaya, herkese açık bir depoya, URL'ye veya günlüğe koymayın.

İstek kimlik doğrulaması ve webhook kimlik doğrulaması farklı imzalar kullanır. API istekleri kanonik istek üzerinde base64 HMAC-SHA256 kullanır. Webhook'lar {timestamp}.{tam ham gövde} üzerinde hex HMAC-SHA256 kullanır. JSON'u çözmeden önce ayrıştırılmamış istek baytlarını SDK doğrulayıcısına verin. Doğrulayıcı, varsayılan olarak şu andan beş dakikadan fazla uzaklaşmış bir zaman damgasını reddeder ve iki v1 değeri taşıyan bir başlığı kabul eder; böylece secret rotasyonu size kod değişikliğine mal olmaz.

Uç nokta şemaları ve örnekler için şuradan devam edin: Kimlik Doğrulama, Faturalar, Çekimler, Bakiyeler ve Webhook'lar.