Sign in
Zahlungen und Auszahlungen/Payment API

Payment API

Erstellen und verwalten Sie Kryptowährungs-Zahlungssitzungen mit der 2328.io Payment API.

Mit der Payment API können Sie Zahlungssitzungen erstellen, Kunden auf eine gehostete Checkout-Seite weiterleiten und den Zahlungsstatus verfolgen.

Zahlung erstellen

Erstellt eine Zahlungssitzung und gibt eine URL zurück, unter der der Kunde bezahlen kann.

Anfrageparameter

FeldTypPflichtBeschreibungWerte
amountdecimaljaZahlungsbetrag in der Währung, z. B. 100.00
currencystringjaFiat-Währung (USD, EUR, RUB, …) oder Kryptowährung (USDT, TRX, BTC, …)
order_idstringjaIhre Bestell-ID, z. B. ORDER-12345 (max. 128 Zeichen)
to_currencystringneinVorausgewählte Kryptowährung
networkstringnein*Netzwerkcode (erforderlich, wenn to_currency gesetzt ist oder currency eine Kryptowährung ist)
url_returnstringneinWeiterleitungs-URL nach der Zahlung, z. B. https://your-site.com/return
url_successstringneinAlternative zu url_return
url_callbackstringjaURL für Webhook-Benachrichtigungen, z. B. https://your-site.com/webhook
invite_codestringneinEmpfehlungscode
fee_splitdecimalneinAnteil der Händlergebühr, der an den Zahler weitergegeben wird, 0–100 (%). 0 = der Händler trägt sie vollständig, 100 = der Zahler trägt sie vollständig. Überschreibt die Projekteinstellung. Beispiel: 30 (der Zahler übernimmt 30 % der Gebühr).
price_markupdecimalneinAufschlag oder Rabatt auf den Rechnungsbetrag, −99 bis 100 (%). Überschreibt die Projekteinstellung. Beispiel: 5 (+5 %) oder -10 (10 % Rabatt).
descriptionstringneinOptionale Rechnungsbeschreibung (max. 200 Zeichen). Wird dem Zahler auf der Zahlungsseite angezeigt. Beispiel: Premium plan — Order #12345.
ttl_secondsintneinGültigkeitsdauer der Rechnung in Sekunden, von 300 (5 Minuten) bis 86400 (24 Stunden). Nach Ablauf dieser Zeit verfällt die Rechnung und kann nicht mehr bezahlt werden. Standard: 3600 (1 Stunde). Beispiel: 3600.

Antwort

JSON
{
  "state": 0,
  "result": {
    "uuid": "abc123-def456-...",
    "order_id": "ORDER-12345",
    "amount": "100.00",
    "currency": "USD",
    "amount_usd": "100.00",
    "exchange_rate": null,
    "url": "https://2328.io/pay/abc123-def456-...",
    "tg_deeplink": "https://t.me/my2328bot?start=pay_abc123-def456-...",
    "expires_at": "2026-01-11T21:00:00Z",
    "created_at": "2026-01-11T20:00:00Z",
    "payer_currency": "USDT",
    "payer_amount": "100.50",
    "network": "TRX-TRC20",
    "address": "TXYZabc123...",
    "payment_status": "check",
    "txid": null,
    "payment_amount": null,
    "qr": "data:image/png;base64,iVBORw0..."
  }
}
  • Leiten Sie den Kunden zu result.url weiter, um die Zahlung abzuschließen.
  • tg_deeplink — Telegram-Bot-Deeplink für die Zahlung über die Telegram MiniApp.
  • qr — Base64-codierter QR-Code (Data-URI) der Einzahlungsadresse. Vorhanden, wenn bereits eine Adresse zugewiesen wurde (wenn network zusammen mit to_currency gesetzt ist oder wenn currency eine Kryptowährung ist); andernfalls null.
  • txid, payment_amountnull, bis der Kunde bezahlt. Werden ausgefüllt, sobald die Transaktion on-chain erkannt wird. Lauschen Sie auf den Webhook payment_status: paid, um den Zeitpunkt zu erfahren.
  • exchange_ratenull, falls eine Umrechnung noch nicht relevant ist (z. B. wenn der Fiat-zu-Krypto-Kurs noch nicht festgesetzt wurde). Wird gefüllt, sobald eine Zahler-Währung gewählt ist.
Credentials
RequestPOST/v1/payment
curl -X POST https://api.2328.io/api/v1/payment \
  -H "Content-Type: application/json" \
  -H "User-Agent: MyShop/1.0 (+https://myshop.example)" \
  -H "project: YOUR_PROJECT_UUID" \
  -H "sign: YOUR_HMAC_SIGNATURE"
Response
Click Try it to see the response here.

Hosted checkout, H2H und genaue Krypto-Beträge

Dasselbe Endpunkt unterstützt drei verschiedene invoice-Formen. Wählen Sie eine bewusst; mischen Sie nicht deren Mengenbedeutungen.

Hosted checkout mit Zahlerwahl

Senden Sie amount, currency, order_id und url_callback, aber lassen Sie to_currency und network weg. Die Antwort enthält result.url; address, qr und manchmal Zahlerfelder bleiben null, bis der Zahler auf der gehosteten Seite eine Richtung auswählt.

JSON
{
  "amount": "125.00",
  "currency": "EUR",
  "order_id": "ORDER-2026-1042",
  "url_callback": "https://merchant.example/webhooks/2328",
  "url_return": "https://merchant.example/orders/ORDER-2026-1042"
}

Direktadresse H2H invoice

Senden Sie sowohl to_currency als auch network. 2328.io erstellt die Blockchain invoice während API call, sodass eine erfolgreiche Antwort innerhalb Ihres Checkouts gerendert werden kann, ohne den Kunden umzuleiten.

JSON
{
  "amount": "100.00",
  "currency": "USD",
  "to_currency": "USDT",
  "network": "TRX-TRC20",
  "order_id": "ORDER-2026-1043",
  "url_callback": "https://merchant.example/webhooks/2328"
}

Geben Sie diese Werte genau so wieder, wie sie zurückgegeben werden:

  • payer_amount und payer_currency — die Zahlungsanweisung;
  • network und address — das einzige Ziel für dieses invoice;
  • qr — eine Daten-URI für dieselbe Adresse;
  • expires_at — die invoice-Frist;
  • url — ein nützliches gehostetes fallback, wenn der benutzerdefinierte Checkout nicht abgeschlossen werden kann.

Generieren oder substituieren Sie niemals eine Adresse, verwenden Sie keine Adresse von einem anderen invoice erneut oder berechnen Sie payer_amount aus einem öffentlichen Spotpreis. Die API-Antwort ist maßgeblich.

Invoice für einen genauen Krypto-Betrag

Setzen Sie die Kryptowährung in currency, wenn das invoice selbst in Krypto denominiert ist:

JSON
{
  "amount": "25.000000",
  "currency": "USDT",
  "network": "TRX-TRC20",
  "order_id": "ORDER-2026-1044",
  "url_callback": "https://merchant.example/webhooks/2328"
}

Der angeforderte Krypto-Wert wird in payer_currency / payer_amount beibehalten. Der Service kann auch eine USD-Bewertung intern für Buchhaltungs- und Kursfelder verwalten; ersetzen Sie die genaue Krypto-Anweisung nicht durch diese Bewertung. Bewahren Sie zurückgegebene Dezimalzeichenfolgen einschließlich nachgestellter Genauigkeit.

Bei einer Kryptowährung mit nur einem unterstützten Netzwerk kann das Netzwerk automatisch ausgewählt werden. Es wird trotzdem empfohlen, network explizit anzugeben, um eine deterministische Integration zu gewährleisten. Für Multi-Netzwerk-Assets wie Stablecoins senden Sie sie immer.

Idempotency und retries

order_id ist auf das authentifizierte merchant-Projekt beschränkt und fungiert als Erstellungs-idempotency-Schlüssel. Wenn eine Zahlung bereits existiert, gibt die API diese Sitzung mit state: 0 zurück.

Ein retry mit dem gleichen order_id bedeutet nicht, „diese invoice aktualisieren“. Geänderte Beträge, Währung, Callback, Aufschlag, TTL oder Richtungsfelder können ignoriert werden, da die bestehende Sitzung zurückgegeben wird. Bewahren Sie die erste Anfrage persistent auf und lehnen Sie widersprüchliche retries in Ihrer eigenen Anwendung ab.

Empfohlener Erstellungsalgorithmus:

  1. Fügen Sie Ihren lokalen Zahlungsversuch und eindeutiges order_id in einer Datenbanktransaktion ein.
  2. Senden Sie die unterzeichnete API-Anfrage.
  3. Speichern Sie die zurückgegebene uuid und die vollständige Antwort.
  4. Wenn das HTTP-Ergebnis verloren geht, retry die identische Anfrage oder fragen Sie /v1/payment/info über order_id ab.
  5. Erstellen Sie niemals eine zweite lokale Bestellung nur weil die Upstream-Anfrage abgelaufen ist.

Zahlungs-Sonderfälle

SituationKorrekte Handhabung
address / qr ist nullDie Zahler-Richtung wurde nicht initialisiert. Leiten Sie zu url weiter oder erstellen Sie ein neues korrekt spezifiziertes H2H invoice mit einem neuen order_id.
HTTP 400 ValidierungsfehlerLesen Sie das Feld-Level-errors; ändern Sie die Eingabe nicht retry.
HTTP 429Retry mit gestaffeltem exponentiellem Backoff und behalten Sie dasselbe order_id.
HTTP 503 / direction_disabledAktualisieren Sie /v1/directions; verstecken Sie die Richtung vorübergehend oder retry später.
Client-Anfrage timeoutBehandeln Sie das Ergebnis als unbekannt. Fragen Sie über order_id bevor Sie etwas anderes erstellen.
underpaid_checkSpeichern Sie das partielle Ereignis und warten Sie auf eine Aufladung oder einen späteren Status. Buchen Sie nicht doppelt, wenn weitere txids eintreffen.
underpaidEndzustand Unterzahlung. Wenden Sie Ihre konfigurierte Fulfillment-/Manuell-Prüfungs-Policy auf den tatsächlich gutgeschriebenen Betrag an.
overpaidErfolgreiche Zahlung mit überschüssigen Mitteln. Erfüllen Sie idempotent und behalten Sie die tatsächlichen Beträge für reconciliation/Rückerstattungsrichtlinie.
aml_lockErfüllen oder leisten Sie keine Gelder automatisch; leiten Sie sie an den Compliance-/Support-Workflow weiter.
cancelInvoice ist abgelaufen oder wurde storniert. Ziehen Sie nicht den Schluss, dass eine verspätete On-Chain-Überweisung unmöglich ist; gleichen Sie jedes spätere Ereignis mit dem Support ab.

Die Rückkehr-URL des Browsers dient nur der Navigation. Ein Kunde kann sie ohne Zahlung öffnen, nach der Zahlung schließen oder später erneut aufrufen. Nur ein verifizierter API-/webhook-Status kann die merchant-Bestellung abschließen.

Zahlungsinformationen

Aktuellen Zahlungsstatus per uuid oder order_id abrufen.

Anfrageparameter

FeldTypPflichtBeschreibungWerte
uuidstringja*Zahlungs-UUID (aus result.uuid bei der Erstellung)
order_idstringja*Ihre Bestell-ID

Mindestens eines der Felder uuid oder order_id ist erforderlich.

RequestPOST/v1/payment/info
curl -X POST https://api.2328.io/api/v1/payment/info \
  -H "Content-Type: application/json" \
  -H "User-Agent: MyShop/1.0 (+https://myshop.example)" \
  -H "project: YOUR_PROJECT_UUID" \
  -H "sign: YOUR_HMAC_SIGNATURE"
Response
Click Try it to see the response here.

Zahlungsliste

Liste aller Zahlungen mit Filterung und Paginierung abrufen.

Anfrageparameter

FeldTypPflichtBeschreibungWerte
statusstringneinNach Zahlungsstatus filtern (siehe References)
date_fromdateneinStartdatum (YYYY-MM-DD), z. B. 2026-01-01
date_todateneinEnddatum (YYYY-MM-DD), z. B. 2026-01-31
pageintneinSeitennummer, Standard 1
per_pageintneinEinträge pro Seite, Standard 15, max. 5000
RequestPOST/v1/payment/list
curl -X POST https://api.2328.io/api/v1/payment/list \
  -H "Content-Type: application/json" \
  -H "User-Agent: MyShop/1.0 (+https://myshop.example)" \
  -H "project: YOUR_PROJECT_UUID" \
  -H "sign: YOUR_HMAC_SIGNATURE"
Response
Click Try it to see the response here.