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 をアプリに統合するには、次の項目も必要です。
- 支払いプロセッサ プラットフォーム
- マーチャント識別子
- Apple Pay 証明書
- Apple Pay のエンタイトルメント
このドキュメントでは、これらの項目について詳しく説明します。
Apple Pay と IAP の違い
Apple Pay と アプリ内購入 (IAP) の主な違いは、販売する製品に関連しています。 物理的な 商品は Apple Pay 経由で販売されます。食べ物、宿泊施設、物理的なエンターテイメント(映画チケットなど)はすべて、この例です。 これに対し、IAP は、プレミアムコンテンツや追加コンテンツなどの 仮想 商品を販売し、サブスクリプションはストリーミングサービスの追加月やゲーム内の余分な生活を考えます。
使用されるフレームワークも重要な違いです。 PassKit は Apple Pay に使用されますが、 StoreKit には IAP 用フレームワーク API が用意されています。
Apple Pay では、Apple は"[Does] ユーザー、マーチャント、開発者に Apple Pay for 支払の使用を請求しない" と述べています。 これに対し、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 を作成します。
- こちらの手順に従います
- [支払いを適用] 機能を使用してアプリ ID を作成し、それにマーチャントを追加します。
- こちらの手順に従います
- マーチャント ID の証明書を生成します。
- こちらの手順に従います
- 新しく作成されたアプリ ID を使用してプロビジョニング プロファイルを生成します。
- こちらの手順に従います
- Apple Pay のエンタイトルメントを追加する:
Apple Pay の使用
Apple は、iOS 10 の Apple Pay に対していくつかの機能強化を行い、ユーザーが Web サイトや Siri や Maps との対話を通じて安全な支払いを行えるようにしています。
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 Framework リファレンスを参照してください。
PassKit Framework の機能強化
iOS 10 では、PassKit フレームワークが拡張され、Apple Pay が外部UIKit
でサポートされ、カード発行者がアプリ内から独自のカードを提示できるようになります。
UIKit の外部での Apple Pay のサポート
PKPaymentAuthorizationController と PKPaymentAuthorixationControllerDelegate を使用すると、アプリは UIKit を使用せずに PKPaymentAuthorizationViewController によって提供されるのと同じ機能をサポートできます。 この新しい API は Apple Watch で Apple Pay をサポートするために必要ですが (特定の意図でも)、他の状況 (既存のアプリなど) では省略可能です。 ただし、Apple は、1 つのコード ベースですべての開発者のアプリ全体で広範な Apple Pay サポートを提供するために、できるだけ早く新しい API に移行することを提案しています。 Intents と Siri の統合の詳細については、 SiriKit の概要に関するドキュメントを 参照してください。
アプリ内からの発行者カードの提示
iOS 10 では、カード発行者が独自のアプリ内からカードを提示できるようにする新しい機能が PassKit フレームワークに追加されました。 開発者は、アプリのユーザー インターフェイスに UIButton を追加PKPaymentButtonTypeInStore
して、カードの Apple Pay ボタンを表示できます。
PresentPaymentPass
PKPassLibrary クラスの メソッドを使用して、プログラムによってカードを表示することもできます。
新しい支払いネットワーク のサポート
iOS 10 の新機能であるアプリでは、開発者がアプリを変更し、再コンパイルして、App Storeに再送信しなくても、新しい支払いネットワークが使用可能になったときに、自動的に新しい支払いネットワークをサポートできます。
クラスのPKPaymentNetwork
新しい AvailableNetworks メソッドを使用すると、実行時にユーザーのデバイスで使用可能なネットワークをアプリで検出できます。 さらに、 SupportedNetworks プロパティが拡張され、支払プロバイダーの名前が引数として取得されます。 これらの方法を使用すると、アプリは、支払いプロバイダーがサポートするすべてのネットワークを自動的にサポートできます。
詳細については、 Apple Pay Configuration と Apple の Apple Pay Guide を参照してください。
新しいテスト環境
iOS 10 では、Apple によって新しいテスト環境が導入されました。これにより、開発者は iOS デバイスにテスト支払いカードを直接プロビジョニングできます。 この新しいテスト環境では、暗号化されたテスト支払いデータがアプリに返されます。
新しいテスト環境を有効にするには、次の操作を行います。
- iTunes Connect で新しいテスト用 iCloud アカウントを作成します。
- 新しいテスト アカウントを使用して iOS デバイスにログインします。
- アプリをテストする目的のリージョンを設定します。
- Apple Pay Guide のテスト支払いカードのいずれかを使用して支払いを行います。
重要
iCloud アカウントを切り替えると、デバイスは自動的に新しいテスト環境に切り替わります。 ただし、Apple では、iTunes App Storeに送信する前に、運用環境で実際のカードでアプリをテストする必要があります。
まとめ
この記事では、アプリ内で Apple Pay を使用するために必要なさまざまな項目について説明しました。 マーチャント ID を作成する方法と、手動で変更する必要がある Entitlements.plist 内でのマーチャント ID の使用方法について説明しました。