[iOS 10] Apple Pay 対応アプリ開発のための環境構築について
はじめに
こんにちは。モバイルアプリサービス部の平屋です。前回の記事「[iOS 10] 開発者のための Apple Pay 概要」に引き続き、Apple Pay についての情報を紹介していきます。
本記事では Apple Pay に関する実装をはじめる前にやっておきたい環境構築の手順を紹介していきます。
検証環境
- Xcode Version 8.0 (8A218a)
- iPhone 6s, iOS 10.0.2
目次
テスト環境を使用するための準備
Apple は Apple Pay のテスト環境を提供していて、この環境を使用して実装を進めることができます。まずは、このテスト環境を使用するための準備について紹介します。対象端末は以下のとおりです。
- iOS 10.0 以降が動作する Apple Pay に対応した端末 (iPhone 6 以降に販売された iPhone など)
テスターアカウントを作成する
iTunes Connect でテスターアカウントを作成します。そして、iOS 端末上で「設定アプリ」->「iCloud」を開き、作成したアカウントでログインします。(iTunes & App Store ではなく iCloud です。)
テスターアカウントの作成手順については以下の記事をご覧ください!
テスト用のクレジットカードを端末に登録する
次に、テスト用のクレジットカードの登録手順を紹介します。クレジットカードは標準の「Wallet」アプリで登録します。
「地域」を変更する (必要であれば)
2016/10/19 現在、OS の地域の設定を日本に設定してある場合、「Wallet」アプリでクレジットカードを登録することはできません。そこで、「地域」を既に Apple Pay がサービスインしている国 (アメリカ合衆国など) に変更して、クレジットカードを登録できるようにします。
「設定アプリ」->「一般」->「言語と地域」->「地域」を開き、アメリカ合衆国などを選択し、「完了」を押し、「続ける」を選択します。
テスト用のクレジットカードを Wallet アプリに登録
「Wallet」アプリを開き、「カードを追加」をタップします。
「次へ」をタップします。
「カード情報を手動で入力」をタップします。
今回はテストカードなので手動で入力するしかありません。物理的なカードが存在する場合、カードにカメラを向ければカード番号を認識してくれます!
以下のページの「Test Cards for Apps and the Web」セクションに記載してあるいずれかのテストカードの「カード番号 (FPAN)」を入力します。名義欄には適当な名前を入力し、「次へ」をタップします。(有効期限 / セキュリティーコードは次の画面で入力します)
1 つ前の手順で選択したテストカードの「有効期限 (Expiration Date)」と「セキュリティーコード (CID)」を入力し、「次へ」をタップします。
通信処理が開始されます。
クレジットカードのブランドによって通信完了までの時間が異なっていたので、実際にカード会社のサーバーとやりとりをしているっぽいです。
しばらくすると「利用条件」が表示されました。問題なければ「同意する」をタップします。
通信処理が続きます。
しばらくするとカードの登録が完了し、「Wallet」アプリのトップ画面にクレジットカードが追加されました!
「お使いのカードはアクティベート中です」というメッセージが表示されます。
少し待つと、「"<カード名>"がApple Payで利用可能になりました」というメッセージに変わります。テストカードの登録作業は以上で完了です。
マーチャント ID 登録と証明書設定
アプリで Apple Pay を使用するには、マーチャント ID を登録し、マーチャント ID 証明書を設定する必要があります。
マーチャント ID は Apple Pay に対して身元を証明するものです。この ID は Xcode の Capabilities でアプリと紐付けます。マーチャント ID 用の証明書は支払い情報を暗号化するために使われます。
マーチャント ID を登録する
以下の操作を行い、マーチャント ID を登録します。
- https://developer.apple.com/ を開き、右上の「Account」をクリックし、ログインする
- 「Certificates, Identifiers & Profiles」をクリックする
- 「Identifiers」以下の「Merchant IDs」をクリックする
- 右上にある「+」ボタンをクリックする
- 「Description」と「ID」を入力し、「Continue」をクリックする
- ID は merchant.<逆ドメイン名>.<マーチャント名> という形式を推奨
- 例: merchant.com.example.myMerchant
- ID は merchant.<逆ドメイン名>.<マーチャント名> という形式を推奨
- 設定内容を確認し、「Register」をクリックする
- 「Done」をクリックする
マーチャント ID 用の証明書を設定する
以下の操作を行い、マーチャント ID 用の証明書を設定します。
- 「マーチャント ID を登録する」で作成した ID をクリックする
- 「Edit」をクリックする
- 「Payment Processing Certificate」欄の「Create Certificate」をクリックする
- 画面上の指示に従って、CSR (証明書署名要求) を取得または生成する
- CSR の生成は「キーチェーンアクセス」アプリで行う
- 生成の操作の中で「鍵ペア情報を指定」にチェックを入れて以下の指定を行う必要があるので注意
- Algorithm: ECC
- Key Size: 256 bits
- 「Choose File」ボタンをクリックして、*.certSigningRequest ファイルを選択し、「Continue」をクリックする
- 「Download」をクリックして証明書をダウンロードし、「Done」をクリックする
- 証明書ファイルをダブルクリックして、キーチェーンアクセスに取り込む
- キーチェーンアクセスで「証明書が未知の認証局によって署名されている」または「イシュアーが無効である」旨の警告が表示された場合は以下の証明書がインストールされているかを確認する。
- Apple Root CA - G2 Root Certificate (ルート証明書)
- Worldwide Developer Relations - G2 Certificate (中間証明書)
- 上記証明書がない場合は https://www.apple.com/certificateauthority/ からダウンロードする
- キーチェーンアクセスで「証明書が未知の認証局によって署名されている」または「イシュアーが無効である」旨の警告が表示された場合は以下の証明書がインストールされているかを確認する。
Apple Pay の有効化
Apple Pay を有効にしたいプロジェクトを Xcode で開き、以下の操作を行います。
- TARGET の Capabilities を開き、Apple Pay をオンにする
- 手順「マーチャント ID を登録する」で登録した ID にチェックを入れる
動作確認
最後に、ペイメントシートの表示だけを試してみます。
Single View Application テンプレートからプロジェクトを作成し、自動生成される Main.storyboard にボタンを、ViewController にコードを追加し、ペイメントシートを表示させてみました。(コードの詳細は次回以降の記事で解説します。)
import UIKit import PassKit class ViewController: UIViewController, PKPaymentAuthorizationViewControllerDelegate { @IBAction func buttonDidTap(_ sender: AnyObject) { let request = PKPaymentRequest() // 手順「マーチャント ID を登録する」で登録した ID を指定 request.merchantIdentifier = "merchant.com.example.myMerchant" request.countryCode = "JP"; request.currencyCode = "JPY"; request.supportedNetworks = PKPaymentRequest.availableNetworks() request.merchantCapabilities = .capability3DS request.paymentSummaryItems = [ PKPaymentSummaryItem(label:"myMerchant", amount:NSDecimalNumber(string:"300")) ] let viewController = PKPaymentAuthorizationViewController(paymentRequest: request) viewController.delegate = self self.present(viewController, animated: true, completion: nil) } func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController, didAuthorizePayment payment: PKPayment, completion: @escaping (PKPaymentAuthorizationStatus) -> Void) { print("didAuthorizePayment!") completion(.success) } func paymentAuthorizationViewControllerDidFinish(_ controller: PKPaymentAuthorizationViewController) { print("DidFinish!") self.dismiss(animated: true, completion: nil) } }
ボタンをタップすると、ペイメントシートが表示されます。
さいごに
本記事では Apple Pay 実装のための環境構築の手順を紹介しました。テスト用の環境が用意されているので、アプリ周りの実装はすぐに進めることができます。
次の記事ではいよいよ実装について解説します。お楽しみに!