Auf dieser Seite
Server-SDKs
Offizielle Clients für die Paymos Händler-API in JavaScript/TypeScript, Python, PHP, Go, .NET, Java, Ruby und Rust — mit typisierten Anfragen und HMAC-Signatur.
Paymos pflegt offizielle serverseitige SDKs für acht Sprachökosysteme. Jedes SDK deckt denselben Vertrag ab: Rechnungen, Auszahlungen, Zahlungskanäle, Kanaleinzahlungen, Guthaben, Serverzeit, Cursor-Navigation, Fehler, Wiederholungen, Signatur der Anfrage und Prüfung von Webhooks.
Alle acht sind in der Registry ihres Ökosystems veröffentlicht. Installieren Sie von dort; im Repository liegen Quellcode und Release-Historie.
| Sprache | Registry | Installation | Offizielle Quelle |
|---|---|---|---|
| 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 |
Für Java gibt es keinen Installationsbefehl in einer Zeile: Tragen Sie
io.paymos:paymos-java als Abhängigkeit in Ihre pom.xml oder in Ihren
Gradle-Build ein.
Verwenden Sie ein unveränderliches Release-Tag vMAJOR.MINOR.PATCH. Die
Release-Seite jedes Repositories nennt die unterstützte Laufzeitumgebung, das
Änderungsprotokoll und den Quell-Commit, aus dem das Release entstanden ist.
Gemeinsame API-Oberfläche
Alle Clients stellen sechs Ressourcen bereit:
- —
system— Serverzeit abrufen, um die Uhr für Anfragen abzugleichen - —
invoices— erstellen, abrufen, auflisten, stornieren, Zahlung bestätigen und in der Sandbox simulieren - —
withdrawals— erstellen, abrufen, auflisten, stornieren und den Abschluss in der Sandbox simulieren - —
paymentChannels— erstellen, abrufen, auflisten, sperren, entsperren und eine Einzahlung in der Sandbox simulieren - —
paymentChannelDeposits— eine Einzahlung abrufen und den Feed bestätigter Einzahlungen abfragen - —
balances— verfügbare Guthaben nach Währung gruppiert auflisten
Jeder Client schreibt die beiden Kanal-Ressourcen in der Konvention seiner Sprache:
paymentChannels in TypeScript, PHP und Java, payment_channels in Python, Ruby
und Rust, PaymentChannels in Go und .NET.
Die Hilfsfunktionen zum Auflisten nutzen Cursor-Navigation mit einer Obergrenze je
Seite und weisen einen zweimal zurückgegebenen Cursor ab. Automatische
Wiederholungen beachten Retry-After; verändernde Anfragen werden bei
Transportfehlern oder allgemeinen Serverfehlern nicht wiederholt. Eine wegen der
Anfragegrenze abgewiesene Anfrage darf wiederholt werden, weil die API sie gar
nicht zur Verarbeitung angenommen hat.
Ein Vertrag für acht Sprachen
Gemeinsam ist den acht nicht nur die Liste der Endpunkte, sondern das Verhalten. Eine einzige sprachneutrale Prüfsammlung legt fest, welche Bytes in eine Anfragesignatur einfließen, wie die Wiederholungen oben laufen, wie die Cursor-Iteratoren arbeiten und wie der Webhook geprüft wird. Ein Release erscheint erst, wenn die eigenen Tests des SDK gegen diese Sammlung laufen.
Praktisch heißt das: Eine Anbindung, die von einer dieser Sprachen in eine andere umzieht, behält Signatur, Seitenlauf, Wiederholungen und Webhook-Verhalten. Zwei SDKs signieren dieselbe gefilterte Listenanfrage mit denselben Bytes.
Was PHP zusätzlich mitbringt
Das PHP-SDK trägt eine Schicht für Shop-Anbindungen, die kein anderer Client hat: Gegenprüfung eines Webhooks über einen frischen API-Aufruf, eine Kontrolle von Betrag und Währung, bevor eine Bestellung freigegeben wird, Schutz vor doppelter Verarbeitung über einen austauschbaren Ereignisspeicher, ein Prüfer, der das Sandbox- und das Live-Geheimnis gleichzeitig hält, ein Abgleich, eine Zuordnung vom Ereignis zur Bestellaktion und verschlüsselte Ablage der Zugangsdaten.
Diese Schicht ist der Grund, warum die CMS-Plugins so dünn sind: Die Logik der Bestellzustände liegt einmal im SDK darunter statt achtmal darüber. Für die anderen sieben gilt davon nichts — sie bestehen aus Client, Signatur, Ressourcen, Seitenlauf und Webhook-Prüfung, und mehr ist dort nicht zu finden.
Sicherheitsregeln
Diese SDKs sind ausschließlich für den Server. Legen Sie ein API-Geheimnis niemals in Browser-JavaScript, eine mobile Anwendung, ein öffentliches Repository, eine URL oder ein Protokoll.
Die Authentifizierung von Anfragen und die von Webhooks nutzen unterschiedliche
Signaturen. API-Anfragen nutzen HMAC-SHA256 in Base64 über die kanonische Anfrage.
Webhooks nutzen HMAC-SHA256 in Hex über {timestamp}.{exakter Rohtext}.
Übergeben Sie dem Prüfer des SDK die ungeparsten Bytes der Anfrage, bevor Sie das
JSON dekodieren. Der Prüfer weist einen Zeitstempel, der mehr als fünf Minuten von
jetzt abweicht, standardmäßig ab und nimmt einen Header mit zwei v1-Werten an —
ein Wechsel des Geheimnisses kostet Sie also keine
Codeänderung.
Schemata und Beispiele der Endpunkte finden Sie unter Authentifizierung, Rechnungen, Auszahlungen, Guthaben und Webhooks.