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

Easy pay with ๐Ÿ Pay

Easy pay with ๐Ÿย Pay

A speech about Apple Pay. It covers following topics:
- what is Apple Pay
- how to use Apple Pay
- why we should spend time on Apple Pay integration

Video: https://youtu.be/dl0Zj41bomw

Volodymyr Hryhoriev

September 26, 2021
Tweet

More Decks by Volodymyr Hryhoriev

Other Decks in Programming

Transcript

  1. - โ“ What is ๐Ÿ Pay - ๐Ÿ“ Algorithm -

    โš™ Integration - โœ… Testing - & Review - ๐Ÿ—“ Estimation Overview
  2. ๐Ÿ™ˆ Private - ๐Ÿ doesnโ€™t store actual card number -

    ๐Ÿ store only anonymous transactions info
  3. ๐Ÿ™ˆ Private - ๐Ÿ doesnโ€™t store actual card number -

    ๐Ÿ store only anonymous transactions info
  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. ๐Ÿ” 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
  7. ๐Ÿ” 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
  8. ๐Ÿ Pay works - within apps (iOS >= 8.1, watchOS

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

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

    >= 3.0) - in Safari (iOS >= 10.0, masOS >= Sierra) - with PoS via NFC
  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. ๐ŸŽ‰ Developers benefits - ๐Ÿ“ˆ higher conversion rate - ๐Ÿคฉ

    higher users satisfactions - ๐Ÿ’ฏ highly supported by ๐Ÿ ecosystem - engineers learn something new
  14. ๐ŸŽ‰ Developers bene๏ฌts - ๐Ÿ“ˆ higher conversion rate - ๐Ÿคฉ

    higher users satisfactions - ๐Ÿ’ฏ highly supported by ๐Ÿ ecosystem - ๐Ÿ˜‚ engineers learn something new
  15. Display Payment Request ๐Ÿ“ Algorithm Merchant or PSP Server App

    iOS Apple Pay Server Authorize Payment Generate 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
  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
  18. 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
  19. 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
  20. โš™ Integration - ๐Ÿ’ป Apple Developer account - ๐Ÿ”จ Xcode

    - ๐Ÿฆ Payment Service Provider - ๐Ÿ–ผ UI/UX - ๐Ÿš€ Coding
  21. ๐Ÿ’ป 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)
  22. ๐Ÿ’ป 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)
  23. ๐Ÿ’ป 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)
  24. ๐Ÿ”จ Xcode - add Apple ID - Important: access to

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

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

    developer resources! - turn on `Apple Pay` in capabilities - select used merchant IDs - several targets = several entitlements files
  27. ๐Ÿฆ Payment Service Provider - select existed - payment service

    provider - e-commerce platform - use own implementation
  28. ๐Ÿฆ Payment Service Provider - select existed - payment service

    provider - e-commerce platform - use own implementation
  29. ๐Ÿฆ Payment Service Provider - select existed - payment service

    provider - e-commerce platform - use own implementation
  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. ๐Ÿ–ผ 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!
  34. ๐Ÿ–ผ 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!
  35. ๐Ÿ–ผ 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!
  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. ๐Ÿ–ผ 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
  38. ๐Ÿ–ผ 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
  39. ๐Ÿ–ผ 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
  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. ๐Ÿ“ข PKPaymentAuthroizationControllerDelegate Notify about - payment will/did authorization - payment

    finishing - selection of shipping method - selection of shipping contact - selection of payment method
  43. ๐Ÿ“ข PKPaymentAuthroizationControllerDelegate Notify about - payment will/did authorization - payment

    finishing - selection of shipping method - selection of shipping contact - selection of payment method
  44. ๐Ÿ“ข PKPaymentAuthroizationControllerDelegate Notify about - payment will/did authorization - payment

    finishing - selection of shipping method - selection of shipping contact - selection of payment method
  45. โœ… 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
  46. โœ… 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
  47. - ๐Ÿ’ป 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
  48. 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
  49. โœ… 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
  50. โœ… 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
  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. & 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
  53. & 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
  54. & 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
  55. ๐Ÿ—“ Estimation - ๐Ÿ˜Ž simple implementation - from 16 hours

    - sophisticated implementation - up to 40 hours
  56. ๐Ÿ—“ Estimation - ๐Ÿ˜Ž simple implementation - from 16 hours

    - ๐Ÿฅบ sophisticated implementation - up to 40 hours
  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 โ—Important
  59. - 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
  60. - 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
  61. - 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
  62. - 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
  63. - 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
  64. ๐Ÿ”— 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