Issuing でデジタルウォレットを使用する
Issuing を使用してデジタルウォレットにカードを追加する方法をご紹介します。
Issuing を使用すると、ユーザーは Apple Pay や Google Pay などのデジタルウォレットにカードを追加できます。Stripe は、以下の 2 つの方法でカードの追加をサポートしています。
- 手動のプロビジョニング: カード保有者は、スマホのウォレットアプリケーションにカード情報を入力して、デジタルウォレットに追加します。
- プッシュプロビジョニング: モバイルアプリケーションでは、ユーザーがアプリから直接、デジタルウォレットにカードを追加できます。
カードがデジタルウォレットに追加されると、そのカードのトークン化された表記が作成されます。ネットワークトークンは、カードとは別に管理されます。ネットワークトークンとその仕組みについて、詳細はトークン管理をご覧ください。
手動のプロビジョニング
カード保有者は、手動のプロビジョニングを使用して、Stripe Issuing のバーチャルカードと物理カードを Apple Pay、Google Pay、Samsung Pay のウォレットに追加できます。
これを行うには、カード保有者はスマートフォンでウォレットアプリを開いてカード詳細を入力します。Stripe は、カードに関連付けられたカード保有者の phone_
または 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 ではサポートされていません。
アクセスをリクエスト
プッシュプロビジョニングには、com.
と呼ばれる Apple からの特別なエンタイトルメントが必要です。これは support-issuing@stripe.com にメールを送信して、リクエストすることができます。メールには、以下の内容を含めてください。
- アプリ名: アプリの名前。
- 開発チーム ID: メンバーシップの Apple Developer アカウントに記載されています (例:
2A23JCNA5E
)。 - ADAM ID: アプリの一意の数値 ID。App Store Connect またはアプリへの App Store リンク (
https://apps.
など) に記載されています。apple. com/app/id123456789 - バンドル ID: アプリのバンドル ID。App Store Connect (
com.
など) にも記載されています。example. yourapp
上記の属性に関して別のフィールドが設定された複数のアプリ (テスト用など) がある場合は、それぞれのアクセスをリクエストする必要があります。
リクエストが承認されて適用されると、Wallet アプリのプロビジョニングされたカードの詳細ページにアプリが表示され、PKPassLibrary().
を呼び出すことで PKSecureElementPass
オブジェクトをアプリで使用できるようになります。変更を有効にするために、カードを削除して再びプロビジョニングする必要が生じる場合があります。
利用資格を確認クライアント側
お客様のアプリに最新バージョンの Stripe iOS SDK が導入されていることを確認してください。
デバイスにプッシュプロビジョニングを使用する資格があるかどうかを判断します。
- 発行されたカードの
wallets[apple_
の値がpay][eligible] true
であることを確認します。 - カードの
wallets[primary_
を指定してaccount_ identifier] PKPassLibrary().
を呼び出し、結果がcanAddSecureElementPass(primaryAccountIdentifier:) true
であることを確認します。primary_
が空である場合は、空の文字列をaccount_ identifier canAddSecureElementPass()
に渡します。
これらの値をバックエンドで取得し、利用資格を確認するためにアプリに渡します。
警告
PKAddPassButton
を表示する前に、サーバー側の wallets[apple_
フラグと canAddSecureElementPass()
の結果を確認する必要があります。これらの値を確認せずに Apple Wallet に追加ボタンを表示すると、アプリの審査でアプリが拒否される場合があります。
詳細については、サンプルアプリの各ステップのコードスニペットとリファレンスをご覧ください。このステップについては、サンプルアプリで適格性を確認する方法をご覧ください。
カードをプロビジョニングするクライアント側
ユーザーが PKAddPassButton
をタップしたら、プッシュプロビジョニングフローのための Apple UI が含まれる PKAddPaymentPassViewController
を作成して表示します。
注
PKAddPaymentPassViewController
は、前のステップの primaryAccountIdentifier
を使用して、カードが特定のデバイスですでにプロビジョニングされているかどうかを判断できます。たとえば、カードがすでに iPhone に追加されている場合は、Apple UI はペアリングされた Apple Watch にカードを追加することを提案します。
詳細については、サンプルアプリで PKAddPaymentPassViewController
を使用する方法をご覧ください。
PKAddPaymentPassViewController
のイニシャライザーは、実装が必要なデリゲートを受け取ります。これは通常、それを表示するビューコントローラーにのみできます。Stripe では、 STPPushProvisioningContext
と呼ばれるクラスを提供し、これらのメソッドを実装できるようにしています。
詳細については、サンプルアプリで PKAddPaymentPassViewControllerDelegate
を実装する方法をご覧ください。
STPPushProvisioningContext
のイニシャライザーが keyProvider
を要求していることがわかります。これは、STPIssuingCardEphemeralKeyProvider
プロトコルを実装するクラスのインスタンスです。
このプロトコルは、単一の必須メソッド createIssuingCardKeyWithAPIVersion:completion
を定義します。このメソッドを実装するには、バックエンドに API コールを実行します。バックエンドが Stripe API を使用して一時キーオブジェクトを作成し、アプリに返します。次に、アプリはバックエンドの API レスポンスを使用して、指定された完了ハンドラを呼び出します。
詳細については、サンプルアプリで STPIssuingCardEphemeralKeyProvider
を実装する方法をご覧ください。
バックエンドを更新するサーバ側
プッシュプロビジョニングの実装によって公開されるメソッドでは、お客様が自身のバックエンドとやり取りをし、Stripe の一時キーを作成してその JSON をアプリに返すことが求められます。このキーは有効期間の短い API 認証情報で、暗号化されたカード詳細の取得に使用でき、それがカードオブジェクトの単一インスタンスに使用されます。
Stripe API によって返されるオブジェクトがお使いの iOS または Android の SDK と互換性があることを確認するために、Stripe SDK では、優先される API バージョンを確認できます。キーを作成する際は、Stripe API に対してこの API バージョンを明示的に渡す必要があります。
{ "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" }
詳細については、サンプルバックエンドで Stripe の一時キーを作成する方法をご覧ください。
テスト
com.
エンタイトルメントは、配信プロビジョニングプロファイルでのみ機能します。このため、エンタイトルメントの取得後も、エンドツーエンドのプッシュプロビジョニングのフローをテストする唯一の方法は、アプリを TestFlight または App Store で配信することです。
テストを容易にするために、Stripe は STPFakeAddPaymentPassViewController
と呼ばれるモック版の PKAddPaymentPassViewController
を提供しています。テストの際はこれを代わりに使用できます。
サンプルアプリを作成するには、readme の手順に従います。上記の手順に従うために、アプリを作成する必要はありません。