React Stripe.js リファレンス
Stripe.js および Stripe Elements の React コンポーネントについてご紹介します。
React Stripe.js は、Stripe Elements を囲むシンラッパーです。これにより、あらゆる React アプリに Elements を追加できるようになります。
Stripe.js リファレンスでは、Elements のカスタマイズの詳細がすべて記載されています。
Elements を任意の Stripe プロダクトとともに使用することで、オンライン支払いを回収できます。お客様のビジネスに適した導入パスについては、Stripe のドキュメントをご覧ください。
注
はじめに
このガイドは、React の基本的な実践知識があること、また、React プロジェクトがすでに設定されていることを前提としています。React を初めて使用する場合は、先に進む前に React のクイックスタートガイドをお読みになることをお勧めします。
設定
決済プロバイダー
CheckoutProvider
プロバイダーにより、Element コンポーネントの使用が可能になり、ネストされたあらゆるコンポーネント内の Stripe オブジェクトにアクセスできるようになります。React アプリのルートに CheckoutProvider
プロバイダーをレンダリングし、必要な場所でいつでも使用できるようにします。
CheckoutProvider
を使用するには、公開可能キーを使用して @stripe/stripe-js
から loadStripe を呼び出します。loadStripe
関数は、Stripe.js スクリプトを非同期で読み込み、Stripe オブジェクトを初期化します。返された Promise
を CheckoutProvider
に渡します。
See Create a Checkout Session for an example of what your endpoint might look like.
import {CheckoutProvider} from '@stripe/react-stripe-js'; import {loadStripe} from '@stripe/stripe-js'; // Make sure to call `loadStripe` outside of a component’s render to avoid // recreating the `Stripe` object on every render. const stripePromise = loadStripe(
); const fetchClientSecret = () => { return fetch('/create-checkout-session', {method: 'POST'}) .then((response) => response.json()) .then((json) => json.checkoutSessionClientSecret) }; export default function App() { return ( <CheckoutProvider stripe={stripePromise} options={{fetchClientSecret}}> <CheckoutForm /> </CheckoutProvider> ); }'pk_test_TYooMQauvdEDq54NiTphI7jx'
プロパティ | 説明 |
---|---|
| required Stripe オブジェクト または Stripe オブジェクトに解決される サーバ側の初回のレンダリングを実行している場合や、静的なサイトを生成している場合には、 |
| required CheckoutProvider configuration options. See available options. You must provide the |
Element コンポーネント
Element コンポーネントを使用すると、React アプリで支払い情報を安全に収集し、決済ページの任意の場所に Elements を配置できます。外観をカスタマイズすることもできます。
個々の Element コンポーネントを CheckoutProvider
ツリー内にマウントできます。1 つの <CheckoutProvider>
には、各タイプの Element を 1 つだけマウントできます。
import {PaymentElement} from '@stripe/react-stripe-js'; const CheckoutForm = () => { return ( <form> <PaymentElement /> <button>Submit</button> </form> ); }; export default CheckoutForm;
プロパティ | 説明 |
---|---|
| optional Element 構成オプションを含むオブジェクト。Payment Element の使用可能なオプションをご覧ください。 |
| optional Element がフォーカスを失うとトリガーされます。 |
| optional この Element によって公開されるデータが変更されたときにトリガーされます。 詳細については、Stripe.js リファレンスをご覧ください。 |
| optional Element 内でエスケープキーが押されるとトリガーされます。 詳細については、Stripe.js リファレンスをご覧ください。 |
| optional Element がフォーカスを受けるとトリガーされます。 |
| optional Element の読み込みが失敗したときにトリガーされます。 詳細については、Stripe.js リファレンスをご覧ください。 |
| optional loader UI が DOM にマウントされ、表示する準備が整ったときにトリガーされます。 これらのイベントは、 詳細については、Stripe.js リファレンスをご覧ください。 |
| optional Element が完全にレンダリングされ、必須の |
使用可能な Element コンポーネント
決済ページの情報を収集するために、数種類の Elements を使用できます。使用可能な Elements は次のとおりです。
コンポーネント | 用途 |
---|---|
AddressElement | 236 を超える地域形式に対応して住所の詳細を収集します。詳細については、Address Element のドキュメントをご覧ください。 |
ExpressCheckoutElement | Apple Pay、Google Pay、Link、PayPal といった支払いボタンを 1 つ以上使用して、カードまたはウォレットによる決済を受け付けられます。詳細については、Express Checkout Element のドキュメントをご覧ください。 |
PaymentElement | 世界中から 25 を超える決済手段の支払いの詳細を収集します。詳細については、Payment Element のドキュメントを参照してください。 |
useCheckout hook
useCheckout(): CheckoutContextValue | null
コンポーネントで useCheckout フックを使用して、Checkout セッションからのデータとそれを更新するメソッドを含む Checkout オブジェクトを取得します。
import {useCheckout, PaymentElement} from '@stripe/react-stripe-js'; const CheckoutForm = () => { const checkout = useCheckout(); const handleSubmit = async (event) => { // We don't want to let default form submission happen here, // which would refresh the page. event.preventDefault(); const result = await checkout.confirm(); if (result.type === 'error') { // Show error to your customer (for example, payment details incomplete) console.log(result.error.message); } else { // Your customer will be redirected to your `return_url`. For some payment // methods like iDEAL, your customer will be redirected to an intermediate // site first to authorize the payment, then redirected to the `return_url`. } }; return ( <form onSubmit={handleSubmit}> <PaymentElement /> <button>Submit</button> </form> ) }; export default CheckoutForm;
カスタマイズとスタイリング
各 Element は iframe
にマウントされるため、既存のスタイルやコンポーネントのフレームワークではその Element が動作しない可能性があります。それでも、サイトのデザインに合わせて Elements を設定できます。Elements のカスタマイズは、イベントへの応答と appearance オプションによる Elements の設定で構成されます。各 Element のレイアウトに一貫性をもたせながら、色、フォント、枠線、パディングなどを変更することができます。
次のステップ
React Stripe.js および Elements との連携を Checkout Sessions API で構築します。