コンテンツにスキップ
アカウントを作成
または
サインイン
Stripe ドキュメントのロゴ
/
AI に質問する
アカウントを作成
サインイン
始める
支払い
売上
プラットフォームおよびマーケットプレイス
資金管理
開発者向けのツール
概要
Stripe Payments について
構築済みのシステムをアップグレード
支払いの分析
オンライン決済
概要ユースケースを見つけるManaged Payments
Payment Links を使用する
決済ページを構築
高度なシステムを構築
アプリ内実装を構築
決済手段
決済手段を追加
決済手段を管理
Link による購入の迅速化
支払いインターフェイス
Payment Links
Checkout
Web Elements
アプリ内 Elements
決済シナリオ
カスタムの決済フロー
    概要
    既存の顧客の支払い
    支払いのオーソリとキャプチャーを分離する
    2 段階の確認機能を構築する
    インテントを作成する前に支払いの詳細を収集
    サーバーで支払いを確定する
    通信販売 / 電話販売 (MOTO) の受け付け
    アメリカとカナダのカード
      認証なしのカードの保存
      認証を処理するためのアップグレード
    サードパーティーの API エンドポイントにカード情報を転送する
    支払い項目
柔軟なアクワイアリング
オーケストレーション
店頭支払い
端末
他の Stripe プロダクト
Financial Connections
仮想通貨
Climate
ホーム支払いCustom payment flowsUS and Canadian cards

注

このページはまだ日本語ではご利用いただけません。より多くの言語で文書が閲覧できるように現在取り組んでいます。準備が整い次第、翻訳版を提供いたしますので、もう少しお待ちください。

銀行の認証なしでカードを保存する

カードの詳細を収集して、後で顧客に請求します。

ページをコピー

Stripe では、顧客のカード詳細を収集して後で請求できます。一部の地域では、銀行により、2 段階目の認証 (スマートフォンに送信されたコードの入力など) が要求されます。この追加ステップにより、顧客が Web サイトまたはアプリケーションをアクティブに使用していない場合は、購入の認証ができないためにコンバージョン率が低下します。

アメリカとカナダを中心にして事業を運営している場合は、銀行によって認証が要求されないため、より簡単なこの実装を使用できます。この実装は、カードの保存に認証が必要な国では非準拠となるため、この実装を構築すると、他の国に事業を拡大する場合や他の決済手段を追加する場合に、大幅な変更が必要になります。認証が必要なカード情報の保存方法をご確認ください。

法令遵守

お客様は、顧客の支払い情報を保存する際の該当する法律、規制、ネットワークのルールのすべてに準拠する責任を負います。たとえば、顧客がお客様のウェブサイトやアプリを積極的には使用していない時期に顧客に請求するなど、将来の利用に備えて顧客の支払い方法を保存する場合が該当します。支払い方法の保存をどのように計画しているかを示す規約をウェブサイトやアプリに追加し、顧客が許可できるようにします。顧客がオフラインのときに請求する予定である場合は、規約に以下の内容も含める必要があります。

  • 指定された取引で顧客の代理として単独の支払いまたは一連の支払いを開始することを許可するという、顧客からお客様への同意。
  • 予期される支払い時期と支払い頻度 (たとえば、請求が予定されている分割払いなのか、サブスクリプションの決済なのか、あるいは予定されていないトップアップなのか)。
  • 支払い金額の決定方法。
  • 支払い方法をサブスクリプションサービスに使用する場合は、キャンセルに関するポリシー。

これらの規約に関する顧客の書面による同意の記録を必ず保管してください。

カード詳細を収集する
クライアント側

このガイドを参照する前に、Stripe アカウントが必要です。今すぐ登録してください。

顧客のカード詳細を収集するための決済ページを構築します。カスタムの決済フォームの構築に利用可能な UI ライブラリである Stripe Elements を使用します。Elements を使用した作業を開始するには、次のスクリプトを使用して、決済ページに Stripe.js ライブラリを組み込みます。

<script src="https://js.stripe.com/v3/"></script>

常に js.stripe.com から Stripe.js を直接読み込むことにより、PCI への準拠が維持されます。スクリプトをバンドルに含めたり、そのコピーを自身でホストしたりしないでください。

Stripe の高度な不正対策機能を最大限に活用するには、このスクリプトを決済ページだけでなく、自社サイトのすべてのページに追加してください。すべてのページにスクリプトを追加することで、ウェブサイトを閲覧するユーザーの不正行為を示唆するような不審な動作を Stripe が検知できるようになります。

Elements をページに追加する

顧客からカード詳細を安全に収集するために、Stripe がオンラインで提供する UI コンポーネントは、お客様が直接作成するのではなく、Elements によって作成され、その後決済フォームに配置されます。これらのコンポーネントの挿入先を決定するには、決済フォームで一意の ID を持つ空の DOM 要素 (コンテナー) を作成してください。

index.html
<input id="cardholder-name" type="text"> <!-- placeholder for Elements --> <div id="card-element"></div> <div id="card-result"></div> <button id="card-button">Save Card</button>

Elements の例

GitHub で、Elements を使用して作成された支払いフォームのサンプルをご確認ください。

次に、Stripe オブジェクトのインスタンスを作成し、公開可能な API キーを最初のパラメーターとして指定します。その後、Elements オブジェクトのインスタンスを作成し、それを使用して DOM に card Element をマウントします。

card Element は、カードに関する必要な詳細情報をすべて安全に収集する 1 つの柔軟な入力フィールドを挿入することによって、支払いフォームを簡素化し、必要なフィールドの数を最小限に抑えます。

また、cardNumber、cardExpiry、cardCvc の Element を組み合わせることで、柔軟で複数の入力が可能なカードフォームを実現できます。

注

カードの支払い成功率を向上し、不正使用を削減するため、常に郵便番号を収集してください。

単一行の Card Element は、顧客の郵便番号を自動的に収集して Stripe に送信します。分割 Element (Card Number、Expiry、CVC) を使用して支払いフォームを構築する場合、顧客の郵便番号用に別個の入力フィールドを追加します。

client.js
const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); const elements = stripe.elements(); const cardElement = elements.create('card'); cardElement.mount('#card-element');

Stripe Element には、HTTPS 接続を介して支払い情報を Stripe に安全に送信する iframe が含まれています。実装を機能させるには、決済ページのアドレスの先頭を http:// ではなく https:// にする必要があります。

HTTPS を使用せずに実装をテストできます。本番環境で決済を受け付ける準備が整ったら、HTTPS を有効化します。

client.js
サンプル全体を表示
const cardholderName = document.getElementById('cardholder-name'); const cardButton = document.getElementById('card-button'); const resultContainer = document.getElementById('card-result'); cardButton.addEventListener('click', async (ev) => { const {paymentMethod, error} = await stripe.createPaymentMethod({ type: 'card', card: cardElement, billing_details: { name: cardholderName.value, }, } ); if (error) { // Display error.message in your UI. resultContainer.textContent = error.message; } else { // You have successfully created a new PaymentMethod resultContainer.textContent = "Created payment method: " + paymentMethod.id; } });

結果として得られた PaymentMethod ID をサーバーに送信します。

Stripe を設定する
サーバー側

アプリケーションから Stripe API にアクセスするには、Stripe の公式ライブラリを使用します。

Command Line
Ruby
# Available as a gem sudo gem install stripe
Gemfile
Ruby
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

カードを保存する
サーバー側

PaymentMethod を Customer (顧客) に関連付けることでカードを保存します。Customer オブジェクトを使用して、顧客に関する他の情報 (配送の詳細、メールアドレスなど) を格納できます。

Command Line
cURL
curl https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d payment_method={{PAYMENT_METHOD_ID}}

既存の Customer がある場合は、代わりにそのオブジェクトに PaymentMethod を関連付けることがきます。

Command Line
cURL
curl https://api.stripe.com/v1/payment_methods/{{PAYMENT_METHOD_ID}}/attach \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer=
{{CUSTOMER_ID}}

この時点で、独自の内部的な顧客の表記がある場合は、この表記に顧客 ID と PaymentMethod ID を関連付けます。

保存されたカードに請求する
サーバー側

準備ができたら、請求する PaymentMethod ID と顧客 ID を取り込みます。これは、両方の ID をお客様のデータベースに格納するか、顧客 ID を使用して顧客の使用可能なすべての PaymentMethod を検索することで実行できます。

Command Line
cURL
curl -G https://api.stripe.com/v1/payment_methods \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer=
{{CUSTOMER_ID}}
\ -d type=card

PaymentMethod ID と顧客 ID を使用して新しい PaymentIntent を作成します。error_on_requires_action を true に設定して、2 段階認証などの顧客のアクションを必要とする支払いを拒否します。

Command Line
cURL
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d customer=
{{CUSTOMER_ID}}
\ -d payment_method={{PAYMENT_METHOD_ID}} \ -d error_on_requires_action=true \ -d confirm=true

支払いが失敗すると、リクエストも 402 HTTP ステータスコードで失敗し、エラーが返されます。アプリケーションに戻って支払いを完了するように (メールを送信するなどして) 顧客に通知する必要があります。Stripe API ライブラリから発生したエラーのコードを確認するか、PaymentIntent の last_payment_error.decline_code を確認し、カード発行会社が支払いを拒否した理由を調べます。

カードエラーを処理する

支払いが失敗したことを顧客に通知し、ステップ 1 でお客様が作成した決済フォームに顧客を転送します。顧客はそこで新しいカード詳細を入力できます。その新しい PaymentMethod ID をお客様のサーバーに送信して、Customer オブジェクトに関連付けし、再度支払いを行います。

別の方法として、既に作成済みの Customer がある場合は、PaymentIntent の作成とカードの保存を、すべて 1 回の API コールで実行できます。

Command Line
cURL
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d customer=
{{CUSTOMER_ID}}
\ -d payment_method={{PAYMENT_METHOD_ID}} \ -d error_on_requires_action=true \ -d confirm=true \ -d setup_future_usage=on_session

setup_future_usage を on_session に設定すると、不要な認証をトリガーせずに今後のためにカードを保存することを Stripe に対して示します。

構築したシステムをテストする

Stripe provides test cards you can use in a sandbox to simulate different cards’ behavior. Use these cards with any CVC, postal code, and expiry date in the future.

番号説明
成功し、支払いがすぐに処理されます。
常に支払い拒否コード insufficient_funds で失敗します。
認証が必要なため、この組み込みでは、authentication_required というコードで拒否されます。

オプションセキュリティコードの再収集

カード認証を処理するために組み込みをアップグレードする

このシステムでは、支払い時に認証を必要とするカードは拒否されます。ダッシュボードで多くの支払いが Failed としてリストアップされるようになった場合は、システムのアップグレードが必要なタイミングです。Stripe のグローバルな導入は、そのような支払いを自動的に拒否せずに処理します。

このページはお役に立ちましたか。
はいいいえ
お困りのことがございましたら 、サポートにお問い合わせください。
早期アクセスプログラムにご参加ください。
変更ログをご覧ください。
ご不明な点がございましたら、お問い合わせください。
LLM ですか?llms.txt を読んでください。
Powered by Markdoc