Boleto 支払い
ブラジルで一般的な支払い方法である Boleto を受け付ける方法をご紹介します。
ブラジルの Stripe ユーザーは、Payment Intents API および Payment Methods API を使用して、ブラジルの顧客から Boleto での支払いを受け付けることができます。顧客は ATM、銀行、オンラインバンクポータル、または公認の代理店のいずれかで、生成された番号が記載された Boleto の支払い票を使用して支払います。
PaymentIntent を作成するサーバ側
Stripe は PaymentIntent オブジェクトを使用して、顧客から支払いを回収するお客様の意図を示し、Boleto 支払い票の作成から支払いの完了までの状態の変化を追跡します。
サーバーで金額とbrl通貨を使用して PaymentIntent を作成します (Boleto は他の通貨をサポートしていません)。すでにPayment Intents APIを使用した統合がある場合は、PaymentIntentの決済手段タイプのリストにboletoを追加します。
返される PaymentIntent には client secret が含まれ、これを使用して安全に決済プロセスを完了しなければなりません。後のステップで使用できるように、client secret をクライアントに送り返します。
その他の支払い方法オプション
PaymentIntent の決済手段オプションでオプションの expires_ パラメータを指定すると、Boleto 支払い票の有効期限が切れるまでの暦日数を設定できます。たとえば、月曜日に Boleto の支払い票を作成し、expires_ を 2 に設定した場合、Boleto の支払い票は水曜日のアメリカ/サンパウロ時間 (UTC-3) の 23:59 に有効期限が切れます。0 に設定すると、その日の終わりに Boleto の支払い票の有効期限が切れます。expires_ パラメーターは 0 日から 60 日までの範囲で設定できます。既定値は 3 日です。アカウントのデフォルトの有効期限は、決済手段の設定でカスタマイズできます
支払い方法の詳細を収集するクライアント側
クライアントで支払いフォームを作成し、必要な請求先情報を顧客から収集します。
| フィールド | 値 |
|---|---|
name | 顧客の氏名。 |
email | 顧客のメールアドレス。 |
tax_ | 顧客の CPF (個人の場合) または CNPJ (ビジネスの場合)。CPF は 11 桁で、000. または 00000000000 の形式にする必要があります。CNPJ は 14 桁で、00. または 00000000000000 の形式にする必要があります。 |
address | 顧客の住所の町名と番地。 |
city | 顧客の住所の市区町村。 |
state | 顧客住所のブラジルの 2 文字の州 コード (ISO_3166-2:BR)。 |
postal_ | 顧客住所の郵便番号。郵便番号の形式は、XXXXX-XXX または XXXXXXXX にする必要があります。 |
メモ
name、address、city のフィールドには、基本ラテン文字 (ASCII) ユニコードブロックの英数字を 1 文字以上含める必要があります。
<form id="payment-form"> <div class="form-row"> <label for="name"> Name </label> <input id="name" name="name" required> </div> <div class="form-row"> <label for="tax_id"> CPF/CNPJ </label> <input id="tax_id" name="tax_id" required> </div> <div class="form-row"> <label for="email"> Email </label> <input id="email" name="email" required> </div> <div class="form-row"> <label for="address"> Address </label> <input id="address" name="address" required> </div> <div class="form-row"> <label for="city"> City </label> <input id="city" name="city" required> </div> <div class="form-row"> <label for="state"> State </label> <input id="state" name="state" required> </div> <div class="form-row"> <label for="postal_code"> Postal Code </label> <input id="postal_code" name="postal_code" required> </div> <!-- Used to display form errors. --> <div id="error-message" role="alert"></div> <button id="submit-button">Pay with Boleto</button> </form>
Stripe に支払いを送信するクライアント側
顧客が Boleto による決済をクリックしたら、Stripe.js を使用してその支払いを Stripe に送信します。Stripe.js は、支払いフローを構築するための Stripe の基本的な JavaScript ライブラリです。
Stripe.js スクリプトを決済ページに含めるには、このスクリプトを HTML ファイルの head に追加します。
<head> <title>Checkout</title> <script src="https://js.stripe.com/clover/stripe.js"></script> </head>
決済ページで以下の JavaScript を使用して、Stripe.js のインスタンスを作成します。
// Set your publishable key. Remember to switch to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe();'pk_test_TYooMQauvdEDq54NiTphI7jx'
stripe.confirmBoletoPayment と、ステップ 2 で作成した PaymentIntent オブジェクトの client secret を使用して、顧客の請求先情報を送信します。
確定されると、Stripe はモーダルを自動的に開き、顧客に Boleto の取引詳細を表示します。
var form = document.getElementById('payment-form'); form.addEventListener('submit', async (event) => { event.preventDefault(); const result = await stripe.confirmBoletoPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { payment_method: { boleto: { tax_id: document.getElementById('tax_id').value, }, billing_details: { name: document.getElementById('name').value, email: document.getElementById('email').value, address: { line1: document.getElementById('address').value, city: document.getElementById('city').value, state: document.getElementById('state').value, postal_code: document.getElementById('postal_code').value, country: 'BR', }, }, }, } ); // Stripe.js will open a modal to display the Boleto voucher to your customer // This async function finishes when the customer closes the modal if (result.error) { // Display error to your customer const errorMsg = document.getElementById('error-message'); errorMsg.innerText = result.error.message; } });
メモ
stripe. の完了には数秒かかる場合があります。この間、フォームが再送信されないように無効化し、スピナーのような待機中のインジケータを表示します。エラーが発生した場合は、それを顧客に表示し、フォームを再度有効化し、待機中のインジケータを非表示にします。
Boleto の取引の詳細が正常に作成されると、返された PaymentIntent の status プロパティの値が requires_ になります。ダッシュボードまたはオブジェクトのステータスプロパティを調べて、PaymentIntent のステータスを確認します。Boleto の取引の詳細が正常に作成されなかった場合は、返された error を調べて原因を特定します (メールアドレス形式が無効であるなど)。
オプション: 顧客に取引の詳細へのリンクをメールで送信する
Stripe は、Boleto の支払い票が正常に作成されると、payment_intent.requires_action イベントを送信します。顧客に取引の詳細へのリンクをメールで送信する必要がある場合は、payment_intent.next_action.boleto_display_details の hosted_ に記載されています。
オプション: 取引の詳細をカスタマイズする
Stripe では、ブランディング設定ページで、顧客に表示される UI をカスタマイズできます。
取引の詳細には、以下のブランド設定を適用できます。
- アイコン: ブランド画像と公開ビジネス名
- アクセント— 番号コピーボタンのカラーとして使用されます
- ブランドカラー: 背景色として使用されます
支払い後のイベントを処理するサーバ側
Boleto による支払いは非同期型であるため、売上はすぐには利用可能になりません。決済後、顧客が直ちに Boleto の支払いを行わないことがあります。
Stripe は、支払われた Boleto の支払い票ごとに、翌営業日 (ブラジルの祝日を除く月曜日から金曜日) に payment_intent.succeeded イベントを送信します。ダッシュボードまたはカスタム webhook を使用して、これらのイベントを受信し、アクションを実行します (顧客への注文確認メールの送信、データベースへの販売の記録、配送ワークフローの開始、など)。
Boleto が有効期限日のアメリカ/サンパウロ時間の 23:59 (UTC-3) までに支払われなかった場合、Stripe は 1 営業日後に payment_intent.payment_failed イベントを送信します。たとえば、Boleto の有効期限が木曜日に切れた場合、イベントは金曜日に送信されます。Boleto の有効期限が金曜日に切れた場合、イベントは次の月曜日に送信されます。
| イベント | 説明 | 次のステップ |
|---|---|---|
payment_ | 顧客が有効期限前に Boleto の支払いを行いました。 | 顧客が購入した商品またはサービスのフルフィルメントを行います。 |
payment_ | 顧客が有効期限までに Boleto の支払いを行いませんでした。 | 顧客にメールまたはプッシュ通知で連絡し、別の決済手段をリクエストします。 |
組み込みをテストする
サンドボックスで、stripe.confirmBoletoPayment を呼び出すときに payment_ に次の値を設定して、さまざまなシナリオをテストします。
| メールアドレス | 説明 |
|---|---|
| 顧客が 3 分後に支払い、約 3 分後に 例: fulaninho@example.com |
| 顧客が即座に支払い、数秒以内に 例: succeed_immediately@example.com |
| 顧客が支払う前に期限切れになり、数秒以内に 決済手段オプションで 例: expire_immediately@example.com |
| 顧客が支払う前に期限切れになり、約 3 分後に 決済手段オプションで 例: expire_with_delay@example.com |
| 成功することなく、決済手段オプションで指定されたパラメータに基づき、next_action.boleto_display_details の 例: fill_never@example.com |
| 納税者番号 | 説明 |
|---|---|
CPF CNPJ | サンドボックスで、 |
オプション独自に取引の詳細ページを構築するクライアント側
confirmBoletoPayment で Boleto の取引詳細の表示を処理するには、Stripe.js を利用することをお勧めします。ただし、取引詳細を手動で顧客に表示することもできます。
ステップ 4 で stripe.confirmBoletoPayment を呼び出す際に handleActions: false を指定して、顧客に Boleto の詳細を表示するための次のアクションをお客様が処理するように指定できます。
var form = document.getElementById('payment-form'); form.addEventListener('submit', async (event) => { event.preventDefault(); const result = await stripe.confirmBoletoPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { payment_method: { boleto: { tax_id: document.getElementById('tax_id').value, }, billing_details: { name: document.getElementById('name').value, email: document.getElementById('email').value, address: { line1: document.getElementById('address').value, city: document.getElementById('city').value, state: document.getElementById('state').value, postal_code: document.getElementById('postal_code').value, country: 'BR', }, }, }, }, {handleActions: false}, ); if (result.error) { // Display error to your customer const errorMsg = document.getElementById('error-message'); errorMsg.innerText = result.error.message; } else { // An Boleto voucher was successfully created const amount = result.paymentIntent.amount; const currency = result.paymentIntent.currency; const details = result.paymentIntent.next_action.boleto_display_details; const number = details.number; const expires_at = details.expires_at; // Handle the next action by displaying the Boleto details to your customer // You can also use the generated hosted voucher const hosted_voucher_url = details.hosted_voucher_url; } });
少なくとも、以下を含めます。
| 詳細 | 説明 |
|---|---|
| 番号 | Boleto の番号は、顧客が簡単にクリップボードにコピーできるようにして表示します。next_action.boleto_display_details.number にある PaymentIntent オブジェクトの番号を見つけます。 |
| 有効期限 | Boleto 支払い票の有効期限を表示します。next_action.boleto_display_details.expires_at の PaymentIntent で Boleto 支払い票が期限切れになる UNIX タイムスタンプを見つけます。 |
| PDF をダウンロードする | ダウンロードボタンを表示して、顧客が Boleto の PDF をダウンロードできるようにします。顧客が Boleto の取引詳細の PDF をダウンロードできる場所は、next_action.boleto_display_details.pdf の PaymentIntent にあります。 |
オプションサーバ側で Payment Intent を確定するサーバ側
confirmBoletoPayment で Boleto の Payment Intent を確定するには、Stripe.js を使用することをお勧めします。Stripe.js を使用することで、組み込みを他の支払い方法に容易に拡張できます。ただし、サーバー側で以下のようにして Payment Intent を確定することもできます。
オプション支払い手順メールを送信する
ダッシュボードのメール設定ページで Boleto 決済の手順のメールを有効にできます。有効にすると、Stripe は、PaymentIntent の確定時に支払い手順のメールを送信します。メールには、Boleto 番号と Stripe の店舗支払いページへのリンクが含まれます。
メモ
テスト環境では、手順メールは Stripe アカウントに関連付けられたメールアドレスにのみ送信されます。
有効期限とキャンセル
Boleto バウチャーは expires_ UNIX タイムスタンプを過ぎると期限切れになり、顧客は有効期限が切れた Boleto バウチャーの支払いはできません。有効期限前に Boleto バウチャーをキャンセルすることはできません。
Boleto の有効期限が切れると、PaymentIntent のステータスは requires_ に変わります。この時点では、別の支払い方法を指定して PaymentIntent を確定するか、キャンセルすることができます。