Xamarin.iOS での Apple Pay
このガイドでは、Apple Pay で使用する Xamarin.iOS 環境を設定して、食品、エンターテイメント、メンバーシップなどの物理的な商品の支払いをアプリ経由で行う方法について説明します。 これには、必要な識別子、証明書、資格に関する情報が含まれます。
Apple Pay は iOS 8 と共に導入され、ユーザーは iOS デバイスを介して食品、エンターテイメント、メンバーシップなどの物理的な商品の支払いができるようになりました。 iPhone 6 と iPhone 6 Plus で使用できるほか、Apple Watch とペアリングして店頭で購入することもできます。 iPhone 上で使うと、ユーザーのクレジット カードまたはデビット カードへのトランザクションを確認および認可する方法として Touch ID が使われます。
要件
Apple Pay は iOS 8 以降でのみ利用できるため、Xcode 6 以上が必要です。
Apple Pay をアプリに統合するには、次の項目も必要です。
- 支払いプロセッサ プラットフォーム
- マーチャント ID
- Apple Pay の証明書
- Apple Pay の資格
このドキュメントでは、これらの項目について詳しく説明します。
Apple Pay と IAP の違い
Apple Pay と アプリ内購入 (IAP) の主な違いは、販売する製品に関連します。 物理的な商品は Apple Pay を介して販売されます。食品、宿泊施設、物理的なエンターテイメント (映画チケットなど) はすべてこの例です。 これに対し、IAP は、プレミアムコンテンツや追加コンテンツなどの仮想商品を販売しています。ストリーミング サービスの追加月数や、ゲームの追加ライフを考えてください。
使用されるフレームワークも重要な違いです。 PassKit は Apple Pay に使用され、StoreKit は IAP 用のフレームワーク API を提供します。
Apple Pay について、Apple は “ユーザー、販売者、開発者に Apple Pay の使用料を請求しない” と述べています。 これに対し、IAP ではトランザクションごとに 30% の料金が発生します。 さらに、Apple Pay では、トランザクションは Apple をまったく経由せず、代わりに支払いプラットフォームを経由します。
支払いプロセッサ プラットフォームの使用
Apple Pay の基本的な部分の 1 つは、支払いの処理です。 これは自分で行うことができますが、Apple の支払い処理ガイドで詳しく説明されているように、暗号化に関する重要な知識が必要です。 一方、支払い処理プラットフォームでは、これらの操作を処理するため、アプリの構築に集中できます。
次の 2 つのオプションがあります。
Stripe - Stripe.com にサインアップして API にアクセスします。
JudoPay - github で Xamarin サンプル コードをチェックアウトし、JudoPay.com に登録します。
Apple Pay のプロビジョニング
Apple Pay を使用するようにアプリを構成するには、Apple 開発者ポータルとアプリ内でセットアップする必要があります。 Apple Pay 用にアプリを正常にプロビジョニングするには、いくつかの手順に従う必要があります。
- マーチャント ID を作成します。
- ここの手順に従います
- Apply Pay 機能を使用してアプリ ID を作成し、それにマーチャントを追加します。
- ここの手順に従います
- マーチャント ID の証明書を生成します。
- ここの手順に従います
- 新しく作成されたアプリ ID を使用してプロビジョニング プロファイルを生成します。
- ここの手順に従います
- Apple Pay の資格を追加します。
Apple Pay の使用
Apple は iOS 10 の Apple Pay に対していくつかの機能強化を行いました。これにより、ユーザーは Web サイトおよび Siri や マップとのやりとりを通じて安全な支払いを行うことができます。
iOS 10 では、動的支払いネットワークと新しいサンドボックス テスト環境をサポートするために、iOS と watchOS の両方で動作するいくつかの新しい API が追加されました。
Apple Pay Web サイトの統合
iOS 10 を初めて使用する開発者は、ApplePay JS を使用して Apple Pay を Web サイトに直接組み込むことができます。 iOS または macOS で Safari を使用して Web サイトを閲覧しているユーザーは、iPhone または Apple Watch でトランザクションを検証することで、Apple Pay で支払いを行うことができます。 詳細については、Apple の ApplePay JP フレームワークのリファレンスを参照してください。
PassKit フレームワークの機能強化
iOS 10 では、PassKit フレームワークは、UIKit
の外部で Apple Pay をサポートし、カード発行者がアプリ内からカードを提示できるように拡張されています。
UIKit の外部での Apple Pay のサポート
PKPaymentAuthorizationController と PKPaymentAuthorixationControllerDelegate を使用すると、アプリでは UIKit を使用せずに PKPaymentAuthorizationViewController によって提供されるものと同じ機能をサポートできます。 この新しい API は Apple Watch で Apple Pay をサポートするために (および特定の Intents 内の場合も) 必要ですが、他の状況 (既存のアプリなど) では省略できます。 ただし、Apple では、できるだけ早く新しい API に移行し、1 つのコード ベースのすべての開発者のアプリ全体にわたる広範な Apple Pay サポートを提供することを提案しています。 Intents と Siri の統合の詳細については、SiriKit の概要に関するドキュメントを参照してください。
アプリ内からの発行者カードの提示
iOS 10 では、カード発行者が独自のアプリ内からカードを提示できるようにする新しい機能が PassKit フレームワークに追加されました。 開発者は、アプリのユーザー インターフェイスに PKPaymentButtonTypeInStore
UIButton を追加して、カードの Apple Pay ボタンを表示できます。
PresentPaymentPass
PKPassLibrary クラスの メソッドを使用して、カードをプログラムで表示することもできます。
新しい支払いネットワーク のサポート
iOS 10 では、開発者がアプリを変更して再コンパイルして App Store に再送信しなくても、アプリは新しい支払いネットワークを自動的にサポートできるようになりました。
クラスの新しい AvailableNetworksPKPaymentNetwork
メソッドを使用すると、アプリは実行時にユーザーのデバイスで使用可能なネットワークを検出できます。 さらに、SupportedNetworks プロパティが拡張され、支払いプロバイダーの名前が引数として取得されます。 これらのメソッドを使用すると、アプリでは、支払いプロバイダーがサポートするすべてのネットワークを自動的にサポートできます。
詳細については、Apple Pay の構成に関する記事と Apple の Apple Pay ガイドを参照してください。
新しいテスト環境
iOS 10 では、Apple は新しいテスト環境を導入しました。これにより、開発者は iOS デバイスで直接テスト用支払いカードをプロビジョニングできます。 この新しいテスト環境では、暗号化されたテスト支払いデータがアプリに返されます。
新しいテスト環境を有効にするには、次のようにします。
- iTunes Connect で新しいテスト用 iCloud アカウントを作成します。
- 新しいテスト アカウントを使用して iOS デバイスにログインします。
- アプリをテストする目的のリージョンを設定します。
- Apple Pay ガイドのテスト用支払いカードのいずれかを使用して支払いを行います。
重要
iCloud アカウントを切り替えると、デバイスは自動的に新しいテスト環境に切り替わります。 ただし、Apple では依然として、iTunes App Store に提出する前に、運用環境で実際のカードを使ってアプリをテストすることを求めています。
まとめ
この記事では、アプリ内で Apple Pay を使用するために必要なさまざまな項目について説明しました。 マーチャント ID を作成する方法と、それを Entitlements.plist 内で使用する方法について説明しました。これは手動で変更する必要があります。