買うボタンなしで使う
買うボタンは利便性のレイヤーです。その下では、Coin Moebius は借りる webhook といくつかの JSON エンドポイントです。独自の UI を作りたい、独自のチェックアウトの流れを動かしたい、ボタンが扱えないもの(Square や Authorize.Net のサブスクリプション、独自の支払いフォーム、サーバー側のスクリプト、モバイルアプリ)に Coin Moebius を差し込みたいなら、ボタンが使うすべてのエンドポイントは何からでも呼び出せます。当社側のコード変更は不要です。
バックエンドの呼び出しを認証する
ご自身のサーバーから行う呼び出しは、プロジェクトの API キーをベアラートークンとして運べます。ダッシュボードの、プロジェクトの API キーの下でキーを作り(cmk_ で始まります)、Authorization ヘッダーで送ってください。
Authorization: Bearer cmk_live_xxxxxxxxxxxxxxxxxxxxxxxxキーは一つのプロジェクトに紐づき、認証された呼び出しは匿名のものより高いレート上限を得ます。買うボタン自体は公開で、キーは不要です。キーはサーバーに置いてください。ブラウザやその他のクライアント側のコードには決して入れないでください。
これらのエンドポイントはすべて、あなたのプロジェクト URL の下にあります。本番ではそのベースは https://api.coinmoebius.comです。それぞれの完全な URL は下に示します({…} の部分をご自身の値に置き換えてください)。
| エンドポイント | 何をするか |
|---|---|
GET https://api.coinmoebius.com/api/projects/{projectId}/public-info | 買うボタンが表示するプロバイダーリスト。プロジェクトで有効になっているすべてのペイメント方法が含まれ、各ペイメント方法は公開可能なフィールドのみを持ちます(表示ラベル、アイコン、公開可能キー、郵送払い用の住所)。?productId=…を追加すると、製品ごとの価格、順序、ラベルが取得できます。キーは不要です。レスポンスはエッジキャッシュから供給され、最大1分古い可能性があります。ダッシュボードへの保存はすぐに反映されます。 |
POST https://api.coinmoebius.com/api/checkout/{provider}/{projectId} | チェックアウトを開始します。{ productId, metadata } を POST し、プロバイダーが必要とするもの(Stripe ならリダイレクト URL、PayPal なら承認 URL、Authorize.Net Accept Hosted ならトークン)を受け取ります。好きなように描画してください。 |
POST https://api.coinmoebius.com/webhook/{provider}/{projectId} | プロバイダーがここに POST します。当社は署名を検証し、イベントを正規化し、保存し、クォータを数えます。元のチェックアウトが当社のボタン由来でもご自身の統合由来でも、プロバイダーの webhook をこの URL に向けてください。 |
GET https://api.coinmoebius.com/status/{projectId}/{txId} | 支払いまたはサブスクリプションの現在の状態をポーリングします。買うボタンが得るのと同じ正規化された形を返します。 |
POST https://api.coinmoebius.com/api/subscriptions/{projectId}/{subscriptionId}/portal-url | 購入者がサブスクリプションを管理するための、プロバイダーがホストするポータル URL を生成します。ポータルを持つ任意のプロバイダーで機能します。 |
チェックアウトの呼び出しで metadata.customerRef を渡して、あなた自身のシステムで購入者を識別します。それはプロバイダーを通り、すべての webhook イベントで返ってくるので、当社が購入者について何も保存せずに、Coin Moebius の記録をあなた自身のユーザーデータベースに結合できます。
なぜこの道を使うか: サイトのデザインに合わせて独自のボタンを書きたく、webhook の処理だけが要る静的サイトの作り手。ボタンを完全に飛ばして、ご自身のサーバーから API を呼びたい開発者。Square や Authorize.Net のサブスクリプションを動かしたく、カード収集を自分で配線してもよい加盟店。ボタンは出発点です。API が実際の製品です。
購入者イベントを待ち受ける
要素は5つのブラウザイベントを発火します。要素(またはイベントがバブルするので document)で addEventListener を使って待ち受けます。Angular では (cm-busy)="onBusy($event)" をテンプレートに直接書き、React、Vue、プレーン JavaScript は他の DOM イベントと同じようにバインドします。すべてのイベントはキャンセル可能です。preventDefault() が何をするかは、各イベントで説明しています。
| イベント | 発火するとき | detail のペイロード |
|---|---|---|
cm-busy | クリックが処理を開始しました。ボタンは自動的にロックされ、スピナーを表示しました。キャンセルすると、組み込みスピナーを隠し、独自のローディング UI を動かせます。ダブルクリックロックは常に保持されます。 | 空。 |
cm-load-providers | 選択画面のモーダルが、このプロジェクトに設定されたプロバイダーの一覧を API に問い合わせる直前。 | 空。 |
cm-checkout-started | 購入者がプロバイダーを選び、Coin Moebius がチェックアウトセッションを作る(Stripe / NOWPayments)、または参照コードを生成する(manual)直前。 | { provider: 'stripe' | 'nowpayments' | 'manual', ... } |
cm-error | 何かが失敗した:ネットワークエラー、署名の失敗、プロバイダー未設定。キャンセルすると、組み込みエラー表示は抑制され、メッセージを独自の UI にルーティングできます。 | { error: Error } |
cm-idle | 処理が終わりました。購入者はチェックアウトに引き継がれ、ポップアップが開き、またはエラーが表示されました。cm-busy の対になる終了。 | 空。 |
document.addEventListener('cm-error', (event) => {
console.error('Coin Moebius:', event.detail.error);
// Show your own error UI, send to your analytics, etc.
});購入者のブラウザに cm-success イベントはありません。 支払いが実際に完了する頃には、購入者は支払いプロバイダーのホスト型チェックアウト(Stripe Checkout、NOWPayments の請求書ページ)へリダイレクトされています。彼らは設定した success_url を通してサイトへ戻り(次のセクション参照)、あなたのサーバーはダッシュボードまたは /status エンドポイントのポーリングを通して支払いを知ります。
バックエンドからのポーリング
サーバー側の真実の源には、バックエンドから GET /status/:projectId/:txId をポーリングします。レスポンスの形:
{
"status": "succeeded",
"amount": 29.99,
"currency": "USD",
"isTest": false,
"createdAt": "2026-05-14T01:04:21.000Z",
"updatedAt": "2026-05-14T01:04:21.000Z"
}ステータスの値はダッシュボードと同じ列挙に従います(取引ステータス参照)。エンドポイントは認証不要ですが、IP あたり毎分60リクエストにレート制限されます。渡す取引IDは、SDK が cm-checkout-started イベントで返したもの、またはダッシュボードの参照列に表示されるものです。
典型的なパターン:success_url のページが読み込まれたら、succeeded(または failed / タイムアウト)が見えるまで15秒ごとに /status/:projectId/:txId をポーリングするバックエンドジョブを起動し、その後注文を履行します。