Använd det utan köpknappen
Köpknappen är ett bekvämlighetslager. Under den är Coin Moebius en hyrd webhook plus några JSON-endpoints. Om du hellre vill bygga ditt eget gränssnitt, köra ditt eget checkout-flöde eller koppla in Coin Moebius i något knappen inte kan hantera (Square- eller Authorize.Net-prenumerationer, ett eget betalningsformulär, ett serverskript, en mobilapp), så är varje endpoint knappen använder också anropbar från vad som helst. Inga kodändringar på vår sida.
Autentisera backend-anrop
Anrop du gör från din egen server kan bära ditt projekts API-nyckel som en bearer-token. Skapa en nyckel i instrumentpanelen, under ditt projekts API-nycklar (den börjar med cmk_), och skicka den i Authorization-headern:
Authorization: Bearer cmk_live_xxxxxxxxxxxxxxxxxxxxxxxxNyckeln är bunden till ett projekt, och autentiserade anrop får en högre hastighetsgräns än anonyma. Själva köpknappen är offentlig och behöver ingen nyckel. Håll din nyckel på din server. Lägg den aldrig i webbläsar- eller annan klientsideskod.
Alla dessa endpoints lever under din projekt-URL. I produktion är den basen https://api.coinmoebius.com. Den fullständiga URL:en för var och en visas nedan (ersätt delarna {…} med dina egna värden).
| Endpoint | Vad den gör |
|---|---|
POST https://api.coinmoebius.com/api/checkout/{provider}/{projectId} | Starta en checkout. POST { productId, metadata }; ta tillbaka vad leverantören än behöver (en omdirigerings-URL för Stripe, en godkännande-URL för PayPal, en token för Authorize.Net Accept Hosted). Rendera den hur du vill. |
POST https://api.coinmoebius.com/webhook/{provider}/{projectId} | Leverantören postar hit. Vi verifierar signaturen, normaliserar händelsen, lagrar den, räknar kvot. Peka leverantörens webhook mot denna URL oavsett om den ursprungliga checkouten kom från vår knapp eller din egen integration. |
GET https://api.coinmoebius.com/status/{projectId}/{txId} | Avfråga det aktuella tillståndet för en betalning eller prenumeration. Returnerar samma normaliserade form som köpknappen får. |
POST https://api.coinmoebius.com/api/subscriptions/{projectId}/{subscriptionId}/portal-url | Generera en leverantörsvärdad portal-URL där köparen kan hantera sin prenumeration. Fungerar för varje leverantör som har en portal. |
Identifiera köparen i ditt eget system genom att skicka metadata.customerRef på checkout-anropet. Det trär sig genom leverantören och tillbaka på varje webhook-händelse, så att du kan koppla Coin Moebius poster till din egen användardatabas utan att vi lagrar något om köparen.
Varför någon använder denna väg: en byggare av statiska webbplatser som vill skriva sin egen knapp för att matcha sin webbplats design och bara behöver få webhooken hanterad. En utvecklare som vill hoppa över knappen helt och anropa API:et från sin egen server. En handlare som vill köra Square- eller Authorize.Net-prenumerationer och är okej med att koppla upp kortinsamlingen själv. Knappen är en utgångspunkt. API:et är den faktiska produkten.
Lyssna efter köparhändelser
Elementet utlöser tre webbläsarhändelser. Lyssna med addEventListener på elementet (eller på document, händelserna bubblar). Alla händelser är annullerbara, att anropa event.preventDefault() stoppar standardflödet.
| Händelse | När den utlöses | Detaljnyttolast |
|---|---|---|
cm-load-providers | Väljarmodalen är på väg att be API:et om listan över leverantörer som konfigurerats på detta projekt. | Tom. |
cm-checkout-started | Köparen valde en leverantör och Coin Moebius är på väg att skapa en checkout-session (Stripe / NOWPayments) eller generera en referenskod (manual). | { provider: 'stripe' | 'nowpayments' | 'manual', ... } |
cm-error | Något misslyckades: nätverksfel, signaturfel, ingen leverantör konfigurerad. | { error: Error } |
document.addEventListener('cm-error', (event) => {
console.error('Coin Moebius:', event.detail.error);
// Show your own error UI, send to your analytics, etc.
});Det finns ingen cm-success-händelse i köparens webbläsare. Vid den tidpunkt då betalningen faktiskt slutförs har köparen omdirigerats till betalningsleverantörens värdbaserade checkout (Stripe Checkout, NOWPayments fakturasida). De återvänder till din webbplats via success_url du konfigurerade (se nästa avsnitt), och din server får veta om betalningen via instrumentpanelen eller genom att avfråga /status-endpointen.
Avfrågning från din backend
För en serversideskälla av sanning, avfråga GET /status/:projectId/:txId från din backend. Responsformen:
{
"status": "succeeded",
"amount": 29.99,
"currency": "USD",
"isTest": false,
"createdAt": "2026-05-14T01:04:21.000Z",
"updatedAt": "2026-05-14T01:04:21.000Z"
}Statusvärden följer samma enum som instrumentpanelen (se Transaktionsstatusar). Endpointen är oautentiserad men hastighetsbegränsad till 60 förfrågningar / minut per IP. Transaktions-id:t du skickar är vad SDK:t returnerade i händelsen cm-checkout-started eller vad som visas i instrumentpanelens Referens-kolumn.
Ett typiskt mönster: när din success_url-sida laddas, starta ett backend-jobb som avfrågar /status/:projectId/:txId var 15:e sekund tills det ser succeeded (eller failed / en timeout), och uppfyll sedan beställningen.