# ナイジェリアからの銀行振込による支払いを受け付ける # Checkout > This is a Checkout for when payment-ui is checkout. View the full page at https://docs.stripe.com/payments/ng-bank-transfer/accept-a-payment?payment-ui=checkout. > Stripe は、通貨、支払い方法の制限、その他のパラメーターを評価することで、適切な支払い方法を顧客に自動的に提示できます。 > > - [決済の受け付け](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=stripe-hosted)ガイドに従って、[動的な決済手段](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md)を使用するチェックアウトの統合機能を構築します。 - 動的な決済手段を使用しない場合は、チェックアウトの導入で、決済方法を手動で設定するために以下のステップに従ってください。 ナイラ建ての銀行振込を導入すると、ナイジェリアの顧客は現地の銀行振込で支払えるようになります。 Stripe のマーチャントオブレコード・サービスプロバイダーは、現地での銀行振込 (現地では「送金」とも呼ばれる) 用のリダイレクトベースの決済フローを提供しています。顧客が支払いを行うと、Stripe は顧客を地域のマーチャントオブレコード・サービスプロバイダーの決済フローにリダイレクトして、そのフローで支払いを認証してオーソリされるようにします。顧客が支払いをオーソリすると、Stripe は顧客を貴社のサイトにリダイレクトして戻します。 ## 互換性を判断する **サポート対象のビジネスの所在地**: US **対応可能な通貨**: `ngn` **取引通貨**: `ngn` **支払いモード**: Yes **セットアップモード**: No **サブスクリプションモード**: No ナイジェリアの支払い方法に対応するには、[Checkout セッション](https://docs.stripe.com/payments/checkout/how-checkout-works.md#session)が次の条件をすべて満たしている必要があります。 - ラインアイテムの*価格* (Prices define how much and how often to charge for products. This includes how much the product costs, what currency to use, and the interval if the price is for subscriptions)はすべて、ナイジェリアナイラ (通貨コード `ngn`) で示します。 - 取引金額は 500 NGN~100,000,000 NGN の範囲で入力してください。 ## Naira の銀行振込による支払いを受け付ける Naira の銀行振込を有効にするには、連携を以下のように更新してください。 - [Checkout セッション](https://docs.stripe.com/api/checkout/sessions.md) を作成する際に、`ng_bank_transfer` を `payment_method_types` リストに追加します。 - すべての `line_items` が `ngn` 通貨を使用していることを確認します。 #### Stripe がオンラインで提供するページ ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=ngn" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=ng_bank_transfer" \ --data-urlencode "success_url=https://example.com/success" ``` #### 完全埋め込みページ ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][currency]=ngn" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d "payment_method_types[0]=card" \ -d "payment_method_types[1]=ng_bank_transfer" \ --data-urlencode "return_url=https://example.com/return" \ -d ui_mode=embedded_page ``` ## 実装内容をテストする Checkout の実装内容をテストする際は、支払い方法として**ナイジェリアの支払い方法**を選択し、**支払う**をクリックします。 # ダイレクト API > This is a ダイレクト API for when payment-ui is direct-api. View the full page at https://docs.stripe.com/payments/ng-bank-transfer/accept-a-payment?payment-ui=direct-api. ナイラ建ての銀行振込を導入すると、ナイジェリアの顧客は現地の銀行振込で支払えるようになります。 Stripe のマーチャントオブレコード・サービスプロバイダーは、現地での銀行振込 (現地では「送金」とも呼ばれる) 用のリダイレクトベースの決済フローを提供しています。顧客が支払いを行うと、Stripe は顧客を地域のマーチャントオブレコード・サービスプロバイダーの決済フローにリダイレクトして、そのフローで支払いを認証してオーソリされるようにします。顧客が支払いをオーソリすると、Stripe は顧客を貴社のサイトにリダイレクトして戻します。 [Payment Intents API](https://docs.stripe.com/payments/payment-intents.md) を使用して、ナイジェリアの顧客から現地での銀行振込による支払いを受け付けます。 ## Stripe を設定する [サーバー側] まず、Stripe アカウントが必要です。[今すぐご登録ください](https://dashboard.stripe.com/register)。 アプリケーションから Stripe API にアクセスするには、Stripe の公式ライブラリを使用してください。 #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## PaymentIntent を作成する [サーバー側] [PaymentIntent](https://docs.stripe.com/api/payment_intents/object.md) は、顧客から支払いを回収する意図を表すオブジェクトで、決済プロセスを追跡します。ナイジェリアの決済手段で支払いを受け付ける `PaymentIntent` を作成するには、以下を指定します。 - 回収する金額 - 通貨: `ngn` - [payment_method_types](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types) リストの `ng_bank_transfer`。 `PaymentIntent` を作成する際に渡す支払い方法タイプのリストを保持している場合は、それに `ng_bank_transfer` を追加します。 ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1000000 \ -d currency=ngn \ -d "payment_method_types[]=ng_bank_transfer" \ -d "payment_method_data[type]=ng_bank_transfer" ``` ### client secret を取得する PaymentIntent には、*client secret* (The client secret is a unique key returned from Stripe as part of a PaymentIntent. This key lets the client access important fields from the PaymentIntent (status, amount, currency) while hiding sensitive ones (metadata, customer)) が含まれています。これは、支払いプロセスを安全に完了するためにクライアント側で使用されます。client secret をクライアント側に渡す際は、いくつかの方法を使用できます。 #### 1 ページのアプリケーション ブラウザーの `fetch` 関数を使用して、サーバーのエンドポイントから client secret を取得します。この方法は、クライアント側が 1 ページのアプリケーションで、特に React などの最新のフロントエンドフレームワークで構築されている場合に最適です。client secret を処理するサーバーのエンドポイントを作成します。 #### Ruby ```ruby get '/secret' do intent = # ... Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end ``` その後、クライアント側で JavaScript を使用して client secret を取得します。 ```javascript (async () => { const response = await fetch('/secret'); const {client_secret: clientSecret} = await response.json(); // Render the form using the clientSecret })(); ``` #### サーバ側のレンダリング サーバーからクライアントに client secret を渡します。この方法は、アプリケーションがブラウザーへの送信前に静的なコンテンツをサーバーで生成する場合に最適です。 決済フォームに [client_secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) を追加します。サーバー側のコードで、PaymentIntent から client secret を取得します。 #### Ruby ```erb
``` ```ruby get '/checkout' do @intent = # ... Fetch or create the PaymentIntent erb :checkout end ``` ## 現地のサービスプロバイダーにリダイレクトする [クライアント側] 顧客が Naira bank transfer での支払いをクリックしたときに、Stripe.js を使用してその支払いを Stripe に送信します。[Stripe.js](https://docs.stripe.com/payments/elements.md) は、決済フローを構築するための基本的な JavaScript ライブラリです。このライブラリにより、以下で説明するリダイレクトなどの複雑な処理が自動的に行われ、他の決済手段にも対応できるように実装を拡張できます。Stripe.js スクリプトを決済ページに含めるには、HTML ファイルの `head` にこのスクリプトを追加します。 ```html Checkout ``` 決済ページで以下の JavaScript を使用して、Stripe.js のインスタンスを作成します。 ```javascript // Set your publishable key. Remember to change this to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe('<>'); ``` `PaymentIntent` の [client secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret) を使用し、`stripe.confirmPayment` を呼び出して現地のマーチャントオブレコード・サービスプロバイダーのリダイレクトを処理します。`return_url` を追加して、支払いが完了した後に Stripe が顧客をリダイレクトする場所を指定します。 ```javascript const form = document.getElementById('payment-form'); form.addEventListener('submit', async function(event) { event.preventDefault(); // Set the clientSecret of the PaymentIntent const { error } = await stripe.confirmPayment({ clientSecret: clientSecret, confirmParams: { payment_method_data: { type: 'ng_bank_transfer', }, // Return URL where the customer should be redirected after the authorization return_url: `${window.location.href}`, }, }); if (error) { // Inform the customer that there was an error. const errorElement = document.getElementById('error-message'); errorElement.textContent = result.error.message; } }); ``` `return_url` は支払いの結果を表示するウェブサイト上のページに相当します。`PaymentIntent` の[ステータスを確認](https://docs.stripe.com/payments/payment-intents/verifying-status.md#checking-status)して、表示内容を決定できます。ステータスを確認するため、Stripe は以下の URL クエリパラメーターを含む `return_url` にリダイレクトします。`return_url` には自社のクエリパラメーターを追加することもできます。これらのパラメーターはリダイレクトプロセス全体にわたって存続します。 | パラメーター | 説明 | | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | | `payment_intent` | `PaymentIntent` の一意の識別子。 | | `payment_intent_client_secret` | `PaymentIntent` オブジェクトの [client secret](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-client_secret)。 | ## ナイラ建ての支払い方法との連携をテストする ナイラ建ての支払い方法のシステムをテストするには、テスト API キーを使用して、リダイレクトページを表示します。支払いに成功したケースをテストするには、リダイレクトページで支払いを認証します。PaymentIntent は、`requires_action` から `succeeded` に移行します。顧客が認証に失敗するケースをテストするには、テスト API キーを使用し、リダイレクトページを表示します。リダイレクトページで**テスト支払いの失敗**をクリックします。PaymentIntent は、`requires_action` から `requires_payment_method` に移行します。 ## Optional: 支払い後のイベントを処理する 支払いが完了すると、Stripe は [payment_intent.succeeded](https://docs.stripe.com/api/events/types.md#event_types-payment_intent.succeeded) イベントを送信します。ダッシュボード、カスタム *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests)、またはパートナーソリューションを使用してこれらのイベントを受信し、また、顧客への注文確認メールの送信、データベースでの売上の記録、配送ワークフローの開始などのアクションを実行します。 クライアントからのコールバックを待つのではなく、これらのイベントをリッスンします。クライアント側では、コールバックが実行される前に顧客がブラウザーのウィンドウを閉じたり、アプリを終了したりする可能性があります。また、悪意を持つクライアントがレスポンスを不正操作する恐れもあります。非同期型のイベントをリッスンするよう構築済みのシステムを設定することで、これ以降はより多くの決済手段を簡単に受け付けられるようになります。[サポートされているすべての決済手段の違い](https://stripe.com/payments/payment-methods-guide)をご確認ください。 - **ダッシュボードでイベントを手動で処理する** ダッシュボードを使用して、テスト決済を[ダッシュボードで表示](https://dashboard.stripe.com/test/payments)したり、メール領収書を送信したり、入金を処理したり、失敗した決済を再試行したりできます。 - **Custom Webhook を構築する** [Build a custom webhook](https://docs.stripe.com/webhooks/handling-payment-events.md#build-your-own-webhook) handler to listen for events and build custom asynchronous payment flows. Test and debug your webhook integration locally with the Stripe CLI. - **構築済みアプリを導入する** パートナーアプリケーションを統合することで、[自動化](https://stripe.partners/?f_category=automation)や[マーケティング/セールス](https://stripe.partners/?f_category=marketing-and-sales)などの一般的なビジネスイベントを処理します。