いつかくるそのときのために 〜 Apple Pay対応のやりかた

348 Views

May 13, 15

スライド概要

potatotips #17で発表した資料の加筆修正版です。

いつかくるそのときの参考になれば幸いです。詳しい対応方法は以下のURLを熟読してください。
https://developer.apple.com/apple-pay/

profile-image

SwiftとLEGOとBluetooth LEが好きなプログラマ

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

いつかくるそのときのために   Apple  Pay対応のやりかた 株式会社メルカリ   iOSエンジニア   ⼤大庭慎⼀一郎郎

2.

⾃自⼰己紹介 ⼤大庭  慎⼀一郎郎  (ooba  /  bricklife)   株式会社メルカリ   2013年年4⽉月⼊入社   「メルカリ」iOS版を開発

3.

メルカリとは? いわゆる「フリマアプリ」   2013年年7⽉月  JP版リリース   2014年年8⽉月  US版リリース   2015年年2⽉月  Apple  Pay対応

4.

Apple  Payって?

5.

Apple  Pay 現状USでしか使えないApple独⾃自の決済システム   端末内の「セキュアエレメント」にカード情報を保持   カード情報のほかに連絡先なども保存できる   決済時にはカード情報は送られない   実店舗でのNFC決済のほか、アプリ内でも使える

6.

Apple  Payの利利⽤用条件 iPhone  6、iPhone  6  Plus、iPad  Air  2、iPad  mini  3   iOS  8.1以上   地域設定が「アメリカ合衆国」になっている   Touch  IDまたはパスコードの設定   iCloudアカウント

7.

Apple  Payが有効になると

8.

対応している決済システム Authorize.Net   First  Data   Braintree   Stripe   Chase  Paymentech   TSYS CyberSource   ※ https://developer.apple.com/apple-pay/ より抜粋 (2015/5現在)

9.

Apple  Pay決済の流流れ ※ 「Getting Started with Apple Pay」から引用

10.

Apple  Pay対応⼿手順

11.

準備 1. Merchant  IDを作成   2. プロジェクトでApple  Payを有効

12.

実装 1. 実⾏行行端末でApple  Payが使えるかどうかの確認   2. Apple  Payのガイドラインに沿ったボタンを表⽰示   3. PKPaymentRequestを⽣生成   4. PKPaymentAuthorizationViewControllerを表⽰示   5. PKPaymentAuthorizationViewControllerDelegateの対応

13.

Merchant  IDの作成

14.

Apple  Payを有効

15.

Apple  Payが使えるか確認 PKPaymentAuthorizationViewControllerのクラス メソッドで確認できる   +  canMakePayments   +  canMakePaymentsUsingNetworks:

16.

Apple  Payボタンの設置 「Apple  Pay  Button  and  Resources」から好きなの を選んで使う   「Apple  Pay  Identity  Guidelines」によい例例と悪い 例例が書いてあるので参考にする   iOS  8.3以降降ならPKPaymentButtonで⽣生成できる

17.

Apple  Payボタンの設置例例

18.
[beta]
PKPaymentRequestの⽣生成
PKPaymentRequest *paymentRequest = [[PKPaymentRequest alloc] init];
paymentRequest.currencyCode = @"USD";
paymentRequest.countryCode = @"US";
paymentRequest.merchantIdentifier = @“<YOUR MERCHANT ID>";
NSDecimalNumber *amount = [NSDecimalNumber decimalNumberWithMantissa:500
exponent:-2
isNegative:NO];
PKPaymentSummaryItem *summaryItem = [PKPaymentSummaryItem summaryItemWithLabel:@"Mercari"
amount:amount];
paymentRequest.paymentSummaryItems = @[summaryItem];
paymentRequest.supportedNetworks = @[PKPaymentNetworkAmex,
PKPaymentNetworkMasterCard,
PKPaymentNetworkVisa];
paymentRequest.merchantCapabilities = PKMerchantCapability3DS;
paymentRequest.requiredBillingAddressFields = PKAddressFieldPostalAddress;

19.

PKPaymentAuthorizationView Controllerを表⽰示 PKPaymentAuthorizationViewController *vc = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:paymentRequest]; vc.delegate = (id<PKPaymentAuthorizationViewControllerDelegate>)self; [self presentViewController:vc animated:YES completion:nil];

20.

PKPaymentAuthorizationView Controllerの表⽰示例例

21.

PKPaymentAuthorizationView ControllerDelegateの対応 - (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller didAuthorizePayment:(PKPayment *)payment completion:(void (^)(PKPaymentAuthorizationStatus))completion { // 支払い情報を含んだPKPaymentのインスタンスが取得できる // サーバに payment.token や payment.billingAddress など必要な情報を送る completion(PKPaymentAuthorizationStatusSuccess); } - (void)paymentAuthorizationViewControllerDidFinish:(UIViewController *)controller { [controller dismissViewControllerAnimated:YES completion:nil]; }

22.

Apple  Pay対応の罠

23.

開発・QAがつらい 利利⽤用条件を揃えてもApple  Payが使えないことがある   US発⾏行行のクレジットカードじゃないと登録できない   https://support.apple.com/ja-‐‑‒jp/HT6288   Enterprise配布では使えない   →  ⽇日本で開発・QAするのつらい

24.

リジェクト事案  アプリの設定でApple  Payが有効になっているのに 実装されていないからリジェクトするね 開発のためにApple  Payを有効にしたけど、まだ実装完了了 していない状態でサブミットしたらリジェクトされた…   →「次のバージョンで実装するから!」と⾔言って回避

25.

警告事案  アプリの設定でApple  Payが有効になっていないの に実装が⼊入っているんだけど JP版をUS版と同じプロジェクトからビルドしたら、サブミット時 に⾃自動的に警告メールがきた   →  とりあえず審査員向けのコメントで説明   →  その後、ビルドを⼯工夫してJP版からPassKitへの参照をなくした

26.

最後に宣伝 メルカリで開発・運⽤用している汎⽤用プッシュ 通知サーバ「Gaurun(がうるん)」を公開 しました!  Go⾔言語!  OSS!   https://github.com/mercari/gaurun