Codex · III

Die API nutzen

Ohne den Buy-Button nutzen

Der Buy-Button ist eine Komfortschicht. Darunter ist Coin Moebius ein gemieteter Webhook plus ein paar JSON-Endpunkte. Wenn Sie lieber Ihre eigene Oberfläche bauen, Ihren eigenen Checkout-Ablauf fahren oder Coin Moebius in etwas einbinden möchten, das der Button nicht bewältigen kann (Square- oder Authorize.Net-Abos, ein eigenes Zahlungsformular, ein serverseitiges Skript, eine mobile App), ist jeder Endpunkt, den der Button nutzt, auch von allem anderen aufrufbar. Keine Code-Änderungen auf unserer Seite.

Backend-Aufrufe authentifizieren

Aufrufe, die Sie von Ihrem eigenen Server machen, können den API-Schlüssel Ihres Projekts als Bearer-Token tragen. Erstellen Sie einen Schlüssel im Dashboard, unter den API-Schlüsseln Ihres Projekts (er beginnt mit cmk_), und senden Sie ihn im Authorization-Header:

Authorization: Bearer cmk_live_xxxxxxxxxxxxxxxxxxxxxxxx

Der Schlüssel ist an ein Projekt gebunden, und authentifizierte Aufrufe erhalten ein höheres Ratenlimit als anonyme. Der Buy-Button selbst ist öffentlich und braucht keinen Schlüssel. Halten Sie Ihren Schlüssel auf Ihrem Server. Legen Sie ihn nie in Browser- oder anderen clientseitigen Code.

Diese Endpunkte leben alle unter Ihrer Projekt-URL. In der Produktion ist diese Basis https://api.coinmoebius.com. Die vollständige URL für jeden ist unten gezeigt (ersetzen Sie die {…}-Teile durch Ihre eigenen Werte).

EndpunktWas er tut
POST https://api.coinmoebius.com/api/checkout/{provider}/{projectId}Einen Checkout starten. POST { productId, metadata }; erhalten Sie zurück, was der Anbieter braucht (eine Weiterleitungs-URL für Stripe, eine Bestätigungs-URL für PayPal, ein Token für Authorize.Net Accept Hosted). Rendern Sie es, wie Sie möchten.
POST https://api.coinmoebius.com/webhook/{provider}/{projectId}Der Anbieter postet hierher. Wir prüfen die Signatur, normalisieren das Ereignis, speichern es, zählen das Kontingent. Richten Sie den Webhook des Anbieters auf diese URL, ob der ursprüngliche Checkout von unserem Button oder Ihrer eigenen Integration kam.
GET https://api.coinmoebius.com/status/{projectId}/{txId}Den aktuellen Zustand einer Zahlung oder eines Abos abfragen. Gibt dieselbe normalisierte Form zurück, die der Buy-Button erhält.
POST https://api.coinmoebius.com/api/subscriptions/{projectId}/{subscriptionId}/portal-urlEine anbietergehostete Portal-URL erzeugen, damit der Käufer sein Abo verwalten kann. Funktioniert für jeden Anbieter, der ein Portal hat.

Identifizieren Sie den Käufer in Ihrem eigenen System, indem Sie beim Checkout-Aufruf metadata.customerRef übergeben. Sie fädelt durch den Anbieter und bei jedem Webhook-Ereignis zurück, sodass Sie die Aufzeichnungen von Coin Moebius mit Ihrer eigenen Nutzerdatenbank verbinden können, ohne dass wir etwas über den Käufer speichern.

Warum jemand diesen Weg nutzt: ein Statische-Website-Builder, der seinen eigenen Button passend zum Design seiner Seite schreiben möchte und nur den Webhook erledigt braucht. Ein Entwickler, der den Button ganz weglassen und die API von seinem eigenen Server aufrufen möchte. Ein Händler, der Square- oder Authorize.Net-Abos betreiben möchte und damit zurechtkommt, die Kartenerfassung selbst zu verkabeln. Der Button ist ein Ausgangspunkt. Die API ist das eigentliche Produkt.

Auf Käuferereignisse hören

Das Element löst drei Browser-Ereignisse aus. Hören Sie mit addEventListener am Element (oder an document, die Ereignisse blubbern). Alle Ereignisse sind abbrechbar, ein Aufruf von event.preventDefault() stoppt den Standardablauf.

EreignisWann es auslöstDetail-Payload
cm-load-providersDas Auswahl-Modal ist im Begriff, die API nach der Liste der für dieses Projekt konfigurierten Anbieter zu fragen.Leer.
cm-checkout-startedDer Käufer hat einen Anbieter gewählt und Coin Moebius ist im Begriff, eine Checkout-Sitzung zu erstellen (Stripe / NOWPayments) oder einen Referenzcode zu erzeugen (manuell).{ provider: 'stripe' | 'nowpayments' | 'manual', ... }
cm-errorEtwas ist fehlgeschlagen: Netzwerkfehler, Signaturfehler, kein Anbieter konfiguriert.{ error: Error }
document.addEventListener('cm-error', (event) => {
  console.error('Coin Moebius:', event.detail.error);
  // Show your own error UI, send to your analytics, etc.
});

Es gibt kein cm-success-Ereignis im Browser des Käufers. Bis die Zahlung tatsächlich abgeschlossen ist, wurde der Käufer zum gehosteten Checkout des Zahlungsanbieters weitergeleitet (Stripe Checkout, NOWPayments-Rechnungsseite). Er kehrt über die von Ihnen konfigurierte success_url zu Ihrer Seite zurück (siehe den nächsten Abschnitt), und Ihr Server erfährt von der Zahlung über das Dashboard oder durch Abfragen des /status-Endpunkts.

Polling von Ihrem Backend

Für eine serverseitige maßgebliche Wahrheit fragen Sie GET /status/:projectId/:txId von Ihrem Backend ab. Die Antwortform:

{
  "status": "succeeded",
  "amount": 29.99,
  "currency": "USD",
  "isTest": false,
  "createdAt": "2026-05-14T01:04:21.000Z",
  "updatedAt": "2026-05-14T01:04:21.000Z"
}

Statuswerte folgen demselben Enum wie das Dashboard (siehe Transaktionsstatus). Der Endpunkt ist nicht authentifiziert, aber auf 60 Anfragen / Minute pro IP rate-begrenzt. Die Transaktions-ID, die Sie übergeben, ist das, was das SDK im cm-checkout-started-Ereignis zurückgegeben hat oder was in der Spalte Referenz des Dashboards gezeigt wird.

Ein typisches Muster: Wenn Ihre success_url-Seite lädt, stoßen Sie einen Backend-Job an, der /status/:projectId/:txId alle 15 Sekunden abfragt, bis er succeeded sieht (oder failed / einen Timeout), und erfüllen dann die Bestellung.

Bereit, es zu verkabeln?

Der kostenlose Tarif deckt die meisten Websites ab und verlangt nie eine Karte.