Go to file
kingst-stripe b615a1db85
Create module tests for StripeScan (#472)
* Set up tests for StripeScan

* Comment out UIApplication variables

* remove the legacy tests to see if there is something else going on

* added no-cache for testing

* Get legacy tests to work
2021-11-10 10:25:36 -08:00
.circleci Create module tests for StripeScan (#472) 2021-11-10 10:25:36 -08:00
.github Adjust issue / pull request template (#960) 2018-06-07 10:00:23 -07:00
.jazzy/theme IDPROD-2142 part2: generate docs index.html page (#302) 2021-08-04 10:27:47 -07:00
BuildConfigurations Bump VERSION 2021-10-18 14:18:48 -07:00
Example IDPROD-2749: Error Screen (#460) 2021-11-05 19:33:12 -07:00
FauxPasConfig Setup CircleCI 2020-10-08 17:54:02 -07:00
IntegrationTester IDPROD-2452 part3: StripeUICore dependencies (#353) 2021-09-10 17:25:53 -07:00
LocalizationTester Adds new localizations and updates screenshot generation (#322) 2021-10-18 11:12:33 -07:00
OriginalAssets/Stripe.xcassets no assets 2021-03-01 16:56:36 -08:00
Stripe Remove Klarna until we are ready to do a PS feature release (#456) 2021-11-03 10:43:11 -06:00
Stripe.xcodeproj PaymentSheet UI for Klarna (#453) 2021-11-02 14:02:58 -06:00
Stripe.xcworkspace Start StripeApplePay framework (#466) 2021-11-09 13:13:03 -08:00
Stripe3DS2 Updates expired cert (#459) 2021-11-04 13:05:40 -07:00
StripeApplePay Start StripeApplePay framework (#466) 2021-11-09 13:13:03 -08:00
StripeCore IDPROD-2739 part 2: Screen routing tests (#457) 2021-11-05 15:48:28 -07:00
StripeIdentity IDPROD-2740: Document selection persistence & screen routing (#464) 2021-11-09 12:21:27 -08:00
StripeScan sort file names 2021-11-08 17:59:56 -08:00
StripeUICore IDPROD-2540 part2: VerificationPage endpoint + models (#444) 2021-10-29 12:05:11 -07:00
StripeiOSResources remove CFBundleExecutable from resources bundle 2016-08-24 22:51:20 -04:00
Tests PaymentSheet UI for Klarna (#453) 2021-11-02 14:02:58 -06:00
ci_scripts Allow combining multiple modules when generating docs (#451) 2021-10-29 20:21:52 -04:00
docs Update docs (#452) 2021-11-01 16:48:10 -04:00
fastlane Create module tests for StripeScan (#472) 2021-11-10 10:25:36 -08:00
readme-images IDPROD-2141: Add StripeIdentity README & configure docs (#310) 2021-08-04 10:27:47 -07:00
stripe3ds2-support Update export_builds script to zip all frameworks together (#291) 2021-07-14 19:11:10 -07:00
.clang-format introduce style defaults with clang-format 2014-10-22 15:20:32 -04:00
.cocoapods.yml Move each example app into its own directory 2021-03-23 15:53:40 -07:00
.gitignore IDPROD-2142 part 1: Update docs scripts for multiple modules (#300) 2021-08-04 10:27:47 -07:00
.jazzy.yaml IDPROD-2142 part2: generate docs index.html page (#302) 2021-08-04 10:27:47 -07:00
.swift-format Re-run swift-format 2021-03-01 17:04:01 -08:00
.swiftlint.yml Swift conversion review: Update project files, scripts, and embedded dependencies (#1695) 2020-11-04 15:43:09 -08:00
CHANGELOG.md Backfill migration/changelog for 21.8.0 and 21.9.0 (#432) 2021-10-21 12:05:31 -06:00
CONTRIBUTING.md Move CONTRIBUTING.md to root directory 2017-08-03 11:28:46 -07:00
Cartfile.private Prepare tests and UI Examples app for modularized API Client (#382) 2021-09-24 17:02:34 -07:00
Cartfile.resolved Merge origin/mc (#135) 2021-03-01 15:12:20 -08:00
Gemfile Allow combining multiple modules when generating docs (#451) 2021-10-29 20:21:52 -04:00
Gemfile.lock Allow combining multiple modules when generating docs (#451) 2021-10-29 20:21:52 -04:00
LICENSE Merge origin/mc (#135) 2021-03-01 15:12:20 -08:00
MIGRATING.md Backfill migration/changelog for 21.8.0 and 21.9.0 (#432) 2021-10-21 12:05:31 -06:00
PRIVACY.md Add PRIVACY.md (#43) 2020-12-14 16:00:46 -08:00
Package.swift Start StripeApplePay framework (#466) 2021-11-09 13:13:03 -08:00
README.md Update rEADME 2021-10-18 13:26:55 -07:00
STYLEGUIDE.md Move each example app into its own directory 2021-03-23 15:53:40 -07:00
Stripe-umbrella.h Release 3DS2 framework source code (#62) 2021-01-05 16:50:08 -08:00
Stripe.podspec Bump VERSION 2021-10-18 14:18:48 -07:00
StripeApplePay.podspec Start StripeApplePay framework (#466) 2021-11-09 13:13:03 -08:00
StripeCore.podspec Bump VERSION 2021-10-18 14:18:48 -07:00
StripeIdentity.podspec Bump VERSION 2021-10-18 14:18:48 -07:00
StripeScan.podspec Pass the cocoapods lint check 2021-11-08 17:54:57 -08:00
StripeUICore.podspec Bump VERSION 2021-10-18 14:18:48 -07:00
VERSION Bump VERSION 2021-10-18 14:18:48 -07:00
modules.yaml Start StripeApplePay framework (#466) 2021-11-09 13:13:03 -08:00

README.md

Stripe iOS SDK

Travis CocoaPods Carthage compatible License Platform

The Stripe iOS SDK makes it quick and easy to build an excellent payment experience in your iOS app. We provide powerful and customizable UI screens and elements that can be used out-of-the-box to collect your users' payment details. We also expose the low-level APIs that power those UIs so that you can build fully custom experiences.

Get started with our 📚 integration guides and example projects, or 📘 browse the SDK reference.

Learn about our Stripe Identity iOS SDK to verify the identity of your users on iOS.

Updating to a newer version of the SDK? See our migration guide and changelog.

Table of contents

Features

Simplified security: We make it simple for you to collect sensitive data such as credit card numbers and remain PCI compliant. This means the sensitive data is sent directly to Stripe instead of passing through your server. For more information, see our integration security guide.

Apple Pay: We provide a seamless integration with Apple Pay.

SCA-ready: The SDK automatically performs native 3D Secure authentication if needed to comply with Strong Customer Authentication regulation in Europe.

Stripe API: We provide low-level APIs that correspond to objects and methods in the Stripe API. You can build your own entirely custom UI on top of this layer, while still taking advantage of utilities like STPCardValidator to validate your users input.

Native UI: We provide native screens and elements to collect payment details. For example, PaymentSheet is a prebuilt UI that combines all the steps required to pay - collecting payment details, billing details, and confirming the payment - into a single sheet that displays on top of your app.

Card scanning: We support card scanning on iOS 13 and higher. See our Card scanning section.

Localized: We support the following localizations: Bulgarian, Catalan, Chinese (Hong Kong), Chinese (Simplified), Chinese (Traditional), Croatian, Czech, Danish, Dutch, English (US), English (United Kingdom), Estonian, Filipino, Finnish, French, French (Canada), German, Greek, Hungarian, Indonesian, Italian, Japanese, Korean, Latvian, Lithuanian, Malay, Maltese, Norwegian Bokmål, Norwegian Nynorsk (Norway), Portuguese (Brazil), Polish, Portuguese, Romanian, Russian, Slovakian, Slovenian, Spanish, Spanish (Latin America), Swedish, Turkish, Turkmen, and Vietnamese.

If you're selling digital products or services that will be consumed within your app, (e.g. subscriptions, in-game currencies, game levels, access to premium content, or unlocking a full version), you must use Apple's in-app purchase APIs. See the App Store review guidelines for more information. For all other scenarios you can use this SDK to process payments via Stripe.

Releases

We support Cocoapods, Carthage, and Swift Package Manager. If you link the library manually, use a version from our releases page and make sure to embed all of the following frameworks:

  • Stripe.xcframework
  • Stripe3DS2.xcframework
  • StripeCore.xcframework
  • StripeUICore.xcframework

To manually link the Stripe Identity iOS SDK, follow these instructions.

If you're reading this on GitHub.com, please make sure you are looking at the tagged version that corresponds to the release you have installed. Otherwise, the instructions and example code may be mismatched with your copy. You can read the latest tagged version of this README and browse the associated code on GitHub using this link.

Requirements

The Stripe iOS SDK requires Xcode 12.2 or later and is compatible with apps targeting iOS 11 or above. We support Catalyst on macOS 10.15 or later.

For iOS 10 support, please use v19.4.0. If you need to support iOS 9, use v17.0.2.

Requirements for the Stripe Identity iOS SDK can be found here.

Getting started

Integration

Get started with our 📚 integration guides and example projects, or 📘 browse the SDK reference for fine-grained documentation of all the classes and methods in the SDK.

Examples

  • Prebuilt UI
    • This example demonstrates how to build a payment flow using our drop-in prebuilt UI component PaymentSheet.
  • Non-Card Payment Examples
    • This example demonstrates how to use STPAPIClient to manually accept various non-card payment methods.

Card scanning

PaymentSheet UI offers built-in card scanning. To enable card scanning, you'll need to set NSCameraUsageDescription in your application's plist, and provide a reason for accessing the camera (e.g. "To scan cards"). Card scanning is supported on devices with iOS 13 or higher.

You can demo this feature in our PaymentSheet example app. When you run the example app on a device, you'll see a "Scan Card" button when adding a new card.

Contributing

We welcome contributions of any kind including new features, bug fixes, and documentation improvements. Please first open an issue describing what you want to build if it is a major change so that we can discuss how to move forward. Otherwise, go ahead and open a pull request for minor changes such as typo fixes and one liners.

Running tests

  1. Install Carthage 0.37 or later (if you have homebrew installed, brew install carthage)
  2. From the root of the repo, run bundle install && bundle exec fastlane stripeios_tests. This will install the test dependencies and run the tests.
  3. Once you have run this once, you can also run the tests in Xcode from the StripeiOS target in Stripe.xcworkspace. Make sure to use the iPhone 8, iOS 13.7 simulator so the snapshot tests will pass.

Migrating from older versions

See MIGRATING.md