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

Easy pay with  Pay

Easy pay with  Pay

Volodymyr Hryhoriev

Alexander Saenko

June 15, 2019
Tweet

More Decks by Alexander Saenko

Other Decks in Programming

Transcript

  1. - ❓ What is Pay - Algorithm - ⚙ Integration

    - ✅ Testing - & Review - Estimation Overview
  2. Secure - DAN instead of actual card number - sensitive

    data is stored in Secure Element - payment data is encrypted - dynamic security code instead of static CVV
  3. Secure - DAN instead of actual card number - sensitive

    data is stored in Secure Element - payment data is encrypted - dynamic security code instead of static CVV
  4. Secure - DAN instead of actual card number - sensitive

    data is stored in Secure Element - payment data is encrypted - dynamic security code instead of static CVV
  5. Secure - DAN instead of actual card number - sensitive

    data is stored in Secure Element - payment data is encrypted - dynamic security code instead of static CVV
  6. Pay works - within apps (iOS >= 8.1, watchOS >=

    3.0) - in Safari (iOS >= 10.0, masOS >= Sierra) - with PoS via NFC
  7. Pay works - within apps (iOS >= 8.1, watchOS >=

    3.0) - in Safari (iOS >= 10.0, masOS >= Sierra) - with PoS via NFC
  8. Pay works - within apps (iOS >= 8.1, watchOS >=

    3.0) - in Safari (iOS >= 10.0, masOS >= Sierra) - with PoS via NFC
  9. Developers benefits - higher conversion rate - higher users satisfactions

    - highly supported by ecosystem - engineers learn something new
  10. Developers benefits - higher conversion rate - higher users satisfactions

    - highly supported by ecosystem - engineers learn something new
  11. Developers benefits - higher conversion rate - higher users satisfactions

    - highly supported by ecosystem - engineers learn something new
  12. Developers benefits - higher conversion rate - higher users satisfactions

    - highly supported by ecosystem - engineers learn something new
  13. Display Payment Request Algorithm Merchant or PSP Server App iOS

    Apple Pay Server Authorize Payment Generate Payment Data
  14. Display Payment Request Algorithm Merchant or PSP Server App iOS

    Apple Pay Server Authorize Payment Generate Payment Data Encrypt payment Data Return Encrypted Payment
  15. Display Payment Request Algorithm Merchant or PSP Server App iOS

    Apple Pay Server Authorize Payment Generate Payment Data Encrypt payment Data Return Encrypted Payment Receive Payment Data
  16. Display Payment Request Algorithm Merchant or PSP Server App iOS

    Apple Pay Server Authorize Payment Generate Payment Data Encrypt payment Data Return Encrypted Payment Receive Payment Data Charge Payment Return Payment Status
  17. Display Payment Request Algorithm Merchant or PSP Server App iOS

    Apple Pay Server Authorize Payment Generate Payment Data Encrypt payment Data Return Encrypted Payment Receive Payment Data Charge Payment Return Payment Status Dismiss Sheet
  18. Apple Developer Account - create merchant ID - set merchant

    ID inside App ID - create payment certificate - using CSR generated by Payment Service Provider - using own CSR (certificate signing request)
  19. Apple Developer Account - create merchant ID - set merchant

    ID inside App ID - create payment certificate - using CSR generated by Payment Service Provider - using own CSR (certificate signing request)
  20. Apple Developer Account - create merchant ID - set merchant

    ID inside App ID - create payment certificate - using CSR generated by Payment Service Provider - using own CSR (certificate signing request)
  21. Xcode - add Apple ID - Important: access to developer

    resources! - turn on `Apple Pay` in capabilities - select used merchant IDs - several targets = several entitlements files
  22. Xcode - add Apple ID - Important: access to developer

    resources! - turn on `Apple Pay` in capabilities - select used merchant IDs - several targets = several entitlements files
  23. Xcode - add Apple ID - Important: access to developer

    resources! - turn on `Apple Pay` in capabilities - select used merchant IDs - several targets = several entitlements files
  24. Payment Service Provider - select existed - payment service provider

    - e-commerce platform - use own implementation
  25. Payment Service Provider - select existed - payment service provider

    - e-commerce platform - use own implementation
  26. Payment Service Provider - select existed - payment service provider

    - e-commerce platform - use own implementation
  27. UX - Pay as default/first method - accelerate single-item purchase

    (product detail) - accelerate multi-item purchase (checkout) - no sign in/up process - Important: request only essential info in Pay sheet - Important: use Pay button by purpose!
  28. UX - Pay as default/first method - accelerate single-item purchase

    (product detail) - accelerate multi-item purchase (checkout) - no sign in/up process - Important: request only essential info in Pay sheet - Important: use Pay button by purpose!
  29. UX - Pay as default/first method - accelerate single-item purchase

    (product detail) - accelerate multi-item purchase (checkout) - no sign in/up process - Important: request only essential info in Pay sheet - Important: use Pay button by purpose!
  30. UX - Pay as default/first method - accelerate single-item purchase

    (product detail) - accelerate multi-item purchase (checkout) - no sign in/up process - Important: request only essential info in Pay sheet - Important: use Pay button by purpose!
  31. UX - Pay as default/first method - accelerate single-item purchase

    (product detail) - accelerate multi-item purchase (checkout) - no sign in/up process - Important: request only essential info in Pay sheet - Important: use Pay button by purpose!
  32. UX - Pay as default/first method - accelerate single-item purchase

    (product detail) - accelerate multi-item purchase (checkout) - no sign in/up process - Important: request only essential info in Pay sheet - Important: use Pay button by purpose!
  33. UI Use API and artworks provided by Apple: - button

    (PKPaymentButton) - fully localized - vector scalable - mark - Important: it is not a button - Important: don’t modify, adjust only height - Important: use only with other marks
  34. UI Use API and artworks provided by Apple: - button

    (PKPaymentButton) - fully localized - vector scalable - mark - Important: it is not a button - Important: don’t modify, adjust only height - Important: use only with other marks
  35. UI Use API and artworks provided by Apple: - button

    (PKPaymentButton) - fully localized - vector scalable - mark - Important: it is not a button - Important: don’t modify, adjust only height - Important: use only with other marks
  36. UI Use API and artworks provided by Apple: - button

    (PKPaymentButton) - fully localized - vector scalable - mark - Important: it is not a button - Important: don’t modify, adjust only height - Important: use only with other marks
  37. PKPaymentAuthroizationControllerDelegate Notify about - payment will/did authorization - payment finishing

    - selection of shipping method - selection of shipping contact - selection of payment method
  38. PKPaymentAuthroizationControllerDelegate Notify about - payment will/did authorization - payment finishing

    - selection of shipping method - selection of shipping contact - selection of payment method
  39. PKPaymentAuthroizationControllerDelegate Notify about - payment will/did authorization - payment finishing

    - selection of shipping method - selection of shipping contact - selection of payment method
  40. PKPaymentAuthroizationControllerDelegate Notify about - payment will/did authorization - payment finishing

    - selection of shipping method - selection of shipping contact - selection of payment method
  41. PKPaymentAuthroizationControllerDelegate Notify about - payment will/did authorization - payment finishing

    - selection of shipping method - selection of shipping contact - selection of payment method
  42. ✅ Testing - use simulator for UI only - show

    one card for each supported network - Important: generate empty paymentData! - create a Sandbox Tester Account - use test cards provided by - Important: don’t login to App Store! - provide tests cards, use them - test integration with Payment Service Provider
  43. ✅ Testing - use simulator for UI only - shows

    one card for each supported network - Important: generates empty paymentData! - create a Sandbox Tester Account - use test cards provided by - Important: don’t login to App Store! - provide tests cards, use them - test integration with Payment Service Provider
  44. - use simulator for UI only - shows one card

    for each supported network - Important: generates empty PKPaymentToken.paymentData! - create a Sandbox Tester Account - use test cards provided by - Important: don’t login to App Store! - provide tests cards, use them - test integration with Payment Service Provider ✅ Testing
  45. Testing - use simulator for UI only - shows one

    card for each supported network - Important: generates empty PKPaymentToken.paymentData! - create a Sandbox Tester Account - use test cards provided by - Important: don’t login to App Store! - test integration with Payment Service Provider
  46. ✅ Testing - use simulator for UI only - shows

    one card for each supported network - Important: generates empty PKPaymentToken.paymentData! - create a Sandbox Tester Account - use test cards provided by - Important: don’t login to App Store! - test integration with Payment Service Provider
  47. ✅ Testing - use simulator for UI only - shows

    one card for each supported network - Important: generates empty PKPaymentToken.paymentData! - create a Sandbox Tester Account - use test cards provided by - Important: don’t login to App Store! - test integration with Payment Service Provider
  48. & Review - provide all info about purchase prior to

    sale - use Pay UI according to HIG: Apple Pay - special rules for subscriptions - approval to accept donations with Pay
  49. & Review - provide all info about purchase prior to

    sale - use Pay UI according to HIG: Apple Pay - special rules for subscriptions - approval to accept donations with Pay
  50. & Review - provide all info about purchase prior to

    sale - use Pay UI according to HIG: Apple Pay - special rules for subscriptions - approval to accept donations with Pay
  51. & Review - provide all info about purchase prior to

    sale - use Pay UI according to HIG: Apple Pay - special rules for subscriptions - approval to accept donations with Pay
  52. - receive access to developer resources - paymentSummaryItems.last is a

    payment total value - merchantIdentifier must match entitlements - simulator generates empty paymentData - don’t forget to create payment certificate - don’t log in to App Store via tester account ❗Important
  53. - receive access to developer resources - paymentSummaryItems.last is a

    payment total value - merchantIdentifier must match entitlements - simulator generates empty paymentData - don’t forget to create payment certificate - don’t log in to App Store via tester account ❗Important
  54. - receive access to developer resources - paymentSummaryItems.last is a

    payment total value - merchantIdentifier must match entitlements - simulator generates empty paymentData - don’t forget to create payment certificate - don’t log in to App Store via tester account ❗Important
  55. - receive access to developer resources - paymentSummaryItems.last is a

    payment total value - merchantIdentifier must match entitlements - simulator generates empty paymentData - don’t forget to create payment certificate - don’t log in to App Store via tester account ❗Important
  56. - receive access to developer resources - paymentSummaryItems.last is a

    payment total value - merchantIdentifier must match entitlements - simulator generates empty paymentData - don’t forget to create payment certificate - don’t log in to App Store via tester account ❗Important
  57. - receive access to developer resources - paymentSummaryItems.last is a

    payment total value - merchantIdentifier must match entitlements - simulator generates empty paymentData - don’t forget to create payment certificate - don’t log in to App Store via tester account ❗Important
  58. - receive access to developer resources - paymentSummaryItems.last is a

    payment total value - merchantIdentifier must match entitlements - simulator generates empty paymentData - don’t forget to create payment certificate - don’t log in to App Store via tester account specialfor ❗Important specialforwork
  59. Links - Apple Pay Programming Guide - Human Interface Guidelines:

    Apple Pay - All WWDC videos about Apple Pay - Apple Pay Tutorial: Getting Started - How Apple Pay Works Under the Hood - ApplePay token decryptor (macOS app) - Apple Pay on the Web Demo - App Store Review Guidelines: Apple Pay