Boleto 支払い
ブラジルで一般的な支払い方法である Boleto を受け付ける方法をご紹介します。
ブラジルの Stripe ユーザーは、Payment Intents API および Payment Methods API を使用して、ブラジルの顧客から Boleto での支払いを受け付けることができます。顧客は ATM、銀行、オンラインバンクポータル、または公認の代理店のいずれかで、生成された番号が記載された Boleto の支払い票を使用して支払います。
PaymentIntent を作成するサーバ側
Stripe は PaymentIntent オブジェクトを使用して、顧客から支払いを回収するお客様の意図を示し、Boleto 支払い票の作成から支払いの完了までの状態の変化を追跡します。
金額と brl
通貨 (BoletoBoleto は他の通貨には対応していません) を指定して、サーバー上に PaymentIntent を作成します。Payment Intents API を使用した組み込みをすでにお持ちの場合には、boleto
を PaymentIntent
の決済手段タイプのリストに追加します。
返される 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/basil/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 | サンドボックスで、 |
有効期限とキャンセル
Boleto バウチャーは expires_
UNIX タイムスタンプを過ぎると期限切れになり、顧客は有効期限が切れた Boleto バウチャーの支払いはできません。有効期限前に Boleto バウチャーをキャンセルすることはできません。
Boleto の有効期限が切れると、PaymentIntent のステータスは requires_
に変わります。この時点では、別の支払い方法を指定して PaymentIntent を確定するか、キャンセルすることができます。