Adyen / adyen-ios
Adyen iOS Drop-in and Components
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing Adyen/adyen-ios in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Overview (README excerpt)
Crawler viewAdyen iOS Adyen iOS provides you with the building blocks to create a checkout experience for your shoppers, allowing them to pay using the payment method of their choice. You can integrate with Adyen iOS in two ways: • iOS Drop-in: an all-in-one solution, the quickest way to accept payments on your iOS app. • iOS Components: one Component per payment method and combine with your own payments flow. SDK lifecycle | Major version | State | Deprecated | End-of-life | |---------------|-------------|---------------|---------------| | 5.x.x | Active | --- | --- | | 4.x.x | Inactive | June 2026 | June 2027 | | 3.x.x | End-of-life | November 2021 | November 2022 | More information about our versioning and the Drop-in/Components lifecycle can be found here. Installation Adyen iOS is available through either CocoaPods or Swift Package Manager. Minimum Requirements • iOS 12.0 • Xcode 15.0 • Swift 5.7 Swift Package Manager • Follow Apple's Adding Package Dependencies to Your App guide on how to add a Swift Package dependency. • Use as the repository URL. • Specify the version to be at least . You can add all modules or select individual modules to add to your integration. The module needs to be explicitly added to support WeChat Pay. The module needs to be explicitly added to support Twint native flow. The module needs to be explicitly added to use the SwiftUI specific helpers. • : all modules except . • : handler for the simplified checkout flow. • : the card components. • : all other payment components except WeChat Pay. • : action components. • : encryption. • : WeChat Pay component. • : Twint component. • : SwiftUI apps specific module. :warning: _Swift Package Manager for Xcode 12.0 and 12.1 has a known issue when it comes to importing a dependency that in turn depend on a binary dependencies. A workaround is described here._ :warning: _ and modules don't support any simulators and can only be tested on a real device._ CocoaPods • Add to your . • Run . You can install all modules or add individual modules, depending on your needs and integration type. The module needs to be explicitly added to support WeChat Pay. The module needs to be explicitly added to use the SwiftUI specific helpers. :warning: _ and modules doesn't support any simulators and can only be tested on a real device._ Swift Package Manager • Follow Apple's Adding Package Dependencies to Your App guide on how to add a Swift Package dependency. • Use as the repository URL. • Specify the version to be at least . You can add all modules or select individual modules to add to your integration. The module needs to be explicitly added to support WeChat Pay. The module needs to be explicitly added to support Twint native flow. The module needs to be explicitly added to use the SwiftUI specific helpers. • : all modules except . • : handler for the simplified checkout flow. • : the card components. • : all other payment components except WeChat Pay. • : action components. • : encryption. • : WeChat Pay component. • : Twint component. • : SwiftUI apps specific module. :warning: _ and modules doesn't support any simulators and can only be tested on a real device._ Drop-in The Drop-in handles the presentation of available payment methods and the subsequent entry of a customer's payment details. It is initialized with the response of [ ][apiExplorer.sessions], and handles the entire checkout flow under the hood. Usage Setting up the Drop-in All Components need an . An instance of wraps your client key, environment, analytics configuration and so on. Please read more here about the client key and how to get one. Use **Environment.test** for environment. When you're ready to accept live payments, change the value to one of our live environments Create an instance of with the response you received from the call and the instance. Call the static function of the by providing the configuration and the delegates, which will asynchronously create and return the session instance. Create a configuration object for . Check specific payment method pages to confirm if you need to include additional required parameters. Some payment methods need additional configuration. For example . These payment method specific configuration parameters can be set in an instance of : Also for voucher payment methods like Doku variants, in order for the to enable the shopper to save the voucher, access to the shopper photos is requested, so a suitable text needs to be added to the key in the application . Presenting the Drop-in Initialize the class and set the instance as the and (if needed) of the instance. Implementing makes the necessary calls to handle the whole flow and notifies your application through its delegate, . To handle the results of the Drop-in, the following methods of should be implemented: --- This method will be invoked when the component finishes without any further steps needed by the application. The application just needs to dismiss the current component, ideally after calling on the component. --- This method is invoked when an error occurred during the use of the Drop-in or the components. You can then call the on the component, dismiss the component's view controller in the completion callback and display an error message. --- This optional method is invoked after a redirect to an external application has occurred. --- Handling an action Actions are handled by the Drop-in via its delegate . Receiving redirect In case the customer is redirected to an external URL or App, make sure to let the know when the user returns to your app. Do this by implementing the following in your : Components In order to have more flexibility over the checkout flow, you can use our Components to present each payment method individually. Implementation details of our Components can be found in our [Components API Reference][reference]. Available Components • [Card Component][reference.cardComponent] • [3D Secure 2 Compone…