Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Apple Pay対応のやりかた

Apple Pay対応のやりかた

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

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

86aef9515e5986c096bc398c8990992e?s=128

Shinichiro Oba

May 13, 2015
Tweet

More Decks by Shinichiro Oba

Other Decks in Programming

Transcript

  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   Braintree   Chase  Paymentech   CyberSource  

    First  Data   Stripe   TSYS ˞ IUUQTEFWFMPQFSBQQMFDPNBQQMFQBZΑΓൈਮ ݱࡏ
  9. Apple  Pay決済の流流れ ˞ʮ(FUUJOH4UBSUFEXJUI"QQMF1BZʯ͔ΒҾ༻

  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. 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 ΍ QBZNFOU.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. 警告事案 JP版をUS版と同じプロジェクトからビルドしたら、サブミット時 に⾃自動的に警告メールがきた   →  とりあえず審査員向けのコメントで説明   →  その後、ビルドを⼯工夫してJP版からPassKitへの参照をなくした アプリの設定でApple

     Payが有効になっていないの に実装が⼊入っているんだけど 
  26. 最後に宣伝 メルカリで開発・運⽤用している汎⽤用プッシュ 通知サーバ「Gaurun(がうるん)」を公開 しました!  Go⾔言語!  OSS!   https://github.com/mercari/gaurun