共同ブランドカードに関する法令遵守
共同ブランドカードに対して顧客による選択を必要とする EU の規制についてご紹介します。
この規制は私に適用されますか?
Regulation (EU) 2015/751 は、Cartes Bancaires を処理できる EEA 内のすべての企業に適用されます。 サインインして、このセクションに戻り、提携ブランドカードに対する規制が適用されるかどうかを確認してください。
適用対象
規制要件
Regulation (EU) 2015/751 では、欧州経済領域 (EEA) に所在する企業に対して、顧客が提携ブランドカードのブランドを選択できるようにすることを求めています (たとえば、Cartes Bancaires のカードは Visa とブランド提携しています)。このため、実際の業務では規制に関するガイダンスに従ってカード保有者が決済フォーム内で使用するカードブランドを選択できるようにする必要があります。
- 決済フォームに利用可能なカードネットワークを表示する: 利用可能なすべてのカードネットワークを、決済プロセス中に明確に特定できるようにする必要があります。ブランドロゴの視覚的品質、明瞭性、サイズが首尾一貫している必要があり、またカードネットワークを選択する方法をカード保有者に分かりやすく示す必要があります。
- カード保有者が使用するカードネットワークに従う: カード保有者が使用するカードネットワークを選択した場合、支払いの確定時や将来の使用に備えてカード詳細を保存する際は、それを使用する必要があります。カード保有者が選択を行っていない場合は、取引に使用するカードネットワークを選択できます。
- 使用するカードネットワークの更新を許可する: カード保有者が今後の使用に備えて保存される支払い方法の更新について提示し、支払い情報を更新する際に、使用するカードネットワークを変更できるオプションを含める必要があります。たとえば、保存済みの支払い方法を管理するカスタマーポータルを提供することなどができます。
規制が適用される状況
Cartes Bancaires の提携ブランドカードは、Stripe がサポートし、この規制に該当する唯一のカードです。このため、Regulation (EU) 2015/751 は、以下に該当するビジネスに適用されます。
- EEA 内に所在する
- Cartes Bancaires の処理が可能である
Connect ユーザー
Connect を導入している場合、取引のマーチャントオフレコードは、提携ブランド規制が適用されるかどうかの判断に Stripe が使用するビジネスです。 Connect の導入方法に応じて、これはプラットフォームまたは連結アカウントになります。
上記の条件を満たすビジネスは、Cartes Bancaires で処理できるすべての取引に対して、カードネットワークを選択できるように顧客に提示する必要があります。以下に該当する場合、取引は Cartes Bancaires の利用対象となります。
- ビジネスが Cartes Bancaires を処理できる
- 通貨が EUR である
- 支払い方法が提携ブランドの Cartes Bancaires カードである
テスト環境を使用する
テスト環境では Cartes Bancaires は常に有効化されています。そのため、Cartes Bancaires を有効にしていなくても、Stripe がオンラインで提供する UI にネットワークセレクターが表示されることがあります。これにより、Cartes Bancaires が有効化された場合に、Stripe がオンラインで提供する UI で提携ブランドのカードがどのように処理されるかをプレビューできます。
導入ガイド
以下のガイドに従って設定した場合に上記の適用条件に合致していると、Checkout、Payment Links、Elements などの Stripe がオンラインで提供する UI にネットワークセレクターが自動的に表示されます。
その他のシステムについては、システムが規制要件に準拠していることを確認する責任のすべてをお客様が負うことになります。
カスタムの決済フローシステムを管理し、未加工のカードデータの API へのアクセスが可能である場合、Stripe はそのシステムがカードブランドの選択の規制に準拠できるようにするためのツールを提供します。
Stripe.js で stripe.
メソッドを使用すると、顧客のカード番号で利用できるネットワークを特定し、ネットワークの設定制御をその顧客に表示する必要があるかどうかを判定できます。
Stripe.js を読み込んで初期化する
Stripe.js がウェブサイトにインストールされていることを確認してください。規制を確実に順守するため、Stripe.js は必ず js.stripe.com から読み込んでください。スクリプトをバンドルに含めたり、地震でほすとしたりしないでください。
<!-- Somewhere in your site's <head> --> <script src="https://js.stripe.com/v3"></script>
const stripe = Stripe("pk_test_TYooMQauvdEDq54NiTphI7jx");
Stripe のシンラッパーパッケージ、 @stripe/stripe-js をインポートして、決済フローに Stripe.js を動的に読み込むこともできます。
import {loadStripe} from '@stripe/stripe-js/pure'; // Stripe.js won't load until `loadStripe` is called const stripe = await loadStripe('pk_test_TYooMQauvdEDq54NiTphI7jx');
カード番号で利用可能なネットワークを取得する
顧客がカード情報を入力したときに、現在のカード番号イベントハンドラーを更新して、 stripe.
を呼び出します。このメソッドは、単一プロパティ networks
のオブジェクトを返します。このプロパティの値は、null
またはネットワークタイプの配列のいずれかになります。
顧客がカード番号を 8 桁以上入力すると、メソッドはそのカードで利用できるネットワークを返す準備を開始します。
const {networks} = await stripe.retrieveCardNetworks(rawCardNumber)
顧客にネットワークの優先選択肢を表示する
stripe.
で利用可能なネットワークを特定した後に、顧客が優先するカードブランドを選択するためのセレクターを表示する必要があります。認識されたネットワークが 1 つのみの場合、ネットワークセレクターを表示する必要はなく、代わりに認識されたそのカードブランドを表示できます。複数のネットワークが認識された場合は、顧客にセレクターを表示して、優先するカードブランドを選択できるようにします。この UI をどのように実装するかはお客様に任されますが、すべてのネットワークオプションの表示の優先度を同等にすることが重要です。
注
現在、カードブランドのアイコンを表示しているときは、多くの場合、数字が 1 ~ 2 桁入力されるとすぐにブランドを特定できます。カードブランドの選択に対応するため、stripe.
からのレスポンスを受信するまで認識されたブランドの表示を遅らせて、この動作を変更してください。
この動作を変更することで、Visa をすぐに表示して、共同ブランドネットワークが検出された後に最終的にトワークの選択肢を表示するような状況を回避できます。
ネットワークの優先設定を Stripe API に渡す
決済フローを更新して、顧客のネットワーク設定も渡されるようにします。
PaymentMethods の場合は、ネットワークの優先設定を card[networks][preferred]
パラメーターに渡します。
await stripe.paymentMethods.create({ type: 'card', card: { // ...other card data networks: { preferred: networkSelection }, });
Tokens の場合は、ネットワークの優先設定を card[networks][preferred]
パラメーターに渡します。
await stripe.tokens.create({ card: { // ...other card data networks: { preferred: networkSelection }, });
PaymentIntents または SetupIntents の場合は、ネットワークの優先設定を payment_
パラメーターに渡します。
await stripe.paymentIntent.create({ // ...other Payment Intent data payment_method_data: { type: 'card', card: { // ...other card data networks: { preferred: networkSelection }, } }); await stripe.paymentIntent.update({ // ...other Payment Intent data payment_method_data: { type: 'card', card: { // ...other card data networks: { preferred: networkSelection }, } }); await stripe.paymentIntent.confirm({ // ...other Payment Intent data payment_method_data: { type: 'card', card: { // ...other card data networks: { preferred: networkSelection }, } }); await stripe.setupIntent.create({ // ...other Setup Intent data payment_method_data: { type: 'card', card: { // ...other card data networks: { preferred: networkSelection }, } }); await stripe.setupIntent.update({ // ...other Setup Intent data payment_method_data: { type: 'card', card: { // ...other card data networks: { preferred: networkSelection }, } }); await stripe.setupIntent.confirm({ // ...other Setup Intent data payment_method_data: { type: 'card', card: { // ...other card data networks: { preferred: networkSelection }, } });
注
Sources API は非推奨になり、顧客の優先設定の保存に対応しません。EU の要件に準拠するためには、Sources の実装を Payment Methods API を使用するようにアップグレードしてください。
支払いの処理に使用されるネットワークを識別する
正常に実行された支払いに関連付けられている Charge オブジェクトには、支払いが処理されたカードネットワークを示す network
フィールドが存在します。
{ "id": "ch_1Ff52K2eZvKYlo2CWe10i0s7", "object": "charge", ... "payment_method_details": { "card": { "brand": "visa", ... "network": "cartes_bancaires", }, "type": "card" } }
テスト
組み込みのテストには、以下の共同ブランドカードを使用できます。