Giter Club home page Giter Club logo

ios-sdk-1's Introduction

PayPal iOS SDK

Welcome to PayPal's iOS SDK. This library will help you accept card, PayPal, Venmo, and alternative payment methods in your iOS app.

FAQ

Availability

The SDK is currently in the development process. This product is being developed fully open source - throughout the development process, we welcome any and all feedback. Aspects of the SDK will likely change as we develop the SDK. We recommend using the SDK in the sandbox environment until an official release is available. This README will be updated with an official release date once it is generally available.

Contribution

As the SDK is moved to general availability, we will be adding a contribution guide for developers that would like to contribute to the SDK. If you have suggestions for features that you would like to see in future iterations of the SDK, please feel free to open an issue, PR, or discussion with suggestions. If you want to open a PR but are unsure about our testing strategy, we are more than happy to work with you to add tests to any PRs before work is merged.

Support

The PayPal iOS SDK supports a minimum deployment target of iOS 13+ and requires Xcode 13.2+ and macOS Big Sur 11.3+. See our Client Deprecation policy to plan for updates.

Package Managers

This SDK supports:

  • CocoaPods
  • Swift Package Manager

Languages

This SDK supports Swift 5.1+. This SDK is written in Swift.

UI Frameworks

This SDK supports:

  • UIKit
  • SwiftUI

Modularity

The PayPal iOS SDK is comprised of various submodules.

  • Card
  • PayPal
  • ...

To accept a certain payment method in your app, you only need to include that payment-specific submodule.

Sample Code

// STEP 0: Fetch an ACCESS_TOKEN and ORDER_ID from your server.

// STEP 1: Create a PaymentConfiguration object
paymentConfig = PaymentConfig(token: ACCESS_TOKEN)

// STEP 2: Create payment method client objects
cardClient = CardClient(config: paymentConfig)

// STEP 3: Collect relevant payment method details
card = Card(number: 4111111111111111, cvv: 123, ...)

// STEP 4: Call checkout method
cardClient?.checkoutWithCard(orderID: ORDER_ID, card: card) { result in
    switch result {
    case .success(let orderId):
      // Send orderID to your server to process the payment
    case .error(let error):
      // handle checkout error
    }
}

// STEP 5: Send orderID to your server to capture/authorize

Testing

This project uses the XCTest framework provided by Xcode. Every code path should be unit tested. Unit tests should make up most of the test coverage, with integration, and then UI tests following.

This project also takes advantage of Fastlane to run tests through our CI and from terminal. In order to invoke our unit tests through terminal, run the following commands from the root level directory of the repository:

bundle install
bundle exec fastlane unit_tests

If you would like to get the code coverage for all of the modules within the iOS-SDK, run the following:

bundle install
bundle exec fastlane coverage

CI

GitHub Actions CI will run all tests and build commands per package manager on each PR.

Local Testing

TBD until development progresses. We will use Rake, Fastlane, or some other tool for easy command-line build tasks.

Release Process

This SDK follows Semantic Versioning. The release process will be automated via GitHub Actions.

Analytics

Client analytics will be collected via Lighthouse/FPTI.

ios-sdk-1's People

Contributors

sshropshire avatar jaxdesmarais avatar scannillo avatar jcnoriega avatar jonathajones avatar sarahkoop avatar minhthenguyen avatar kgangineni avatar kaylagalway avatar gesa avatar paypalsdk avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.