Stripe
管理画面での場所: Finance › Payment channels › Stripe(
/payments/stripe)。スイッチと手数料:Finance › Payment channels › Fees & limits(/payments/fees)。
動作内容
Stripeはウォレットのチャージにおけるカード決済を処理します。同じアカウントでApple Pay、Google Pay、Link、Alipayも提供でき、顧客が自動チャージのためにカードを保存できるようになります。海外のお客様向けの主要なチャネルとしてご利用ください。
要件
| 項目 | 要件 |
|---|---|
| Stripeアカウント | USDでの決済を受け付けることができるStripeアカウント。AlipayはJPYで請求され、Stripe側でアカウントに対して有効化する必要があります。 |
| キー | シークレットキー(sk_live_...またはsk_test_...)と公開可能キー(pk_live_...またはpk_test_...)。フォームはこれらのプレフィックスを持つキーのみを受け付けます。 |
| ネットワーク | パネルへはインターネットからHTTPS経由でアクセス可能である必要があり(StripeがWebhookを呼び出します)、ポート443でapi.stripe.comにアクセスできる必要があります。 |
| ドメイン(ウォレットのみ) | お客様向けドメインは/.well-known/apple-developer-merchantid-domain-associationを提供する必要があります — NexCMPが自動的に行います。 |
| 依存関係 | なし。 |
共有Stripeアカウント
NexCMPは自ら作成した支払いに対するWebhookイベントのみを処理するため、他のアプリケーションでも使用しているStripeアカウントをそのまま使用できます。
インフラストラクチャの準備
Stripe側での作業:
- Stripe Dashboardにサインインします。テスト実行か本番稼働かに応じてTest modeのオン/オフを切り替えます。一方のモードのキーがもう一方で動作することはありません。
- Developers › API keysを開きます。Publishable keyをコピーし、Secret keyを表示してコピーします。シークレットキーは厳重に管理してください。
- (オプション)Settings › Payment methodsを開き、提供する場合はAlipayを有効化します。
- Webhookを手動で作成する必要はありません — NexCMPが自動で作成できます(後述のステップ5を参照)。手動で作成する場合は、Developers › Webhooksでエンドポイントを作成し、Webhookに記載されているURLとイベントを設定してください。
NexCMP での接続
- Finance › Payment channels › Stripe(
/payments/stripe)を開きます。 - API keysカードでMode(
liveまたはtest)を選択し、Secret keyとPublishable keyを貼り付けます。 - Saveをクリックします。キーは、NexCMPサービスアカウントのみが読み取り可能なサーバー上の設定ファイルに書き込まれます。ブラウザに送り返されることはなく、その後ページには下4桁のみが表示されます。
- Checkをクリックします。接続、モード、利用可能残高と保留中残高、アカウントID、チャージが有効かどうか、Webhookが存在するかどうか、Alipayが利用可能かどうかがダイアログに表示されます。赤色の行は、その部分の確認が必要であることを示します。
- WebhookカードでCreate webhookをクリックし、確認します。NexCMPがStripeに必要なすべてのイベントを含むエンドポイントの作成を要求し、Webhook signing secret(
whsec_...)を自動的に入力します。フィールドに事前入力されるURLはhttps://<your-domain>/v1/billing/stripe/webhookで、例としてhttps://cloud.example.com/v1/billing/stripe/webhookとなります。 - Fees & limits(
/payments/fees)を開き、**Card (Stripe)**を有効にしたまま、**Stripe fee %とStripe fixed fee (cents)**に実際の料金を設定し、Save channels & feesをクリックします。Payment channelsを参照してください。

Webhook
署名シークレットが保存されるまで、赤いバナー「Missing webhook_secret」が表示され続けます。これが無い場合、Stripe側で決済が完了していても、Stripeのチャージは記録されません。
| 項目 | 値 |
|---|---|
| URL | https://<your-domain>/v1/billing/stripe/webhook |
| イベント | checkout.session.completed, payment_intent.succeeded, payment_intent.payment_failed, charge.refunded, charge.dispute.created, charge.dispute.closed, radar.early_fraud_warning.created, refund.updated, refund.failed |
| 署名 | Stripe Stripe-Signatureヘッダー、HMAC-SHA256、許容時間300秒。不正な署名を持つリクエストにはHTTP 400が返されます。 |
| べき等性 | 各イベントIDは1回のみ保存されます。重複配信によって二重に入金されることはありません。 |
より少ないイベントを登録していたリリースからアップグレードした場合は、再度Create webhookをクリックしてください。古いエンドポイントは保持されるため、その後Stripe Dashboardで手動により削除してください。
Webhookカードの24h eventsとLatest eventの行は、Stripeがパネルに到達しているかどうかを示します。個別のイベントはPayment channels › Gateway events(/payments/events、Stripeタブ)にリストされ、各イベントは表示(Payload)またはリプレイ(Replay)できます。
Apple Pay、Google Pay、および Link
- Wallets (Apple Pay · Google Pay · Link) & Alipay カードの Customer app Domain registered with Stripe フィールドには、サイトのホスト名(例:
cloud.example.com)が自動入力されます。 - Register / verify domain をクリックして確認します。NexCMPがStripeの決済方法ドメインにドメインを登録し、Stripeに検証を依頼します。
- 結果には Apple Pay、Google Pay、Link のステータスが表示されます。Apple Payはステータスが
activeの場合にのみ表示されます。 - Fees & limits で Apple Pay · Google Pay · Link を有効のままにします。

Apple Payが無効なままになる場合
Apple Payでは、パブリックドメインでHTTP 200を返すためにドメイン関連付けファイルが必要です。Cloudflareや他のプロキシを使用している場合は、/.well-known/ をブロックしないでください。
Alipay
Alipayはオプションです。Stripe Dashboard › Settings › Payment methodsで有効化し、CheckをクリックしてダイアログにAlipayが利用可能と表示されるまで待ってから、Alipay (Stripe, JPY display)をオンにします(Fees & limits内)。Alipay fee %、Alipay fixed fee、¥/USD rate(50–500)、FX spread %(0–20)を設定します。¥/USDレートは定期的に更新してください。7日以上経過している場合はページ上で警告が表示されます。
確認
- テストモードでテスト顧客としてポータルにサインインし、Billing を開き、Deposit をクリックして Card を選択し、Stripeのテストカード
4242 4242 4242 4242(任意の日付、任意のCVC)で最小金額を支払います。 - 数秒以内に残高が増加し、支払いはステータス Completed とともに Finance › Billing › Top-ups の下に表示されます。
- Payment channels › Gateway events › Stripeを開きます。処理日時とともに
checkout.session.completedまたはpayment_intent.succeededが表示されるはずです。 - Stripeのページに戻ると、24h events が0より大きくなっています。
本番稼働の前に、Mode を live に切り替え、本番キーを貼り付けて再度 Create webhook をクリックします(テストモードと本番モードのウェブフックは別個です)。
制限と注意事項
- 金額と通貨: ウォレットはUSD建てです。カード、ウォレット、およびLinkの支払いはUSDで課金され、Alipayはお客様にJPYで表示され、お客様のレートで換算されます。
- 手数料: Stripeの実際の પણードの手数料は自動的に読み取られません。設定した手数料の割合によって、お客様に表示される金額とウォレットに入金される金額が決まります。手数料を上乗せして請求するには、Fees & limits で Customer pays top-up fee を選択します。
- 保存済みカード: お客様が Save card for auto top-up にチェックを入れると、カードは自社サーバーではなくStripeに保存されます。Saved payment methods を参照してください。
- 返金。 カードへの返金は2段階のプロセスです。管理者が完了した支払いに対して返金リクエストを作成し(Finance › Billing › Top-ups、該当の支払いに対する返金アクション)、その後Finance › Payouts › Card refunds(
/billing/payouts)で承認します。Alipayの返金は非同期です。失敗した場合(refund.failed)は保留された金額がウォレットに返還されます。 - チャージバック:
charge.dispute.createdにおいて、NexCMPはお客様のアカウントをブロックし、プリペイドサービスを停止し(何も削除されません)、管理者アラートを送信します。勝訴した場合(charge.dispute.closed)、金額がウォレットに返金されます。 - 保留中の支払い: ウェブフックが届かない場合、NexCMPは10分以上保留のままになっている支払いがないか独自にStripeと照合し、完了させます。7日より古い支払いは無視されます。
- Resellers は自分のStripeアカウント(ウェブフック
https://<their-domain>/v1/billing/stripe/webhook/r/<id>)を接続できます。Resellers を参照してください。
トラブルシューティング
| 症状 | 原因 | 対処法 |
|---|---|---|
| 「Secret key must start with sk_live_/sk_test_」のエラーが表示される | 間違ったキーが貼り付けられている | Developers › API keys からシークレットキーを貼り付けます。 |
| 「秘密鍵がライブモードとテストモードで一致していません」 | モードとキーが一致していません | Mode をキーのプレフィックスと一致させてください。 |
| 「公開鍵は pk_ で始まる必要があります」 | キーが正しくありません | 公開可能キーを使用してください。 |
| 接続が失敗したと表示される | キーが誤っている、失効している、またはサーバーが api.stripe.com に到達できません | キーを再貼り付けし、サーバーから curl -I https://api.stripe.com でテストしてください。 |
| 赤色のバナー "Missing webhook_secret" | 署名シークレットが保存されていません | Create webhook をクリックするか、Stripe Dashboard から whsec_... シークレットを貼り付けて Save をクリックします。 |
| 引き落とされたが残高が反映されない | Webhook が配信されていないか、署名検証に失敗しています | URL が /v1/billing/stripe/webhook で終わり、シークレットがエンドポイントと一致していることを確認し、Gateway events でイベントを再送します。Stripe でエンドポイントを開き、配信試行を確認してください(HTTP 400 は署名シークレットの間違いを示します)。 |
| "Create webhook" が失敗する | URL が HTTPS ではないか、アクセスできません | 公開用の https:// ドメインを使用してください。 |
| Apple Pay のステータスが有効ではありません | ドメインが検証されていません | ドメイン関連ファイルが 200 を返すようになったら、再度 Register / verify domain をクリックします。 |
| チェックダイアログに Alipay が表示されない | Stripe で有効化されていません | Stripe Dashboard で有効化してから、Check をクリックしてください。 |
| お客様の画面にカード入力フォームが表示されない | Card (Stripe) が無効であるか、シークレットキーがありません | Fees & limits で有効にし、キーを保存してください。 |