PayBright iOS SDK

PayBright iOS SDK is a library written in swift that allows you to add PayBright as a payment option in your own app.


CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods
To integrate PayBright into your Xcode project using CocoaPods, add the following to your Podfile and run pod install

pod 'PayBright'

Usage Overview

PayBright integration consists of two steps: Configure and Checkout


Set the API Key and token obtained from PayBright in PBConfig once (preferably in the AppDelegate's didFinishLaunchingWithOptions) as follows

PBConfig.shared.initialize(environment: .Sandbox, 
                           accountID:   "API_KEY", 
                           apiToken:    "API_TOKEN")


Checkout creation is the process in which a customer uses PayBright to pay for a purchase in your store. This process is governed by PBInstance object (which is set up in PBConfig shared object), and requires four parameters/objects:

  • PBCustomer: details of the customer
  • PBCustomerBilling: customer's billing address details
  • PBCustomerShipping: customer's shipping address details
  • PBProduct: item details


let customerObj = PBCustomer.init(customerEmail:        "[email protected]",
                                  customerFirstName:    "James",
                                  customerLastName:     "Testhetfield",
                                  customerPhone:        nil)

Customer Billing

let customerBillingObj = PBCustomerBilling.init(customerBillingAddress1:    "270 Rue Olier",
                                                customerBillingAddress2:    nil,
                                                customerBillingCity:        "Chicoutimi",
                                                customerBillingCompany:     nil,
                                                customerBillingCountry:     "CA",
                                                customerBillingPhone:       "+1-613-987-6543",
                                                customerBillingState:       "QC",
                                                customerBillingZip:         "G7G 4J3")

Customer Shipping

let customerShippingObj = PBCustomerShipping.init(customerShippingAddress1:     "270 Rue Olier",
                                                  customerShippingAddress2:     nil,
                                                  customerShippingCity:         "Chicoutimi",
                                                  customerShippingCompany:      "Shopify",
                                                  customerShippingCountry:      "CA",
                                                  customerShippingFirstName:    "James",
                                                  customerShippingLastName:     "Testhetfield",
                                                  customerShippingPhone:        "+1-613-987-6543",
                                                  customerShippingState:        "QC",
                                                  customerShippingZip:          "G7G 4J3")


let productObj = PBProduct.init(amount:         2625.0,
                                currency:       "CAD",
                                description:    "PaymentGatewayTesting - #4682855809085",
                                invoice:        "#4682855809085",
                                planID:         nil,
                                platform:       "sdk",
                                reference:      "4682855809085",
                                shopCountry:    "CA",
                                shopName:       "PaymentGatewayTesting",
                                urlCallback:    "",
                                urlCancel:      "",
                                urlComplete:    "")


let instanceObj = PBInstance.init(customerObj:          customerObj,
                                  customerBillingObj:   customerBillingObj,
                                  customerShippingObj:  customerShippingObj,
                                  productObj:           productObj)

Once the PBInstance has been constructed, set it in PBConfig shared object and you may use PBViewController. This initiates the flow which guides the user through the PayBright checkout process. An example of how this is implemented is provided as follows

PBConfig.shared.instanceObj = instanceObj

let pbVC :PBViewController = PBViewController.init(nibName: "PBViewController", bundle: Bundle(for: PBViewController.self))

pbVC.delegate = self

self.navigationController?.pushViewController(pbVC, animated: true)

The flow ends once the user has successfully confirmed the checkout, canceled the checkout, or encountered an error in the process. In each of these cases, PayBright will send a message to the PBWebViewDelegate along with additional information about the result.


A demo app that integrates PayBright is included in the repo.


Xcode 10 is required to use PayBright