ホスティングチェックアウトの仕組み
RMT.GGが記録された商人として残ります。あなたのパートナーショップはロックされた金額と通貨を送信します。購入者は私たちのホスティングページで支払います。支払い後、あなたはショップで商品を提供します。注文は自動的に完了し、ウォレットの決済が実行されます。
- 購入者は、あなたが送信した金額と通貨を正確に支払います。私たちはそれを増額しません。
- あなたの販売者手数料は、そのロックされた金額の4%です。マーケットプレイスのリスティングは通常の5%のままです。
- カード、PayPal、および暗号通貨の処理手数料は、このフローではプラットフォームが負担します。
ホワイトリストが必要
設定のホスティングチェックアウトで申請し、管理者の承認を待ってください。未承認のAPIキーはCHECKOUT_PARTNER_NOT_APPROVEDを受け取ります。
申請して承認を得る
承認後、checkout:writeを持つAPIキーと、Hosted checkout設定ページのcheckout.completed用のJSONウェブフックを作成します。承認されるまで、ホストされたチェックアウトAPIはブロックされたままです。
- 1設定 → ホスティングチェックアウトを開き、ショップのURLとチェックアウトの使用方法に関する短いメモを提出します。
- 2管理者の承認を待ちます。それまでは保留中のバッジが表示されます。
- 3承認後、Settings → Hosted checkoutでAPIキーとcheckout.completed用のJSONウェブフックを作成します。
Seller API
これを任意のショップまたは自分のサーバーから使用します。POST /api/v1/checkout/sessionsでセッションを作成します。checkout:writeとIdempotency-Keyを送信します。購入者をhosted_urlにリダイレクトします。order.paidを待ち、その後ショップで履行します。
ホスティングチェックアウトセッションを作成します
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.jsonsession.json
{
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
}オプションの配送付きの複数のロックされたライン (session.json)
{
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
]
}
]
}- 単一アイテムのために、amountとitemName(またはタイトル)を送信するか、空でないitems[]配列を送信します。通貨はデフォルトでUSDです。オプションフィールド:description、HTTPS imageUrl、email(支払いページを事前に入力)、returnUrl、cancelUrl、invoiceId、categorySlugおよびoffering(両方またはどちらも送信)、およびmetadata。itemNameは支払いページの見出しで、descriptionはその下の長いコピーです。購入者は支払い前に有効なメールアドレスを確認する必要があります。支払い後、購入者はRMT.GGの確認画面に留まり、配達フィールドをコピーできます。returnUrlを設定し、配達フィールドがある場合は、その画面からショップに移動します。フィールドがない場合は、短いカウントダウンの後に戻されます。returnUrlまたはcancelUrlを省略すると、購入者は支払い、キャンセル、または期限切れ後にRMT.GGの支払いページに留まります。
- 成功した場合、HTTPS(またはlocalhost)のURLに?order=として注文uidをreturnUrlに追加します。
- Idempotency-KeyまたはinvoiceIdの値を繰り返すと、同じセッションが再利用され、重複が作成されません。
- itemNameと説明はRMTの支払いページにのみ表示されます。カード、PayPal、暗号通貨のチェックアウトでは、Games · Add-onsのようなカタログコードのラベルが使用され、ショップのタイトルは表示されません。設定の下でデフォルトを設定するか、セッションでcategorySlugとオファリングを送信してください。
- セッションは24時間続きます。その後、支払いページは完了できず、進行中のStripeおよびPayPalセッションは終了し、理由が期限切れであるためcheckout.canceledをPOSTします。
- items[]は単一のamountとitemNameボディのマルチライン代替です。各行にはnameとamountが必要です。itemsを使用する場合、amountは省略可能で、行から計算されるか、送信する場合は合計と一致する必要があります。数量はrmt.ggでロックされています: 購入者は行を追加、削除、または変更できません。imageUrlはHTTPSでなければなりません; 取得は行いません。オプションの配信フィールド(テキスト、パスワード、またはテキストエリア)には名前と値が必要です。これらは支払い後に確認ページと購入履歴に表示されます。パブリックセッションGETは、支払い後にのみ配信値を含みます。Seller GETおよびWebhookはそれらを含みません。
支払い状況を確認
まずcheckout.completedをリッスンします。ウェブフックが遅延した場合は、セッションをGETします。購入者が支払いを済ませた場合、paidはtrueになります。セッションのuidまたは送信したinvoiceIdで検索できます。
- セッションを作成したときに返されたuidを使用してGET /api/v1/checkout/sessions/{uid}。
- 自分のinvoice idを保存している場合はGET /api/v1/checkout/sessions?invoiceId=YOUR_INVOICE_ID。
invoice idで検索
curl -H "Authorization: Bearer rmt_sk_live_…" \
https://rmt.gg/api/v1/checkout/sessions?invoiceId=inv-12345Digisellerおよび類似のショップ
Seller APIでチェックアウトを作成する場合はスキップしてください。ショップ(例えばDigiseller)がカスタム支払い方法を通じて購入者をここに送るときに使用します。Digisellerは私たちの支払いURLに投稿し、私たちが支払いを受け取り、その後DigisellerがステータスURLを確認します。
- 1Settings → Hosted checkoutから支払いURL、ステータスURL、および支払いシークレットをコピーします。
- 2それらをDigisellerにカスタム支払い方法として貼り付けます。シークレットは非公開にしてください。
- 3その後、Digisellerは購入者を私たちに支払いに送信し、支払い済みまたは未払いのステータスURLを確認します。
- item_name(またはタイトル)は支払いページの見出しです。descriptionはその下の長いコピーです。両方の名前が省略された場合、descriptionが見出しとして使用されます。
Digisellerが送信するリクエストの例
{
"invoice_id": "12345",
"amount": "10.00",
"currency": "USD",
"item_name": "ゴールドパック",
"description": "アカウント例のための1000ゴールド",
"signature": "…"
}JSONウェブフックを推奨
ステータスURLはDigiseller用です。自分のサーバーから履行する場合は、JSONウェブフックを追加し、checkout.completedをリッスンします。バックアップとしてセッションをGETすることもできます。
JSONウェブフック
ホステッドチェックアウトは別のウェブフックAPIを使用しません。開発者の下で、マーケットプレイスの販売と同じイベントにJSON HTTPSエンドポイントを指し示します。支払い後にorder.paidをPOSTします。返金後にorder.refundedをPOSTします。販売をexternalInvoiceId(あなたのinvoiceId)またはpartnerSessionUidで一致させます。
order.paidペイロード(ホステッドチェックアウトフィールド)
{
"id": "whd_…",
"type": "order.paid",
"created": "2026-08-14T12:00:00.000Z",
"data": {
"order": {
"uid": "ord_…",
"status": "PAID",
"partnerSessionUid": "…",
"externalInvoiceId": "inv-12345",
"partnerSource": "api"
}
}
}- sourceはSeller APIセッションのAPIです。
- オプションの署名にはX-RMT-TimestampとX-RMT-Signatureを使用します。他の売り手のウェブフックと同じ方法でHMACを検証します。
- checkout.canceledには、購入者が支払いページを未払いで離れた場合の理由としてbuyer_canceledが含まれ、24時間のセッションTTLが未払いで経過した場合の理由としてexpiredが含まれます。
- checkout.itemsはロックされたライン(名前、説明、金額、数量、imageUrl)をリストします。配送値はWebhookには含まれません。
二重履行しないでください
Digisellerも独自の支払いコールバックを受け取ります。checkout.completedをリッスンする場合は、注文を一度だけ履行します。Seller APIセッションはそのDigisellerコールバックを送信しません。
ゲストのメールと領収書
購入者は支払いページでメールアドレスを入力する必要があります。そうすることで、領収書と税金の請求書を送信できます。RMTアカウントは、購入者がサインインしなくても関連付けられます。
- メールがすでにRMTアカウントに属している場合、注文はそのアカウントの購入履歴に表示されます。支払いページではログインクッキーは設定されません。
- 新しいメールは軽量ユーザーを作成し、領収書と後のサインインが機能します。
- 支払いを完了するにはメールアドレスが必要です。あなたのショップは、checkout.completedを引き続きリッスンする必要があります。
通貨と制限
USDやEURなどのサポートされているISO通貨を使用してください。カード決済はUSDまたはEURで最適に機能します。プロバイダーが受け入れる場合、他の通貨でも暗号通貨やPayPalは利用可能です。
このバージョンにはありません
ホスティング支払いページにはiframe SDK、カスタム支払いページドメイン、またはウォレット残高はありません。購入者はカード、PayPal、または暗号通貨のリダイレクトチェックアウトを使用します。
ライブ前に
ステージングチェックリスト
単体テストは手数料、HMAC、および再利用をカバーしています。実際の購入者を送信する前に、ステージングでこのリストを確認してください。
- 申請し、保留中のバッジを確認し、管理者に承認してもらいます。資格情報は承認されたときのみ表示されます。未承認のキーでPOST /api/v1/checkout/sessionsを実行すると403が返されます。
- itemName、説明、categorySlug、そしてoffering(または保存されたデフォルト)を使ってセッションを作成します。hosted_urlを開いてください。見出しはアイテム名で、説明はその下に表示されます。支払いページには上部ナビやサイドバーはありません。USDまたはEURでカードで支払ってください。カード、PayPal、暗号通貨のページには「Games · Add-ons」のようなカタログラベルが表示されるべきで、あなたのショップタイトルではありません。
- checkout.completedにはinvoiceId、checkout.uid、sourceが含まれていることを確認し、その後ショップで履行します。支払いページをキャンセルし、理由buyer_canceledでcheckout.canceledを確認します。セッションが24時間を超えて放置されると、理由expiredでcheckout.canceledを確認しても支払いはできません。
- Digisellerの場合、支払いURL、ステータスURL、および支払いシークレットをカスタム支払い方法に貼り付けます。Digisellerが支払いステータスを確認できること、そして注文を一度だけ履行することを確認してください。
- 既存のRMTメールで支払う:注文は購入履歴に入りますが、領収書が送信され、ログインクッキーはありません。新しいメールは軽量ユーザーを作成します。支払いページではメールアドレスが必要です。
- 隠された合成オファーはマーケットプレイスの検索に表示されてはいけません。待機リスト制限のあるホストでは、/pay/:uidおよびアダプタルートは引き続き機能します。
- 製品画像や複数のロックされたラインが必要な場合は、オプションのimageUrlとitems[]を送信してください。支払いページに数量コントロールがないことを確認してください。支払い後、配送フィールドは購入と注文ページに表示されます。HTTPSの画像URLのみ。
関連ガイド
ホスティングチェックアウトに申請する
設定 → ホスティングチェックアウトを開いて申請するか、承認後にAPIリファレンスにジャンプします。