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/

Shinichiro Oba

May 13, 2015
Tweet

More Decks by Shinichiro Oba

Other Decks in Programming

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  4. Apple  Payって?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  7. Apple  Payが有効になると

    View full-size slide

  8. 対応している決済システム
    Authorize.Net  
    Braintree  
    Chase  Paymentech  
    CyberSource  
    First  Data  
    Stripe  
    TSYS
    ˞ IUUQTEFWFMPQFSBQQMFDPNBQQMFQBZΑΓൈਮ ݱࡏ

    View full-size slide

  9. Apple  Pay決済の流流れ
    ˞ʮ(FUUJOH4UBSUFEXJUI"QQMF1BZʯ͔ΒҾ༻

    View full-size slide

  10. Apple  Pay対応⼿手順

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  13. Merchant  IDの作成

    View full-size slide

  14. Apple  Payを有効

    View full-size slide

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


    View full-size slide

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

    View full-size slide

  17. Apple  Payボタンの設置例例

    View full-size slide

  18. PKPaymentRequestの⽣生成
    PKPaymentRequest *paymentRequest = [[PKPaymentRequest alloc] init];
    paymentRequest.currencyCode = @"USD";
    paymentRequest.countryCode = @"US";
    paymentRequest.merchantIdentifier = @“";
    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;

    View full-size slide

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

    View full-size slide

  20. PKPaymentAuthorizationView
    Controllerの表⽰示例例

    View full-size slide

  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];
    }

    View full-size slide

  22. Apple  Pay対応の罠

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide