Gehostete Kasse

Beantragen Sie dies in den Einstellungen, warten Sie auf die Genehmigung, erstellen Sie dann eine Sitzung und leiten Sie Käufer zu einer RMT-Zahlungsseite weiter. Sie erfüllen nach order.paid. Genehmigte Partner zahlen 4% des gesperrten Betrags.

Nehmen Sie Zahlungen in Ihrem eigenen Shop entgegen. RMT.GG ist der Händler. Verwenden Sie die Seller API, um Käufer zu einer RMT-Zahlungsseite zu leiten.

Wie die gehostete Kasse funktioniert

RMT.GG bleibt Merchant of Record. Ihr Partner-Shop sendet einen gesperrten Betrag und eine Währung. Der Käufer bezahlt auf unserer gehosteten Seite. Nach der Zahlung liefern Sie in Ihrem Shop. Bestellungen werden automatisch abgeschlossen, damit die Wallet-Abrechnung durchgeführt werden kann.

  • Der Käufer zahlt genau den Betrag und die Währung, die Sie senden. Wir erhöhen ihn nicht.
  • Ihre Verkäufergebühr beträgt 4 % dieses gesperrten Betrags. Die Gebühren für Marktplatzangebote bleiben bei den üblichen 5 %.
  • Karten-, PayPal- und Krypto-Verarbeitungsgebühren werden von der Plattform in diesem Ablauf übernommen.

Whitelist erforderlich

Beantragen Sie es unter Einstellungen, Gehostete Kasse, und warten Sie dann auf die Genehmigung des Administrators. Nicht genehmigte API-Schlüssel erhalten CHECKOUT_PARTNER_NOT_APPROVED.

Beantragen und genehmigen lassen

Nach der Genehmigung erstellen Sie einen API-Schlüssel mit checkout:write und einen JSON-WebHook für checkout.completed auf der Seite für gehostete Checkout-Einstellungen. Bis zur Genehmigung bleiben die gehosteten Checkout-APIs blockiert.

  1. 1Öffnen Sie Einstellungen → Gehostete Kasse und reichen Sie Ihre Shop-URL sowie eine kurze Notiz ein, wie Sie die Kasse nutzen werden.
  2. 2Warten Sie auf die Genehmigung durch einen Administrator. Bis dahin sehen Sie ein ausstehendes Badge.
  3. 3Nach der Genehmigung erstellen Sie einen API-Schlüssel und einen JSON-WebHook für checkout.completed unter Einstellungen → Gehosteter Checkout.

Verkäufer-API

Verwenden Sie dies von jedem Shop oder Ihrem eigenen Server. Erstellen Sie eine Sitzung mit POST /api/v1/checkout/sessions. Senden Sie checkout:write und einen Idempotency-Key. Leiten Sie den Käufer zu hosted_url weiter. Hören Sie auf order.paid und erfüllen Sie dann in Ihrem Shop.

Erstellen Sie eine gehostete Kassen-Sitzung

bash
curl -X POST -H "Authorization: Bearer rmt_sk_live_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: inv-12345" \
  https://rmt.gg/api/v1/checkout/sessions \
  -d @session.json

session.json

javascript
{
  amount: 10, // required when items is omitted
  currency: "USD", // optional; defaults to USD
  itemName: "Gold pack", // required when items is omitted; alias title
  description: "1000 gold for account example", // optional
  imageUrl: "https://cdn.shop.example/gold.png", // optional, HTTPS only
  categorySlug: "games", // send with offering, or omit both
  offering: "Mods", // send with categorySlug
  email: "[email protected]", // optional
  returnUrl: "https://your-shop.example/thanks", // optional
  cancelUrl: "https://your-shop.example/cancel", // optional
  invoiceId: "12345" // optional
}

Mehrere gesperrte Zeilen mit optionaler Lieferung (session.json)

javascript
{
  currency: "USD",
  invoiceId: "12345", // optional
  items: [ // required when amount is omitted
    {
      name: "Gold pack", // required per line
      description: "1000 gold", // optional
      amount: 10, // required per line
      quantity: 1, // optional, default 1
      imageUrl: "https://cdn.shop.example/gold.png", // optional, HTTPS only
      delivery: [ // optional
        { name: "Code", type: "text", value: "XXXX-YYYY" } // name and value required; type is optional
      ]
    }
  ]
}
  • Sende Betrag plus itemName (oder Titel) für einen einzelnen Artikel oder ein nicht leeres items[] Array. Die Währung ist standardmäßig USD. Optionale Felder: Beschreibung, HTTPS imageUrl, E-Mail (füllt die Zahlungsseite vor), returnUrl, cancelUrl, invoiceId, categorySlug plus offering (sende beides oder keines), und Metadaten. itemName ist die Überschrift der Zahlungsseite; Beschreibung ist der längere Text darunter. Der Käufer muss eine gültige E-Mail bestätigen, bevor er bezahlt. Nach der Zahlung bleibt der Käufer auf der RMT.GG Bestätigungsseite, damit er die Lieferfelder kopieren kann. Wenn du returnUrl festlegst und es Lieferfelder gibt, gelangen sie von diesem Bildschirm zu deinem Shop. Wenn es keine gibt, senden wir sie nach einem kurzen Countdown zurück. Wenn du returnUrl oder cancelUrl weglässt, bleibt der Käufer nach der Zahlung, Stornierung oder Ablauf auf der RMT.GG Zahlungsseite.
  • Bei Erfolg fügen wir die Bestell-ID an returnUrl als ?order= hinzu, wenn diese URL HTTPS (oder localhost) ist.
  • Wiederholte Idempotency-Key- oder invoiceId-Werte verwenden dieselbe Sitzung, anstatt eine Duplikat zu erstellen.
  • itemName und Beschreibung erscheinen nur auf der RMT-Zahlungsseite. Kreditkarte, PayPal und Krypto-Zahlungen verwenden katalogcodierte Bezeichnungen wie Spiele · Add-ons, niemals deinen Shop-Titel. Setze einen Standard unter Einstellungen, Gehostete Zahlung oder sende categorySlug und Angebot in der Sitzung.
  • Sitzungen dauern 24 Stunden. Danach kann die Zahlungsseite nicht abgeschlossen werden, laufende Stripe- und PayPal-Sitzungen werden geschlossen, und wir POST checkout.canceled mit dem Grund abgelaufen.
  • items[] ist die mehrzeilige Alternative zu einem einzelnen amount plus itemName Body. Jede Zeile benötigt name und amount. Bei items kann amount weggelassen werden und wird aus den Zeilen berechnet oder muss der Summe entsprechen, wenn du es sendest. Die Menge ist auf rmt.gg festgelegt: Käufer können Zeilen nicht hinzufügen, entfernen oder ändern. imageUrl muss HTTPS sein; wir holen es nicht ab. Optionale Lieferfelder (Text, Passwort oder Textbereich) benötigen einen Namen und einen Wert. Sie werden nach der Zahlung auf der Bestätigungsseite und bei Käufen angezeigt. Öffentliche Session GET enthält Lieferwerte nur nach der Zahlung. Seller GET und Webhooks enthalten sie niemals.

Zahlungsstatus überprüfen

Hören Sie zuerst auf checkout.completed. Wenn ein WebHook verzögert ist, GET die Sitzung. paid ist true, wenn der Käufer bezahlt hat. Sie können nach der Sitzungs-UID oder der invoiceId suchen, die Sie gesendet haben.

  • GET /api/v1/checkout/sessions/{uid} unter Verwendung der UID, die zurückgegeben wurde, als Sie die Sitzung erstellt haben.
  • GET /api/v1/checkout/sessions?invoiceId=IHRE_RECHNUNGS_ID, wenn Sie Ihre eigene Rechnungs-ID gespeichert haben.

Nach Rechnungs-ID suchen

bash
curl -H "Authorization: Bearer rmt_sk_live_…" \
  https://rmt.gg/api/v1/checkout/sessions?invoiceId=inv-12345

Digiseller und ähnliche Shops

Überspringen Sie dies, wenn Sie Checkouts mit der Seller API erstellen. Verwenden Sie es, wenn Ihr Shop (zum Beispiel Digiseller) den Käufer hierher über eine benutzerdefinierte Zahlungsmethode sendet. Digiseller sendet an unsere Zahlungs-URL, wir nehmen die Zahlung entgegen, dann überprüft Digiseller die Status-URL.

  1. 1Kopieren Sie die Zahlungs-URL, die Status-URL und das Zahlungsgeheimnis aus Einstellungen → Gehosteter Checkout.
  2. 2Fügen Sie diese in Digiseller als benutzerdefinierte Zahlungsmethode ein. Halten Sie das Geheimnis privat.
  3. 3Digiseller sendet dann Käufer zu uns zur Zahlung und überprüft die Status-URL auf bezahlt oder unbezahlte.
  • item_name (oder Titel) ist die Überschrift auf der Zahlungsseite. description ist der längere Text darunter. Wenn beide Namen weggelassen werden, wird description als Überschrift verwendet.

Beispielanfrage, die Digiseller sendet

json
{
  "invoice_id": "12345",
  "amount": "10.00",
  "currency": "USD",
  "item_name": "Goldpaket",
  "description": "1000 Gold für Beispielkonto",
  "signature": "…"
}

Bevorzugen Sie einen JSON-WebHook

Die Status-URL ist für Digiseller. Wenn Sie von Ihrem eigenen Server aus erfüllen, fügen Sie einen JSON-WebHook hinzu und hören Sie auf checkout.completed. Sie können auch die Sitzung als Backup abrufen.

JSON Webhooks

Der gehostete Checkout verwendet keine separate Webhook-API. Unter Entwickler, richten Sie einen JSON HTTPS-Endpunkt auf dieselben Ereignisse wie Marktplatzverkäufe. Nach der Zahlung POSTen wir order.paid. Nach einer Rückerstattung POSTen wir order.refunded. Ordnen Sie den Verkauf mit externalInvoiceId (Ihrer invoiceId) oder partnerSessionUid zu.

order.paid Payload (Felder des gehosteten Checkouts)

json
{
  "id": "whd_…",
  "type": "order.paid",
  "created": "2026-08-14T12:00:00.000Z",
  "data": {
    "order": {
      "uid": "ord_…",
      "status": "BEZAHLT",
      "partnerSessionUid": "…",
      "externalInvoiceId": "inv-12345",
      "partnerSource": "api"
    }
  }
}
  • source ist die API für Seller API-Sitzungen.
  • Optionale Signierung verwendet X-RMT-Timestamp und X-RMT-Signature. Überprüfen Sie HMAC auf die gleiche Weise wie bei jedem anderen Verkäufer-Webhook.
  • checkout.canceled enthält den Grund buyer_canceled, wenn der Käufer die Zahlungsseite unbezahlt verlässt, oder den Grund expired, wenn die 24-Stunden-Sitzung TTL unbezahlt abläuft.
  • checkout.items listet gesperrte Zeilen (name, description, amount, quantity, imageUrl). Lieferwerte sind niemals in Webhooks enthalten.

Nicht doppelt erfüllen

Digiseller erhält auch seinen eigenen Zahlungs-Callback. Wenn Sie auch auf checkout.completed hören, erfüllen Sie die Bestellung nur einmal. Seller API-Sitzungen senden diesen Digiseller-Callback niemals.

Gast-E-Mail und Quittungen

Käufer müssen eine E-Mail auf der Zahlungsseite eingeben, damit wir die Quittung und die Steuerrechnung senden können. Entsprechende RMT-Konten sind ohne Anmeldung des Käufers angehängt.

  • Wenn die E-Mail bereits zu einem RMT-Konto gehört, erscheint die Bestellung in den Käufen dieses Kontos. Es wird kein Anmeldecookie auf der Zahlungsseite gesetzt.
  • Eine neue E-Mail erstellt einen leichten Benutzer, sodass Quittungen und späteres Anmelden weiterhin funktionieren.
  • E-Mail ist erforderlich, um die Zahlung abzuschließen. Ihr Shop sollte weiterhin auf checkout.completed hören.

Währungen und Limits

Verwende eine unterstützte ISO-Währung wie USD oder EUR. Der Kartenzahlungsprozess funktioniert am besten in USD oder EUR. Krypto und PayPal können auch für andere Währungen funktionieren, wenn der Anbieter sie akzeptiert.

Nicht in dieser Version

Es gibt kein iframe SDK, keine benutzerdefinierte Zahlungsseiten-Domain oder Wallet-Balance auf der gehosteten Zahlungsseite. Käufer verwenden die Zahlungsabwicklung mit Karte, PayPal oder Krypto-Redirect.

Bevor Sie live gehen

Staging-Checkliste

Unit-Tests decken Gebühren, HMAC und Wiederverwendung ab. Gehen Sie diese Liste im Staging durch, bevor Sie echte Käufer senden.

  • Beantragen Sie, bestätigen Sie das ausstehende Badge und lassen Sie einen Administrator genehmigen. Zugangsdaten erscheinen nur nach Genehmigung. Ein nicht genehmigter Schlüssel bei POST /api/v1/checkout/sessions gibt 403 zurück.
  • Erstelle eine Sitzung mit itemName, Beschreibung und categorySlug sowie Angebot (oder einem gespeicherten Standard). Öffne hosted_url. Die Überschrift ist der Artikelname; die Beschreibung steht darunter. Die Zahlungsseite hat keine obere Navigation oder Seitenleiste. Bezahle mit Karte in USD oder EUR. Karten-, PayPal- und Krypto-Seiten sollten ein Kataloglabel wie Spiele · Add-ons anzeigen, nicht deinen Shop-Titel.
  • Bestätige checkout.completed, das invoiceId, checkout.uid und source enthält, und erfülle dann in deinem Shop. Storniere die Zahlungsseite und bestätige checkout.canceled mit dem Grund buyer_canceled. Lass eine Sitzung über 24 Stunden bestehen und bestätige checkout.canceled mit dem Grund expired, dass sie nicht mehr bezahlt werden kann.
  • Für Digiseller fügen Sie die Zahlungs-URL, die Status-URL und das Zahlungsgeheimnis in eine benutzerdefinierte Zahlungsmethode ein. Bestätigen Sie, dass Digiseller den bezahlten Status sehen kann und dass Sie die Bestellung nur einmal erfüllen.
  • Zahlen Sie mit einer bestehenden RMT-E-Mail: Die Bestellung landet in Käufen und eine Quittung wird gesendet, ohne dass ein Login-Cookie erforderlich ist. Eine neue E-Mail erstellt einen leichten Benutzer. E-Mail ist auf der Zahlungsseite erforderlich.
  • Das versteckte synthetische Angebot darf nicht in der Marktplatzsuche erscheinen. Bei einem wartelisten-gesteuerten Host funktionieren /pay/:uid und Adapter-Routen weiterhin.
  • Sende optional imageUrl und items[], wenn du ein Produktbild oder mehrere gesperrte Zeilen benötigst. Bestätige, dass die Zahlungsseite keine Mengensteuerungen hat. Nach der Zahlung erscheinen die Lieferfelder auf Käufen und der Bestellseite. Nur HTTPS-Bild-URLs.

Verwandte Anleitungen

Für gehostete Kasse bewerben

Öffnen Sie Einstellungen → Gehostete Kasse, um sich zu bewerben, oder springen Sie zur API-Referenz, nachdem Sie genehmigt wurden.