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 に渡します。
エンドポイントの例については、Checkout セッションを作成するをご覧ください。
import {CheckoutProvider} from '@stripe/react-stripe-js/checkout'; 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(); export default function App() { const promise = useMemo(() => { return fetch('/create-checkout-session', { method: 'POST', }) .then((res) => res.json()) .then((data) => data.clientSecret); }, []); return ( <CheckoutProvider stripe={stripePromise} options={{clientSecret: promise}}> <CheckoutForm /> </CheckoutProvider> ); }'pk_test_TYooMQauvdEDq54NiTphI7jx'
| プロパティ | 説明 |
|---|---|
| required Stripe オブジェクト または Stripe オブジェクトに解決される サーバ側の初回のレンダリングを実行している場合や、静的なサイトを生成している場合には、 |
| required CheckoutProvider 設定オプションを使用します。利用可能なオプションをご覧ください。作成されたCheckout Session の |
Element コンポーネント
Element コンポーネントを使用すると、React アプリで支払い情報を安全に収集し、決済ページの任意の場所に Elements を配置できます。外観をカスタマイズすることもできます。
個々の Element コンポーネントを CheckoutProvider ツリー内にマウントできます。1 つの <CheckoutProvider> には、各タイプの Element を 1 つだけマウントできます。
import {PaymentElement} from '@stripe/react-stripe-js/checkout'; 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 は次のとおりです。
| コンポーネント | 用途 |
|---|---|
BillingAddressElement | 236 を超える地域形式の請求先住所の詳細を収集します。詳細については、Address Element のドキュメントを参照してください。 |
ShippingAddressElement | 236 を超える地域形式の配送先住所の詳細を収集します。詳細については、Address Element のドキュメントを参照してください。 |
ExpressCheckoutElement | Apple Pay、Google Pay、Link、PayPal など、1 つまたは複数の決済ボタンでカードまたはウォレットによる決済を受け付けることができます。詳細については、Express Checkout Element のドキュメントを参照してください。 |
PaymentElement | 世界中の 25 以上の決済手段 の決済詳細を収集します。詳細については、Payment Element のドキュメントを参照してください。 |
useCheckout hook
useCheckout(): CheckoutValue
コンポーネントで useCheckout フックを使用して、Checkout セッションからのデータとそれを更新するメソッドを含む Checkout オブジェクトを取得します。
import {useCheckout, PaymentElement} from '@stripe/react-stripe-js/checkout'; const CheckoutForm = () => { const checkoutState = useCheckout(); const handleSubmit = async (event) => { // We don't want to let default form submission happen here, // which would refresh the page. event.preventDefault(); if (checkoutState.type === 'loading') { return ( <div>Loading...</div> ); } else if (checkoutState.type === 'error') { return ( <div>Error: {checkoutState.error.message}</div> ); } // checkoutState.type === 'success' const {checkout} = checkoutState; 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;
カスタマイズとスタイリング
各Elementsは iframe にマウントされるため、Elements はおそらく、既存のスタイリングおよびコンポーネントフレームワークでは機能しません。それにもかかわらず、サイトのデザインに合わせて Elements を設定することはできます。Elements をカスタマイズするには、イベントに応答し、外観オプション を使用してElements を設定します。各 Element のレイアウトは一貫性を保ちますが、色、フォント、境界線、パディングなどを変更できます。
次のステップ
React Stripe.js および Elements との連携を Checkout Sessions API で構築します。