口座を収集して、データを活用する商品を構築する
ユーザーの口座を収集して、商品を構築するために残高、所有権の詳細、取引などのデータを使用する方法をご紹介します。
Financial Connections では、ユーザーは、外部の金融口座を貴社に関連付けることで財務データを安全に共有できます。Financial Connections を使用すると、トークン化された口座番号と金融番号、口座残高、口座所有者情報、取引履歴など、ユーザーに許可された財務データにアクセスできます。
以下は、Financial Connections をユーザーの製品の操作性の改善に使用する一般的な例です。
- 銀行口座名義人の名前や住所などの口座の所有権情報を確認することで、顧客または企業のアカウント登録時の不正利用を減らします。
- 取引データを使用して、ユーザーが経費の追跡、請求書の処理、財務の管理、財務状況の制御を実行できるようにします。
- リスク評価を迅速化して、取引と残高のデータを使用するクレジットやその他の金融サービスへのアクセスを向上させることができます。
ユーザーがより少ないステップで自身のアカウントを Link に関連付け、Stripe のすべての加盟店に銀行口座の詳細を保存して、素早く再利用できるようにします。
Stripe を設定するサーバ側クライアント側
サーバ側
この組み込みには、Stripe API と通信するエンドポイントがサーバ上に必要です。Stripe の公式ライブラリを使用して、サーバから Stripe API にアクセスします。
クライアント側
React Native SDK はオープンソースであり、詳細なドキュメントが提供されています。内部では、ネイティブの iOS および Android の SDK を使用します。Stripe の React Native SDK をインストールするには、プロジェクトのディレクトリーで (使用するパッケージマネージャーによって異なる) 次のいずれかのコマンドを実行します。
次に、その他の必要な依存関係をインストールします。
- iOS の場合は、ios ディレクトリーに移動して
pod install
を実行し、必要なネイティブ依存関係もインストールします。 - Android の場合は、依存関係をインストールする必要はありません。
Stripe の初期化
React Native アプリで Stripe を初期化するには、決済画面を StripeProvider
コンポーネントでラップするか、initStripe
初期化メソッドを使用します。publishableKey
の API 公開可能キーのみが必要です。次の例は、StripeProvider
コンポーネントを使用して Stripe を初期化する方法を示しています。
import { StripeProvider } from '@stripe/stripe-react-native'; function App() { const [publishableKey, setPublishableKey] = useState(''); const fetchPublishableKey = async () => { const key = await fetchKey(); // fetch key from your server here setPublishableKey(key); }; useEffect(() => { fetchPublishableKey(); }, []); return ( <StripeProvider publishableKey={publishableKey} merchantIdentifier="merchant.identifier" // required for Apple Pay urlScheme="your-url-scheme" // required for 3D Secure and bank redirects > // Your app code here </StripeProvider> ); }
口座名義人を作成または取得するサーバー側
ユーザーが貴社でアカウントを作成するときに、Customer (顧客) オブジェクト を作成します。メールアドレスを提供することで、 Financial Connections は Link のリピーターユーザーに効率的なユーザーインターフェイスを動的に表示し、認証フローを最適化できます。
Financial Connections Session を作成するサーバー側
注
このエンドポイントの実行可能な実装が Glitch で提供されており、簡単なテストに利用できます。
Financial Connections を使用してユーザーの銀行口座からデータを取得するには、ユーザーが認証フローでその口座を認証する必要があります。
ユーザーは、口座をサイトまたはアプリケーションに関連付けるときに認証フローを開始します。ユーザーが口座を関連付けられるようにするボタン (銀行口座を関連付けるなど) またはリンクをサイトやアプリケーションに挿入します。
/v1/financial_
に送信することで、Financial Connections Session を作成します。
account_
を Customer のholder[customer] id
に設定します。- ユースケースの実施に必要なデータを含めてデータの
permissions
パラメーターを設定します。 - (Optional) set the
prefetch
parameter for retrieving the data on account creation.
permissions パラメーターは、アクセスできる口座データを管理します。少なくとも 1 つの権限をリクエストする必要があります。認証フローが完了すると、ユーザーはアクセスをリクエストしたデータを確認し、そのデータの共有に同意することができます。
ユースケースの実施に必要なデータを検討し、必要なデータのみにアクセスする権限をリクエストします。アプリケーションの範囲を大きく超える権限をリクエストすると、データの使用方法におけるユーザーの信頼を失う可能性があります。たとえば、個人向けの財務管理アプリケーションや融資商品を構築する場合は、transactions
データをリクエストします。アカウントの乗っ取りなどの不正利用を減らす場合は、ownership
の詳細をリクエストします。
ユーザーがアカウントを認証した後に権限を拡張するには、新しい Financial Connections Session を作成し、permissions
パラメーターに新しい値を指定する必要があります。ユーザーは認証フローを再度完了する必要があり、そこでアクセスの権限をリクエストした追加データを確認し、データの共有に同意します。
オプションの prefetch パラメーター は、ユーザーが口座を連結した直後に取得するデータを制御します。特定の種類のデータが常に必要である場合は、このオプションを使用します。これにより、データの更新を開始するために追加の API コールを実行する必要がなくなります。
ACH ダイレクトデビットによる決済を受け付けるためのオプションを保持するには、payment_
権限をリクエストします。
Financial Connections アカウントを収集するクライアント側
Stripe の React Native SDK から collectFinancialConnectionsAccounts
関数をインポートします。
import {collectFinancialConnectionsAccounts} from '@stripe/stripe-react-native';
collectFinancialConnectionsAccounts
を使用し、上記の client_
を渡して銀行口座を収集し、結果を適切に処理します。
// Assume you have a <Button /> to collect payout accounts, whose onPress is handleCollectPress const handleCollectPress = async () => { // Fetch the clientSecret you created above and pass it to collectFinancialConnectionsAccounts const {session, error} = await collectFinancialConnectionsAccounts( clientSecret, ); if (error) { Alert.alert(`Error code: ${error.code}`, error.message); } else { Alert.alert('Success'); console.log( 'Successfully obtained session: ', JSON.stringify(session, null, 2), ); } };
collectFinancialConnectionsAccounts
は Promise
を返します。ユーザーがモーダルフローを完了すると、Promise
が以下のいずれかで解決されます。
- ユーザーがアカウントを正常にリンクできる場合、完了した Financial Connections Session を表す
session
。このsession
には、連結アカウントのリストが入ったaccounts
配列が含まれています。 - セッションが失敗した場合またはキャンセルされた場合は
error
。
デフォルトでは、Stripe は ACH が有効なアカウントへの入金のみに対応できるため、連結アカウントの認証フローでは、当座預金口座や普通預金口座などの口座タイプのみを追加できます。
戻り先 URL を設定する (iOS のみ)クライアント側
顧客が Safari や銀行アプリで認証するなどしてアプリを終了した際に、後で自動的にアプリに戻るための方法を提供します。多くの支払い方法タイプでは戻り先 URL が必須であるため、貴社で支払い方法を有効にしていても、URL を指定していない場合、Stripe ではユーザーにその支払い方法を提示することはできません。
To provide a return URL:
- Register a custom URL. Universal links aren’t supported.
- Configure your custom URL.
- Set up your root component to forward the URL to the Stripe SDK as shown below.
注
Expo を使用している場合は、app.
ファイルでスキームを設定します。
import React, { useEffect, useCallback } from 'react'; import { Linking } from 'react-native'; import { useStripe } from '@stripe/stripe-react-native'; export default function MyApp() { const { handleURLCallback } = useStripe(); const handleDeepLink = useCallback( async (url: string | null) => { if (url) { const stripeHandled = await handleURLCallback(url); if (stripeHandled) { // This was a Stripe URL - you can return or add extra handling here as you see fit } else { // This was NOT a Stripe URL – handle as you normally would } } }, [handleURLCallback] ); useEffect(() => { const getUrlAsync = async () => { const initialUrl = await Linking.getInitialURL(); handleDeepLink(initialUrl); }; getUrlAsync(); const deepLinkListener = Linking.addEventListener( 'url', (event: { url: string }) => { handleDeepLink(event.url); } ); return () => deepLinkListener.remove(); }, [handleDeepLink]); return ( <View> <AwesomeAppComponent /> </View> ); }