Checkout with PayPal is a one-time payment checkout experience.
Invoking the Checkout with PayPal Flow
First, make sure you have registered your URL type and updated your app delegate. Then, use BTPayPalDriver
and BTPayPalRequest
to start the process. A transaction amount is required to invoke the one-time payment flow. An example integration might look like this:
// MyViewController.m
#import "MyViewController.h"
#import "BraintreePayPal.h"
@interface MyViewController () <BTAppSwitchDelegate, BTViewControllerPresentingDelegate>
@property (nonatomic, strong) BTAPIClient *braintreeClient;
@property (nonatomic, strong) BTPayPalDriver *payPalDriver;
@end
@implementation MyViewController
- (void)startCheckout {
// Example: Initialize BTAPIClient, if you haven't already
self.braintreeClient = [[BTAPIClient alloc] initWithAuthorization:@"<#CLIENT_AUTHORIZATION#>"];
BTPayPalDriver *payPalDriver = [[BTPayPalDriver alloc] initWithAPIClient:self.braintreeClient];
payPalDriver.viewControllerPresentingDelegate = self;
payPalDriver.appSwitchDelegate = self; // Optional
// Specify the transaction amount here. "2.32" is used in this example.
BTPayPalRequest *request= [[BTPayPalRequest alloc] initWithAmount:@"2.32"];
request.currencyCode = @"USD"; // Optional; see BTPayPalRequest.h for other options
[payPalDriver requestOneTimePayment:request completion:^(BTPayPalAccountNonce * _Nullable tokenizedPayPalAccount, NSError * _Nullable error) {
if (tokenizedPayPalAccount) {
NSLog(@"Got a nonce: %@", tokenizedPayPalAccount.nonce);
// Access additional information
NSString *email = tokenizedPayPalAccount.email;
NSString *firstName = tokenizedPayPalAccount.firstName;
NSString *lastName = tokenizedPayPalAccount.lastName;
NSString *phone = tokenizedPayPalAccount.phone;
// See BTPostalAddress.h for details
BTPostalAddress *billingAddress = tokenizedPayPalAccount.billingAddress;
BTPostalAddress *shippingAddress = tokenizedPayPalAccount.shippingAddress;
} else if (error) {
// Handle error here...
} else {
// Buyer canceled payment approval
}
}];
}
@end
Shipping address
Shipping addresses may or may not be collected during the Checkout with PayPal flow. However, if you choose to collect shipping addresses yourself, it can be passed along with the your server side Transaction.Sale
call. Look at the Server-side page for more information.
Country support
PayPal is available to merchants in all countries that we support and to customers in 140+ countries.
Currency presentment
The currency of the transaction is presented to the customer in the Checkout with PayPal flow. We support all currencies that PayPal REST APIs support.
See the server-side section for details on charging a transaction in a specific currency.