This is a sample repository showcasing how to integrate the Native Checkout experience into your iOS
application.
Table of Contents:
Create an application at PayPal Applications. You can retrieve your client id, client secret, and create a return url there.
In order to set the proper application scope permissions follow the documentation for settings scopes at Initial Setup Documentation.
After creating your application, run the following commands at the root directory:
# Set client id and secret for server and client
$ ./bin/setids "<your_client_id>" "<your_client_secret>" "<return_url>"
# Setup dependencies, install PayPayCheckout with Cocoapods, open workspace, and start server
$ ./bin/setup --cocoapods
Your CLIENT_ID
and CLIENT_SECRET
are retrieved from the applications portal. Your return_url
will be retrieved from there as well, but you will need to set the proper scopes before your uri can be utilized.
Note: Please note run this on Simulator as you will be running a local server.
In order for this project to run properly we need to create an application at PayPal Applications. Make sure you login and create your appropriate application. You can find additional information on our documentation here. Then you need to ensure that you have a .env
file inside the node_checkout/
directory which contains your CLIENT_ID
and CLIENT_SECRET
.
We've automated away the process for you to create your .env file and finding / replacing any source code with the client_id and return_url by running the following command:
$ ./bin/setids "<your_client_id>" "<your_client_secret>" "<return_url>"
As a result after running this script the CLIENT_ID
and CLIENT_SECRET
environment variables in .env file, and the <client_id>
and <return_url>
in the sample apps' source code will be set to the values you provided.
If you do not want to expose your CLIENT_SECRET
into your bash history, you can optionally choose to only include your CLIENT_ID
, then bash or zsh will prompt you to enter your CLIENT_SECRET
:
$ ./bin/setids "<your_client_id>"
Please enter your [client secret]: "<your_client_secret>"
Please enter your [client return url]: "<return_url>"
Checking for places where your client ids, secrets, and return url are used
[done] Check for an existing .env file
[done] Updating objective-c files for CLIENT_ID...
[done] Updating swift files for CLIENT_ID...
[done] Updating objective-c files for return_url...
[done] Updating swift files for return_url...
The node checkout
service by default will run the node service through [email protected] version
and this is done through nvm
and the local .nvmrc
file in ./node_checkout/
. The ./bin/setup
script ensures that nvm
is installed if you do not have it installed locally. If you choose to switch back to your original node version
after running the sample demo, you can simply run nvm use default
.
Please note this step is optional
The node checkout
service can optionally run with Docker. You can install Docker here, or you can let the ./bin/setup
script install docker for you. Please note that you will require docker-compose
support.
To use via Docker just run:
$ ./bin/setup --use-docker
Note: You will need to ensure that Docker is running before you execute ./bin/setup
, if you are installing docker from the ./bin/setup
script you can run it again since the script will ensure Docker opens after install.
There are two steps required to run the project:
1. Set Client ID / Client Secret / Return URL
2. Setup Dependencies
The above two steps are handled by two scripts, ./bin/setids
and ./bin/setup
, respectively.
Run the following commands at the project root level:
$ ./bin/setids "<your_client_id>" "<your_client_secret>" "<your_return_url>"
# optionally just enter client id and bash will prompt for secret, and return url
Setting up dependencies will be handled with the ./bin/setup
script. In detail, this activates a build script which runs the following steps:
- Check if Homebrew, Docker (if we specified it), nvm, and Cocoapods/Carthage are installed
- Run
pod install
orcarthage update
(depending on whether you specified--cocoapods
or--carthage
). This will download binaries for the project - Open the workspace,
Samples.xcworkspace
- Check to see if we've specified
--use-docker
- If we've specified
--use-docker
, we will rundocker-compose up
, this will create the container, install dependencies in container, and run on port 3000 - If we did not specify
--use-docker
which is the default flow, then we will usenvm
to install[email protected]
then switch to that vianvm use 10.17.0
, and finallynpm install && npm start
- If we've specified
We provide three ways you can install our SDK: via Cocoapods, Carthage, or Swift Package Manager.
Run the following commands at the project root level:
$ ./bin/setup --cocoapods
# will install pod if not already installed, run pod install using our provided Podfile, and install any programs you require
Run the following commands at the project root level:
$ ./bin/setup --carthage
# will install carthage if not already installed, run carthage update using our provided Cartfile, and install any programs you require
Note: The following Search Paths
must be present under Framework Search Paths
for both Samples.Swift
and Samples.Objc
:
$(PROJECT_DIR)/../Carthage/Build/iOS
Run the following commands at the project root level:
$ ./bin/setup
# will install any programs you require
Then you can install the PayPalCheckout SDK via Swift Package Manager by following Apple's package integration guide, while specifying https://github.com/paypal/paypalcheckout-ios.git
as the source git repository.
NVM may encounter issues if installed via Homebrew
. The official NVM repository does not support Homebrew
, so it is advised that you uninstall from Homebrew
via:
brew unlink nvm
brew uninstall nvm
And remove any artifacts:
rm -rf ~/.nvm
rm -rf ~/.npm
Then rerun the ./bin/setup
script to install nvm
.