Mobile Checkout Integrations

@mobile-checkout-integrations

We work on mobile checkout SDKs.

Public team

Joined on Jan 6, 2021

  • Figma: https://www.figma.com/file/gzf2KienCxmCJiUVkk4hF0/MXO---Production-Hand-off?type=design&node-id=1568%3A43247&mode=design&t=qubGYWXGvKrRZZYR-1 Use Cases getUserProfileData() - suspend / async await functionuser image URL or user initials first and last name user email address logoutUser() - suspend / async await function getUserProfileUrls() - suspend / async await function
     Like  Bookmark
  • General Mobile Compentencies Proficent in Swift or Kotlin Experience with / understands nuances of mobile SDK development Understands mobile build system and dependency managementAndroid: Gradle, Maven Repositories iOS: Swift Package Manager, Cocoapods, and Carthage UI Presentment Strength: Able to build out and style native UI
     Like  Bookmark
  • NOTE: The contents of this page are now outdated. Refer to this doc for the latest auth latency duration pairs. We need to be able to calculate customer interaction time and customer percieved latency for the following auth flows: Web Auth - measure when auth is invoked to when an accessToken is returned Native OTP - measure CIT and CPL for all native screens Native OTP with web fallback - measure when auth is invoked to when an accessToken is returned Native LLS (launched through either native OTP or web auth flows) - measure when auth is invoked to when an accessToken is returned Solution Decision
     Like  Bookmark
  •  Like  Bookmark
  • Networking headers typed responses / result method networkingClient.createAccessToken(client: "SSS") { result in switch result { case .succes(let model): //
     Like  Bookmark
  • PayPal Spec If a merchant wants to integrate with the PayPal module, these are the steps they would take. Import PayPalPayments at the top of their file Create a PaymentsConfig object using their client Id and return Url Create a PayPalClient object using that configuration Set the delegate of the PayPalClient to an object that should receive messages from the SDK, and handle the events (approval, cancellation, errors, and shipping updates) Start the checkout experience using an orderId (which would have been retrieved by the merchant outside the SDK) Swift Interface
     Like  Bookmark
  • Questions Need clearer expectations from tickets and phases of the project. Grooming meetings with entire team? Defining "done" for each ticket as a group Is this project ready for SDK developers? Don't know which APIs
     Like  Bookmark
  • class ViewController { lazy var client: CardClient = { let config = Shared.paypalConfig let client = CardClient(config: config) client.xyz = ... return client }() func viewDidLoad() { ..
     Like  Bookmark
  • Initializing the iOS SDK Assumptions: Each submodule of the SDK has a root object can be initialized in the same way - they are passed a shared configuration object, along with whatever parameters are necessary for that specific payment method. We're assuming the root object would be a ...Client, and the configuration object would be a PayPalConfiguration let config = PayPalConfiguration( ... ) let cardClient = CardClient(config: config) let applePayClient = ApplePayClient(config: config, appleMerchantId: String)
     Like  Bookmark
  • Initialization In order to create a contract around our card field UI, they would first create a client object, and pass that client object to a UI components type. /// Contains the shared data the SDK would need for each payment method /// in order to function properly public struct CoreConfig { let clientId: String let currency: Currency ( enum ) let locale: ?
     Like  Bookmark
  • BT SDK Card Client initized with an API client Two top level functions - (void)tokenizeCard:(BTCard *)card completion:(void (^)(BTCardNonce *tokenizedCard, NSError *error))completion params: card object and completion flow:
     Like  Bookmark
  • Git Workflow Feature & Bugfix Workflow Create a feature/bugfix branch off of main Commit changes to feature/bugfix branch Open PR from feature/bugfix branch into main Ensure CI is passing on feature/bugfix branch Squash and merge PR into main Delete feature/bugfix branch
     Like  Bookmark
  • Programming Language Kotlin Pros Extension functions/properties Similarity to Swift for maintaining iOS parity Help with developer brand Coroutines Null safety Delegation patterns for composition over inheritance situations
     Like  Bookmark
  • Things To Instrument SDK API Usages How is the start function being called? What parameters are being used? How is the set function being called?
     Like  Bookmark
  • Branches develop -> nothing changes main -> used for internal releases for Venice & Venmo external -> used for external releases for third party merchants Next Steps Notify NXO team about the external branch. Cody to create external branch sometime this week & update gradle.
     Like  Bookmark
  • Dev Console Proposed Updates Adding additional Mobile Checkout SDK toggle The "Return URL" field does not represent what the iOS / Android SDKs use this field for. THe copy around what the Return URL field is does is misleading to developers wanting to integrate with the native SDKs "Use Native Checkout SDK" should be its own top level check box When selected, user can then be prompted to provide any number of their own return URL values, with copy describing that these values are used as part of the authentication handshake, and not the transaction process User can also be prompted here to provide privacy policy URL, user agreement URL, and to allow us to use personal full name and email address (so these scopes can be added to their acct) Updating Developer Console Copy
     Like  Bookmark
  • First Party Migration Plan We'll be migrating first party specific code into the internal flavor. This will ensure first party still works as intended while cleaning up the API for third party release. PayPalCheckoutSdk Remove all deprecated third party functionality. Move PayPalCheckoutSdk into internal flavor. Migrate Dagger SdkComponent initialization to work with both PayPalCheckoutSdk & PayPalCheckout. 3a. We could move this into DebugConfigManager and that would resolve the issue for both platforms. Migrate cancelCheckoutAndExit to be outside of PayPalCheckoutSdk as it's used by PYPLCheckoutUtils.
     Like  Bookmark
  • 1/14/21 Config Meeting Checkout { onAuthenticate: () -> () = { } onAuthStepUp: () -> () = { } OnShippingChange? = nil (pending implementation?) OnLoggedOut? = nil CreateOrder? = nil, OnApprove? = nil, // automatically make capture/authorize OnCancel? = nil, OnError? = nil,
     Like  Bookmark
  • enum Operations: Int { case update case add case replace etc } enum Paths { case amount
     Like  Bookmark
  • Requirements Eligibility Need to add support for Venmo, PayPal Credit and Pay Later. Determine buttons' eligibility with GraphQL query fundingEligibility: Note: Preferably make eligibility call when setting config to button? All of the fields are optional, we need to determine which fields are available for us when me make the call?
     Like  Bookmark