コンテンツにスキップ
アカウントを作成
または
サインイン
Stripe ドキュメントのロゴ
/
AI に質問する
アカウントを作成
サインイン
始める
支払い
売上
プラットフォームおよびマーケットプレイス
資金管理
開発者向けのツール
概要
導入を開始
商品
グローバル入金
Capital
カードを発行する
    概要
    Issuing の仕組み
    利用可能な国
    不正使用に対応する
    カード
    カードタイプを選択する
    バーチャルカード
    物理カード
    カードを管理する
    デジタルウォレット
    再発行カード
    カードプログラム
    プログラム管理
    代行業者専用の Issuing
    カードプログラムをカスタマイズする
    カードプログラムに資金を追加する
    Credit Consumer Issuing
    管理
    支出管理
    高度な不正利用防止ツール
    3DS
    不正利用に関するチャレンジ
    リアルタイムのオーソリ
    PIN 管理
    Issuing Elements
    トークン管理
    資金調達
    残高
    Stripe の実装に後から資金を追加する
    動的リザーブの実装に後から資金を追加する
    購入
    オーソリ
    取引
    不審請求の申請
    テスト
    加盟店カテゴリ
    ATM の利用
    Enriched merchant data
    Connect 付きの Issuing
    Issuing と Connect の実装を設定
    利用規約への同意を更新
    Connect の資金
    連結アカウント、カード保有者、カード
    非アクティブな連結アカウントの登録解除
    埋め込みカード管理 UI
    貸方
    概要
    連結アカウントを設定する
    クレジット規約を管理する
    その他の与信判断を報告して AAN を管理
    与信判断に必要な規制に関するデータの報告
    アカウントの債務を管理する
    クレジット連携のテスト
    追加情報
    カード保有者タイプを選択する
    Issuing と Treasury の顧客サポート
    Issuing ウォッチリスト
    マーケティングのガイドライン (ヨーロッパ/イギリス)
    製品のマーケティングとコンプライアンスのガイドライン (アメリカ)
Treasury
資金の管理
ホーム資金管理Issuing cards

注

このページはまだ日本語ではご利用いただけません。より多くの言語で文書が閲覧できるように現在取り組んでいます。準備が整い次第、翻訳版を提供いたしますので、もう少しお待ちください。

Issuing でデジタルウォレットを使用する

Issuing を使用してデジタルウォレットにカードを追加する方法をご紹介します。

ページをコピー

Issuing を使用すると、ユーザーは Apple Pay や Google Pay などのデジタルウォレットにカードを追加できます。Stripe は、以下の 2 つの方法でカードの追加をサポートしています。

  1. 手動のプロビジョニング: カード保有者は、スマホのウォレットアプリケーションにカード情報を入力して、デジタルウォレットに追加します。
  2. プッシュプロビジョニング: モバイルアプリケーションでは、ユーザーがアプリから直接、デジタルウォレットにカードを追加できます。

カードがデジタルウォレットに追加されると、そのカードのトークン化された表記が作成されます。ネットワークトークンは、カードとは別に管理されます。ネットワークトークンとその仕組みについて、詳細はトークン管理をご覧ください。

手動のプロビジョニング

カード保有者は、手動のプロビジョニングを使用して、Stripe Issuing のバーチャルカードと物理カードを Apple Pay、Google Pay、Samsung Pay のウォレットに追加できます。

これを行うには、カード保有者はスマートフォンでウォレットアプリを開いてカード詳細を入力します。Stripe は、カードに関連付けられたカード保有者の phone_number または email に 6 桁の確認コードを送信します。

カードのプロビジョニング時にカード保有者にいずれのフィールドも設定されていない場合は、「card not supported (カードがサポートされていません)」というエラーが表示されます。

手動のプロビジョニングの実装にコードは必要ありませんが、設定のプロセスは、デジタルウォレットのプロバイダーと本拠を置く国によって異なることがあります。

アメリカ

Apple Pay ウォレットには、Apple からの承認が必要です。アカウントの Apple Pay のステータスを確認するには、デジタルウォレット設定を確認します。Apple Pay のご利用前に、お申し込みの提出が必要になる場合があります。

Google Pay と Samsung Pay では、これ以外のステップは必要ありません。

ヨーロッパ/イギリス

デジタルウォレットを導入するには、Stripe パートナーシップチームからの追加承認が必要です。詳細については、アカウント代表者に連絡するか、Stripe にお問い合わせください。

Apple Pay ウォレットには、追加の承認が必要です。アカウントの Apple Pay のステータスを確認するには、デジタルウォレット設定を確認します。Apple Pay のご利用前に、申請書の提出が必要になる場合があります。

プッシュプロビジョニング

プッシュプロビジョニングでは、カード保有者が下記のように「ウォレットに追加する」ボタンを押すことにより、アプリを使用して Stripe Issuing カードをデジタルウォレットに追加できます。

アメリカでプッシュプロビジョニングを有効にするには、ユーザーは最初に手動のプロビジョニング手順を完了する必要があります。プッシュプロビジョニングでは、手動でのプロビジョニングの承認に加え、Stripe SDK を導入しなければなりません。

そのためには、プッシュプロビジョニングのサポートを希望するプラットフォームごとに、Stripe の承認プロセスと、Stripe SDK によるコード実装の両方が必要になります。プラットフォームでの承認は、その連結アカウントのすべてに段階的に適用されます。

Samsung Pay のプッシュプロビジョニングは、Stripe の SDK ではサポートされていません。

「Add to Apple Wallet」という黒色の UI ボタン。テキストの左側には Apple Wallet ロゴイメージがあります。青、黄、緑、赤のカードが少しずつずれて重なっているグレーのウォレットです。
「Google ウォレットに追加」という黒い UI ボタン。テキストの左側に Google ウォレットのロゴ画像があります。

アクセスをリクエスト

iOS のアクセスをリクエストする

プッシュプロビジョニングには、com.apple.developer.payment-pass-provisioning と呼ばれる Apple からの特別なエンタイトルメントが必要です。これは support-issuing@stripe.com にメールを送信して、リクエストすることができます。メールには、以下の内容を含めてください。

  • カードネットワーク: Visa または MasterCard。
  • カード名: ウォレットに表示されるカードの名前です。
  • アプリ名: アプリの名前。
  • 開発チーム ID: メンバーシップの Apple Developer アカウントに記載されています。
  • ADAM ID: アプリの一意の数値 ID。App Store Connect またはアプリへの App Store リンク (https://apps.apple.com/app/id123456789 など) に記載されています。
  • バンドル ID: アプリのバンドル ID。App Store Connect (com.example.yourapp など) にも記載されています。

Android のアクセスをリクエストする

Stripe はプッシュプロビジョニング用にプライベート Google ライブラリで SDK ラッパーを提供しています。プッシュプロビジョニングを使用して Google Pay Store でアプリを配信するには、このライブラリへのアクセスをリクエストする必要があります。

  • Google Pay へのアクセスをリクエストする
  • Google の TapAndPay プライベート SDK をダウンロードする (現在互換性のあるバージョンは 17.1.2)
  • アプリのプッシュプロビジョニング API へのアクセスをリクエストします。Google の許可リストに追加されるアプリケーション ID を指定する必要があります。このプロセスの詳細については、Google のドキュメントをご覧ください。
  • 同じアプリケーション ID、アプリ名、カードネットワーク、カード名を support-issuing@stripe.com に提出します。

アプリを設定する
クライアント側

React Native SDK はオープンソースであり、詳細なドキュメントが提供されています。内部では、ネイティブの iOS および Android の SDK を使用します。Stripe の React Native SDK をインストールするには、プロジェクトのディレクトリーで (使用するパッケージマネージャーによって異なる) 次のいずれかのコマンドを実行します。

Command Line
yarn add @stripe/stripe-react-native

次に、その他の必要な依存関係をインストールします。

  • 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> ); }

注

Use your API test keys while you test and develop, and your live mode keys when you publish your app.

Android に固有の設定

Android でプッシュプロビジョニングを有効にするには、TapAndPay SDK にアクセスできるようになった後 (上記を参照)、それをネイティブ Android プロジェクトに含める必要があります。

次に、以下を android/app/build.gradle ファイルに追加して、Stripe のネイティブ Android プッシュプロビジョニングライブラリをインポートする必要があります。

build.gradle
Groovy
dependencies { // ... implementation 'com.stripe:stripe-android-issuing-push-provisioning:1.1.0' }

iOS 固有の設定

iOS でプッシュプロビジョニングを有効にするには、Stripe がエンタイトルメントの付与を確認した後に、App Store Connect でプロビジョニングプロファイルにケイパビリティを追加する必要があります。

次に、新しいエンタイトルメントを ios/app.config.js ファイルに追加する必要があります。

app.config.js
"entitlements": { "com.apple.developer.payment-pass-provisioning": true }

バックエンドを更新する
サーバー側

プッシュプロビジョニングの実装によって公開されるメソッドでは、お客様が自身のバックエンドとやり取りをし、Stripe の一時キーを作成してその JSON をアプリに返すことが求められます。このキーは有効期間の短い API 認証情報で、暗号化されたカード詳細の取得に使用でき、それがカードオブジェクトの単一インスタンスに使用されます。

Stripe API によって返されるオブジェクトがお使いの SDK のバージョンと互換性があることを確認するために、キーを作成する際、React Native SDK によってエクスポートされた API バージョンを Stripe API に対して明示的に渡す必要があります。

Command Line
curl
curl https://api.stripe.com/v1/ephemeral_keys \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "issuing_card"="{{ISSUING_CARD_ID}}" \ -H "Stripe-Version: {{API_VERSION}}"
{ "id": "ephkey_1G4V6eEEs6YsaMZ2P1diLWdj", "object": "ephemeral_key", "associated_objects": [ { "id": "ic_1GWQp6EESaYspYZ9uSEZOcq9", "type": "issuing.card" } ], "created": 1586556828, "expires": 1586560428, "livemode": false, "secret": "ek_test_YWNjdF8xRmdlTjZFRHelWWxwWVo5LEtLWFk0amJ2N0JOa0htU1JzEZkd2RpYkpJdnM_00z2ftxCGG" }

<AddToWalletButton /> コンポーネントに渡す必要がある、Issuing カードの詳細を取得するためのエンドポイントも作成する必要があります。

Command Line
cURL
curl https://api.stripe.com/v1/issuing/cards/ISSUING_CARD_ID \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

アプリを更新する
クライアント側

まず、発行されたカードの wallets.apple_pay.eligible の値 (上記のステップ 3 で作成した 2 番目のエンドポイントから取得) が true であるかを確認して、デバイスがプッシュプロビジョニングの使用対象であるかどうかを判断します。対象である場合は、後でコンポーネントで使用するためにカード詳細を保存して続行します。wallets.apple_pay.eligible が false の場合は、iOS で <AddToWalletButton /> を表示しないでください。表示すると、アプリの審査でアプリが拒否される可能性があります。これは、Android の wallets.google_pay.eligible でも同様です。

import React, {useEffect, useState} from 'react'; import {Constants} from '@stripe/stripe-react-native'; import {View} from 'react-native'; export default function MyScreen() { const [key, setKey] = useState(null); const [card, setCard] = useState(null); useEffect(() => { fetchEphemeralKey(); fetchIssuingCard(); }, []); const fetchIssuingCard = async () => { const response = await fetch(`${API_URL}/issuing-card`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ ISSUING_CARD_ID: '{{ISSUING_CARD_ID}}', }), }); const card = await response.json(); if (!card.wallets.apple_pay.eligible) { // Do not show <AddToWalletButton /> component on iOS. See card.wallets.apple_pay.ineligible_reason for details } else if (!card.wallets.google_pay.eligible) { // Do not show <AddToWalletButton /> component on Android. See card.wallets.google_pay.ineligible_reason for details } else { setCard(card); } }; const fetchEphemeralKey = async () => { // See above }; return <View />; }

次に、上記のステップ 3 で作成した最初のエンドポイントから一時キーを取得して保存します。

import React, {useEffect, useState} from 'react'; import {Constants} from '@stripe/stripe-react-native'; import {View} from 'react-native'; export default function MyScreen() { const [key, setKey] = useState(null); useEffect(() => { fetchEphemeralKey(); }, []); const fetchEphemeralKey = async () => { const response = await fetch(`${API_URL}/ephemeral-key`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ ISSUING_CARD_ID: '{{ISSUING_CARD_ID}}', API_VERSION: Constants.API_VERSIONS.ISSUING, }), }); const myKey = await response.json(); setKey(myKey); }; return <View />; }

これ以上のサーバー通信は不要です。次に、ウォレットにカードを追加_「できる」_かを確認する必要があります。これは、canAddCardToWallet メソッドで確認でき、ブール値の canAddCard フィールドを含むオブジェクトが返されます。canAddCard が false の場合は、AddToWalletButton を表示しないでください。表示すると、アプリが Apple によって拒否される可能性があります。

Android では、カードがすでにウォレットにある場合でも、不適切な状態で止まっている可能性があります。canAddCardToWallet で返される details オブジェクトの token を確認することで、このようなケースに対処するロジックを追加できます。レスポンスが null 以外で、token.status が "TOKEN_STATE_NEEDS_IDENTITY_VERIFICATION" の場合は、この token を <AddToWalletButton /> のプロパティに渡します。

import React, {useEffect, useState} from 'react'; import {Constants, canAddCardToWallet, GooglePayCardToken} from '@stripe/stripe-react-native'; import {View} from 'react-native'; export default function MyScreen() { const [key, setKey] = useState(null); const [card, setCard] = useState(null); const [showAddToWalletButton, setShowAddToWalletButton] = useState(false); const [androidCardToken, setAndroidCardToken] = useState(null); useEffect(() => { fetchEphemeralKey(); fetchIssuingCard(); }, []); const checkIfCanAddCard = async () => { const { canAddCard, details, error } = await canAddCardToWallet({ primaryAccountIdentifier: card?.wallets?.primary_account_identifier, cardLastFour: card.last4, hasPairedAppleWatch: // Pass a boolean indicating whether or not the device has a paired Apple Watch. iOS only. }); if (error) { Alert.alert(error.code, error.message); } else { setShowAddToWalletButton(canAddCard); if (details?.token?.status === 'TOKEN_STATE_NEEDS_IDENTITY_VERIFICATION') { setAndroidCardToken(details.token); } } }; const fetchIssuingCard = async () => { // See above await checkIfCanAddCard(); }; const fetchEphemeralKey = async () => { // See above }; return <View />; }

これで、ボタンを表示するために必要なすべての情報が揃いました。

import React, {useEffect, useState} from 'react'; import { Constants, canAddCardToWallet, AddToWalletButton, GooglePayCardToken, } from '@stripe/stripe-react-native'; import {View, Image, Alert, StyleSheet} from 'react-native'; import AddToGooglePayPNG from '../assets/Add-to-Google-Pay-Button-dark-no-shadow.png'; export default function MyScreen() { const [key, setKey] = useState(null); const [card, setCard] = useState(null); const [showAddToWalletButton, setShowAddToWalletButton] = useState(false); const [androidCardToken, setAndroidCardToken] = useState<null | GooglePayCardToken>(null); useEffect(() => { fetchEphemeralKey(); fetchIssuingCard(); }, []); const canAddCard = async () => { // See above }; const fetchIssuingCard = async () => { // See above }; const fetchEphemeralKey = async () => { // See above }; return ( <View> {showAddToWalletButton && ( <AddToWalletButton token={androidCardToken} androidAssetSource={Image.resolveAssetSource(AddToGooglePayPNG)} testEnv={true} style={styles.payButton} iOSButtonStyle="onLightBackground" cardDetails={{ name: card?.cardholder?.name, primaryAccountIdentifier: card?.wallets?.primary_account_identifier, // This can be null, but should still always be passed. Failing to pass the primaryAccountIdentifier can result in a failure to provision the card. lastFour: card?.last4, description: 'Added by Stripe', }} ephemeralKey={key} onComplete={({error}) => { Alert.alert( error ? error.code : 'Success', error ? error.message : 'Card was successfully added to the wallet.', ); }} /> )} </View> ); } const styles = StyleSheet.create({ payButton: { // You may add custom styles to your button, but make sure it complies // with the relevant platform guidelines: // iOS : https://developer.apple.com/wallet/add-to-apple-wallet-guidelines/ // Android : https://developers.google.com/pay/issuers/apis/push-provisioning/android/branding-guidelines }, });

ユーザーがボタンをタップすると、カードをウォレットに追加するための UI が起動します。onComplete プロパティにコールバックを実装します。error フィールドが null 以外の場合は、エラーが発生しておりカードはウォレットに追加されていません。error が null である場合は、カードは正常にプロビジョニングされています。

ボタンのスタイル

iOS では、ボタンのスタイルは iOSButtonStyle プロパティによって決定されます。このプロパティーを以下のように設定します。

  • onLightBackground は、明るい色または白の背景の上にボタンを表示する場合です。
  • onDarkBackground は、暗い色または黒の背景の上にボタンを表示する場合です。

Android では、実際の画像アセットを androidAssetSource プロパティに渡す必要があります。利用可能なアセットオプションは、Google から直接ダウンロードできます。ボタンを実装する際は、Google のブランディングガイドラインに従って作業を行ってください。

選択した PNG を AddToWalletButton コンポーネントに渡すには、プロジェクトに追加して、他のアセットと同様にインポートし、ソースを Image.resolveAssetSource で解決します。

import {Image} from 'react-native'; import AddToGooglePayPNG from '../assets/Add-to-Google-Pay-Button-dark-no-shadow.png'; ... <AddToWalletButton ... androidAssetSource={Image.resolveAssetSource(AddToGooglePayPNG)} ... />

テスト

iOS

iOS では、testEnv={true} を AddToWalletButton コンポーネントに渡す限り、開発、シミュレーター、およびテストカードでプッシュプロビジョニングをテストできます。testEnv プロパティがtrue に設定されている場合、カードは実際にはデバイスのウォレットに追加されないことに注意してください。テスト環境では、com.apple.developer.payment-pass-provisioning エンタイトルメントは必要ありません。

Android

Android では、testEnv プロパティには効果がありません。テストはすべて、本番環境で本番の Issuing カードを実際のデバイスで使用して行ってください。

内部テストを開始する前に、必ずアプリケーション ID を Stripe に提供してください。

このページはお役に立ちましたか。
はいいいえ
お困りのことがございましたら 、サポートにお問い合わせください。
早期アクセスプログラムにご参加ください。
変更ログをご覧ください。
ご不明な点がございましたら、お問い合わせください。
LLM ですか?llms.txt を読んでください。
Powered by Markdoc