コンテンツにスキップ
アカウントを作成
または
サインイン
Stripe ドキュメントのロゴ
/
Ask AI
アカウントを作成
サインイン
始める
支払い
財務の自動化
プラットフォームおよびマーケットプレイス
資金管理
開発者向けのツール
始める
支払い
財務の自動化
始める
支払い
財務の自動化
プラットフォームおよびマーケットプレイス
資金管理
概要
Stripe Payments について
構築済みのシステムをアップグレード
支払いの分析
オンライン決済
概要ユースケースを見つけるManaged Payments
Payment Links を使用する
決済ページを構築
高度なシステムを構築
アプリ内実装を構築
支払い方法
決済手段を追加
決済手段を管理
Link による購入の迅速化
    概要
    即時の銀行支払い
    概要
    Checkout で Link を使用する
    Web Elements での Link の使用
    Mobile Elements での Link の使用
    Invoicing での Link の使用
    導入ガイド
    Link による支払いの導入
    Link を含むカスタムの決済ページを構築
    Elements と Link を使用して支払いを事前設定
支払いインターフェイス
Payment Links
Checkout
Web Elements
アプリ内 Elements
決済シナリオ
カスタムの決済フロー
柔軟なアクワイアリング
オーケストレーション
店頭支払い
端末
他の Stripe プロダクト
Financial Connections
仮想通貨
Climate
ホーム支払いFaster checkout with Link

注

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

Link を含むカスタムの決済ページを構築する

Payment Element または Link Authentication Element を使用して Link を導入します。

ページをコピー

This guide walks you through how to accept payments with Link using the Payment Intents API and either the Payment Element or Link Authentication Element.

Link の認証または登録のために顧客のメールアドレスを収集する方法は 3 種類あります。

  • メールアドレスを渡す: defaultValues を使用して、メールアドレスを Payment Element に渡すことができます。決済フローで顧客のメールアドレスまたは電話番号を収集した場合は、このアプローチをお勧めします。
  • メールアドレスを収集する: Payment Element で直接、メールアドレスを収集できます。決済フローでメールアドレスを収集しない場合は、このアプローチをお勧めします。
  • Link Authentication Element: Link Authentication Element を使用して、1 つでメールアドレスの収集と Link の認証の両方に対応するメールアドレス入力フィールドを作成できます。Address Element を使用している場合は、この方法をお勧めします。
購入時に Payment Element で直接 Link を認証または登録する

Link の認証または登録のために顧客のメールアドレスを収集する

Stripe を設定する
サーバ側

まず、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'

PaymentIntent を作成する
サーバー側

Stripe は PaymentIntent (支払いインテント) オブジェクトを使用して、顧客から支払いを回収する意図を示し、プロセス全体を通して請求の実施と支払い状態の変化を追跡します。

決済フロー全体の概要図

Setup Intents で今後の使用に向けてカード詳細を収集している場合は、動的な決済手段を使用する代わりに決済手段を手動で一覧表示します。動的な決済手段を使用せずに Link を使用するには、導入を更新して link を payment_method_types に渡します。

PaymentIntent を作成する際は、動的な決済手段を使用して、Link を含む最も関連性の高い支払い方法を顧客に動的に提供します。動的な決済手段を使用するには、payment_method_typesパラメーターを含めないでください。オプションで、automatic_payment_methods を有効にすることもできます。

注

システムで payment_method_types パラメーターを設定しない場合、カードやウォレットなどの一部の決済手段は自動的に有効になります。

動的な決済手段を使用して Link を Elements システムに追加するには、次のようにします。

  1. ダッシュボードの決済手段の設定で、Link を有効にします。
  2. 決済手段を手動で一覧化する既存の実装がある場合は、実装から payment_method_types パラメーターを削除します。

client secret を取得する

PaymentIntent には、client secret が含まれています。これは、支払いプロセスを安全に完了するためにクライアント側で使用されます。client secret をクライアント側に渡す際は、いくつかの方法を使用できます。

ブラウザーの fetch 関数を使用して、サーバーのエンドポイントから client secret を取得します。この方法は、クライアント側が 1 ページのアプリケーションで、特に React などの最新のフロントエンドフレームワークで構築されている場合に最適です。client secret を処理するサーバーのエンドポイントを作成します。

main.rb
Ruby
get '/secret' do intent = # ... Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

その後、クライアント側で JavaScript を使用して client secret を取得します。

(async () => { const response = await fetch('/secret'); const {client_secret: clientSecret} = await response.json(); // Render the form using the clientSecret })();

顧客のメールアドレスを収集する

Link は顧客のメールアドレスを使用して顧客を認証します。決済フローに応じて、「メールアドレスを Payment Element に渡す」、「Payment Element 内で直接メールアドレスを収集する」、または「Link Authentication Element を使用する」というオプションがあります。これらのうち、可能であれば顧客のメールアドレスを Payment Element に渡す方法をおすすめします。

以下の「いずれか」に該当する場合:

  • メールアドレスの収集と Link の認証が最適化された 1 つのコンポーネントを使用する場合。
  • 顧客から配送先住所を収集する必要がある場合。

その場合、Link Authentication Element、Payment Element、必要に応じて Address Element を実装する導入フローを使用します。

Link 対応の決済ページでは、最初に Link Authentication Element があり、その次に Address Element が続き、最後に Payment Element となります。決済フローが複数ページにわたる場合、Link Authentication Element を各ページに同じ順序で表示することもできます。

複数の Elements を使用して決済フォームを作成する

複数の Elements を使用して決済フォームを作成する

このシステムは以下のように動作します。

決済フォームを設定する
クライアント側

これで、Elements の構築済みの UI コンポーネントを使用してカスタムの決済フォームを設定できるようになりました。構築したシステムを機能させるには、決済ページのアドレスの先頭を http:// ではなく https:// にする必要があります。テストの際には、HTTPS を使用しなくても問題ありません。本番環境で決済を受け付ける準備が整ったら、HTTPS を有効にします。

Link Authentication Element によってメールアドレス入力が表示されます。Link で、顧客のメールアドレスと既存の Link アカウントが一致すると、その顧客に認証用の安全なワンタイムコードが送信されます。顧客が認証に成功すると、Stripe は、Link に保存された顧客の住所と支払い方法を表示して、顧客が使用できるようにします。

この実装では、Payment Element も作成されます。この Payment Element によって動的フォームが表示され、顧客は支払い方法のタイプを選択できます。このフォームでは、顧客が選択した支払い方法に必要な支払い情報が自動的に収集されます。Payment Element は、Link に保存された支払い方法を、認証済みの顧客に表示する処理も行います。

Stripe Elements を設定する

Install React Stripe.js and the Stripe.js loader from the npm public registry.

Command Line
npm install --save @stripe/react-stripe-js @stripe/stripe-js

決済ページで、決済フォームを Elements コンポーネントでラップし、前のステップの client secret を渡します。フォームの別の部分で顧客のメールアドレスをすでに収集している場合には、既存の入力を linkAuthenticationElement​ に置き換えます。

メールアドレスを収集しない場合、決済フローに linkAuthenticationElement​ を追加します。Link に保存されている顧客の詳細を Link で ShippingAddressElement と PaymentElement に自動入力するには、linkAuthenticationElement を ShippingAddressElement (配送先住所を収集する場合は省略可) と PaymentElement より前に配置する必要があります。また、appearance オプションを渡して、サイトのデザインに合わせて Elements をカスタマイズすることもできます。

顧客のメールアドレスを把握している場合は、それを linkAuthenticationElement の defaultValues オプションに渡します。これによりメールアドレスが事前入力され、Link の認証プロセスが開始されます。

その他の顧客情報がある場合は、PaymentElement の defaultValues.billingDetails オブジェクトに渡します。できるだけ多くの情報を事前入力することで、顧客の Link アカウントの作成やアカウントの再利用を効率化できます。

次に、linkAuthenticationElement と PaymentElement の各コンポーネントを決済フォームにレンダリングします。

Checkout.js
import {loadStripe} from "@stripe/stripe-js"; import { Elements, LinkAuthenticationElement, PaymentElement, } from "@stripe/react-stripe-js"; const stripe = loadStripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); // Customize the appearance of Elements using the Appearance API. const appearance = {/* ... */}; // Enable the skeleton loader UI for the optimal loading experience. const loader = 'auto';

linkAuthenticationElement、PaymentElement、ShippingAddressElement は同じページになくてもかまいません。顧客の連絡先情報、配送先の詳細、支払いの詳細をそれぞれ別のステップで顧客に表示するプロセスがある場合、適切なステップまたはページで各 Element を表示できます。Link が提供している配送先と支払いの自動入力機能を顧客が最大限に活用できるように、連絡先情報収集ステップにメール入力フォームとして linkAuthenticationElement を含めてください。

決済フローの早い段階で Link Authentication Element を使用して顧客のメールアドレスを収集している場合、配送ページや支払いページでそれを再び表示する必要はありません。

メールアドレスを取得する

linkAuthenticationElement コンポーネントの onChange プロパティを使用してメールアドレスの詳細を取得できます。ユーザーがメールアドレスフィールドを更新するか、保存された顧客のメールアドレスが自動入力されると、onChange ハンドラーが起動します。

<linkAuthenticationElement onChange={(event) => { setEmail(event.value.email); }} />

顧客のメールアドレスを事前入力する

Link Authentication Element はメールアドレスを受け付けます。顧客のメールアドレスを指定すると、顧客が defaultValues オプションを使用して支払いページに到達するとすぐに Link の認証フローがトリガーされます。

<linkAuthenticationElement options={{defaultValues: {email: 'foo@bar.com'}}}/>

オプションその他の顧客データを事前入力する
クライアント側

オプション配送先住所を収集する
クライアント側

オプションデザインをカスタマイズする
クライアント側

Stripe に支払いを送信する
クライアント側

stripe.confirmPayment を使用し、さまざまな Elements フォームで顧客から収集された情報を使用して支払いを完了します。この関数に return_url を指定して、支払いが完了した後に Stripe がユーザーをリダイレクトする場所を指示します。

ユーザーは、まず銀行のオーソリページなどの中間サイトにリダイレクトされ、その後 Stripe によって return_url にリダイレクトされる場合があります。

By default, card and bank payments immediately redirect to the return_url when a payment is successful. If you don’t want to redirect to the return_url, you can use if_required to change the behavior.

Checkout.js
import {loadStripe} from "@stripe/stripe-js"; import { useStripe, useElements, Elements, LinkAuthenticationElement, PaymentElement, // If collecting shipping AddressElement, } from "@stripe/react-stripe-js"; const stripe = loadStripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); const appearance = {/* ... */}; // Enable the skeleton loader UI for the optimal loading experience. const loader = 'auto'; const CheckoutPage =({clientSecret}) => ( <Elements stripe={stripe} options={{clientSecret, appearance, loader}}> <CheckoutForm /> </Elements> ); export default function CheckoutForm() { const stripe = useStripe(); const elements = useElements(); const handleSubmit = async (event) => { event.preventDefault(); const {error} = await stripe.confirmPayment({ elements, confirmParams: { return_url: "https://example.com/order/123/complete", }, }); if (error) { // handle error } }; return ( <form onSubmit={handleSubmit}> <h3>Contact info</h3> <LinkAuthenticationElement /> {/* If collecting shipping */} <h3>Shipping</h3> <AddressElement options={{mode: 'shipping', allowedCountries: ['US']}} /> <h3>Payment</h3> <PaymentElement /> <button type="submit">Submit</button> </form> ); }

return_url は、戻りページのレンダリング時に PaymentIntent の支払いのステータスを表示する Web サイト上のページに対応します。Stripe が顧客を return_url にリダイレクトするときに、以下の URL クエリパラメーターを使用して支払いのステータスを確認できます。return_url を指定する際は、独自のクエリパラメーターを追加することもできます。このクエリパラメーターはリダイレクトプロセス全体で存続します。

パラメーター説明
payment_intentPaymentIntent の一意の識別子
payment_intent_client_secretPaymentIntent オブジェクトの client secret。

オプションオーソリとキャプチャーを分離する
サーバー側

支払い後のイベントを処理する
サーバー側

支払いが完了すると、Stripe は payment_intent.succeeded イベントを送信します。Webhook を使用してこれらのイベントを受信し、顧客への注文確認メールの送信、データベースへの売上の記録、配送ワークフローの開始などのアクションを実行します。

クライアントからのコールバックを待つのではなく、こうしたイベントをリッスンするように組み込みを設定します。クライアントからのコールバックを待っているときに、コールバックが実行される前に顧客がブラウザーのウィンドウを閉じたり、アプリを終了したりする場合もあります。非同期型のイベントをリッスンするよう組み込みを設定すると、さまざまなタイプの支払い方法を 1 つの組み込みで受け付けることができます。

Payment Element を使用して支払いを回収する場合は、payment_intent.succeeded イベント以外に重要な 2 つのイベントも処理することができます。

イベント説明アクション
payment_intent.succeeded顧客が正常に支払いを完了したときに Stripe から送信されます。顧客に注文の確定を送信し、注文のフルフィルメントを実行します。
payment_intent.payment_failed顧客が支払いを試み、その支払いに失敗した場合に Stripe から送信されます。支払いが processing から payment_failed に変わった場合は、顧客に再度支払いを試すように促します。

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

注意

Don’t store real user data in sandbox Link accounts. Treat them as if they’re publicly available, because these test accounts are associated with your publishable key.

Link は現在、クレジットカード、デビットカード、および資格要件を満たしたアメリカの銀行口座からの購入にのみ対応しています。Link では、ドメインの登録が必要です。

You can create sandbox accounts for Link using any valid email address. The following table shows the fixed one-time passcode values that Stripe accepts for authenticating sandbox accounts:

値結果
以下に記載されていない任意の 6 桁の数字成功
000001エラー: コードが無効です
000002エラー: コードの有効期限が切れています
000003エラー: 最大試行回数を超えました

特定の決済手段をテストするには、Payment Element のテスト例をご覧ください。

複数の資金供給元

対応する資金供給元を Stripe が追加した場合でも、貴社で構築済みのシステムを更新する必要はありません。Stripe が自動的に対応し、カード決済や銀行口座決済の場合と同じ売上処理時間と保証が適用されます。

カード認証と 3D セキュア

Link は、カード決済で 3D セキュア 2 (3DS2) 認証をサポートしています。3DS2 では、顧客が支払うときに、カード発行会社による追加の確認手順を完了する必要があります。3D セキュアを使用して正常に認証された支払いは、ライアビリティシフトの対象となります。

To trigger 3DS2 authentication challenge flows with Link in a sandbox, use the following test card with any CVC, postal code, and future expiration date: .

In a sandbox, the authentication process displays a mock authentication page. On that page, you can either authorize or cancel the payment. Authorizing the payment simulates successful authentication and redirects you to the specified return URL. Clicking the Failure button simulates an unsuccessful attempt at authentication.

詳細については、3D セキュア認証ページをご覧ください。

注

3DS フローのテストでは、3DS2 用のテストカードを使用している場合にのみ Link の認証が起動されます。

オプション顧客の保存済みデータを表示する
サーバー側
クライアント側

オプションLink による支払い方法を保存する
サーバー側
クライアント側

顧客に Stripe を開示する

Stripe は顧客の Elements とのやり取りに関する情報を収集して、サービスを提供し、不正利用を防止し、サービスを向上します。これには、Cookie と IP アドレスを使用して、1 つの決済フローセッションで顧客に表示する Elements を特定することが含まれます。Stripe がこのような方法でデータを使用するために必要なすべての権利と同意について開示し、これらを取得することはお客様の責任です。詳細については、プライバシーセンターをご覧ください。

参照情報

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