Skip to content
This repository has been archived by the owner on Feb 9, 2024. It is now read-only.

okraHQ/okra-ios-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Okra Widget iOS SDK

alt text

iOS SDK for implementing the Okra widget - Okra is a safe and secure web drop-in module and this library provides a front-end web (also available in Android and JavaScript) SDK for account authentication and payment initiation for each bank that Okra supports.

Try the demo

Checkout the widget flow to view how the Okra Widget works. Click "See How it Works"

Before getting started

  • Checkout our get started guide to create your developer account and retrieve your Client Token, API Keys, and Private Keys.
  • Create a sandbox customer, so you can get connecting immediately.

Bonus Points

  • Setup Slack Notifications so you can see your API call statuses and re-run calls in real-time!

Example

To run the example project, clone the repo, and open OkraWidget.xcworkspace in the Example directory with Xcode, run and build and you are good to go!

  • In Viewcontroller.swift put the key and token you get from your Okra dashboard
   let dataDictionary:[String:Any] = ["isWebview":true,
                                           "key":"key",
                                           "token":"token",
                                           "products": ["auth","transactions"],
                                           "env":Environment.production.rawValue,
                                           "clientName":"Basey",
                                           "source":"ios",
                                           "color":"#953ab7",
                                           "limit":"24",
                                           "guarantors":guarantor,
                                           "corporate":false,
                                           "connectMessage":"Which account do you want to connect with?",
                                           "callback_url":"",
                                           "redirect_url":"",
                                           "logo":"https://cdn.okra.ng/images/icon.svg",
                                           "widget_success":"Your account was successfully linked to Okra, Inc",
                                           "widget_failed":"Which account do you want to connect with?",
                                           "currency":"NGN",
                                           "exp":"2021-08-06",
                                           "manual":false,
                                           "success_title":"Successfully connect bank",
                                           "success_message":"You have successfully connected your bank account"
        ]
        
        Okra.create(baseController: self, dataDictionary: dataDictionary, okraHandlerDelegate: self)

Development Requirements

  • iOS 10.0+
  • Swift: 5.1
  • Xcode Version: 10.0+

Installation

OkraWidget is available through CocoaPods. To install it, simply add the following line to your Podfile and run pod install:

  • Simply add the following line to your Podfile
  pod 'OkraWidget'
  • Run command
  pod install
  • Write Import statement on your source file
  import OkraWidget

The Basis Of Usage for 4.0.5 and below

import OkraWidget
class ViewController: UIViewController,OkraHandlerDelegate {
    
    
    
    let launchButton = UIButton(type: .system)
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setUpConstraintsAndProperties()
    }
    
    @objc func showExample(){
        
    let okraOptions = OkraOptions(isWebview: true, key: "key", token: "token", products: ["auth","transactions"], env: Environment.production.rawValue, clientName: "Basey")
        Okra.create(baseController: self, okraOptions : okraOptions, okraHandlerDelegate: self)
        
    }
    
    func onSuccess(data: [String : Any]) {
        print("Succesfully connected bank \(data)")
    }
    
    func onError(data: [String : Any]) {
        print("Error Receieved \(data)")
    }
    
    func onClose() {
        print("Closed")
    }
  
}

The Basis Of Usage for 4.0.6 and above

import OkraWidget

class ViewController: UIViewController,OkraHandlerDelegate {
    
    
    
    let launchButton = UIButton(type: .system)
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setUpConstraintsAndProperties()
    }
    
    @objc func showExample(){

        
        let  guarantor:[String:Any] = ["status":true,"message":"hello nurse","number":1]
        let dataDictionary:[String:Any] = ["isWebview":true,
                                           "key":"key",
                                           "token":"token",
                                           "products": ["auth","transactions"],
                                           "env":Environment.production.rawValue,
                                           "clientName":"Basey",
                                           "source":"ios",
                                           "color":"#953ab7",
                                           "limit":"24",
                                           "guarantors":guarantor,
                                           "corporate":false,
                                           "connectMessage":"Which account do you want to connect with?",
                                           "callback_url":"",
                                           "redirect_url":"",
                                           "logo":"https://cdn.okra.ng/images/icon.svg",
                                           "widget_success":"Your account was successfully linked to Okra, Inc",
                                           "widget_failed":"Which account do you want to connect with?",
                                           "currency":"NGN",
                                           "exp":"2021-08-06",
                                           "manual":false,
                                           "success_title":"Successfully connect bank",
                                           "success_message":"You have successfully connected your bank account"
        ]
        
        Okra.create(baseController: self, dataDictionary: dataDictionary, okraHandlerDelegate: self)
        
    }
    
    func onSuccess(data: [String : Any]) {
        print("Succesfully connected bank \(data)")
    }
    
    func onError(data: [String : Any]) {
        print("Error Receieved \(data)")
    }
    
    func onClose() {
        print("Closed")
    }
  
}

OkraOptions

Name Type Required Default Value Description
isWebview boolean true true
key String true undefined Your public key from Okra.
token String true undefined Your client token key from Okra.
payment Booelan false Whether you want to initiate a payment (https://docs.okra.ng/docs/payments)
charge Object false Payment charge opject (https://docs.okra.ng/docs/creating-a-charge)
products ArrayList<Enums.Product> true undefined The Okra products you want to use with the widget.
env Enums.Environment true undefined
clientName String true undefined Name of the customer using the widget on the application
webhook String true undefined The Url that Okra send the client's data to.

View a complete list of customizable options here

Data Dictionary

Auth

Field Required Description
id
ObjectID
Yes Unique Auth ID (Unique Okra Identifier)
validated
Boolean
Yes Customer authentication status
bank
ObjectID
Yes Unique Bank ID (Unique Okra Identifier)
customer
ObjectID
Yes Unique Customer ID (Unique Okra Identifier)
record
ObjectID
Yes Unique Record ID (Unique Okra Identifier)
owner
ObjectID
Yes Unique Company ID (Unique Okra Identifier) (Your Client Token)
created_at
Object
Yes Date Auth was fetched
last_updated
Object
Yes Last Date Auth was fetched

Balance

Field Required Description
id
ObjectID
Yes Unique Balance ID (Unique Okra Identifier)
available_balance
Integer
Yes Amount of available funds in account
ledger_balance
Integer
Yes Closing balance of account
currency
String
Yes The currency of the account
connected
Boolean
Yes Customer connection status (Did they choose to connect this account to you)
env
String
Yes Okra API Env the transaction was pulled from production or production-sandbox
bank
ObjectID
Yes Unique Bank ID (Unique Okra Identifier)
accounts
ObjectID
Yes Unique Account ID (Unique Okra Identifier)
customer
ObjectID
Yes Unique Customer ID (Unique Okra Identifier)
record
Array of ObjectID
Yes Unique Record ID (Unique Okra Identifier)
created_at
Object
Yes Date Balance was fetched
last_updated
Object
Yes Last Date Balance was fetched

Identity

Field Required Description
id
ObjectID
Yes Unique Identifier ID (Unique Okra Identifier)
firstname
String
Yes Customer First Name
middlename
String
Yes Customer Middle Name
lastname
String
Yes Customer Last Name
next_of_kins
Identity Object
Yes Customer Next of Kins
dob
Date
Yes Customer Date of Birth
verified
String
Yes BVN Validation status
score
String
Yes Unique Okra Score
dti
String
Yes Customer Debt to Income Score
fullname
String
Yes Customer Fullname
company_name
String
**Yes Company Name if Corporate Identity
nin
String
Yes Customer NIN Number
national_id
String
Yes Customer National ID Number
drivers_lisence
String
Yes Customer Driver's License Number
nimc
String
Yes Customer National Identity Management Commission (NIMC) Number
voters_id
String
Yes Customer Voter's ID Number
rc_number
String
Yes Company's Registered Company Number if Corporate Identity
phone
Array of String
Yes Customer Phone Number
last_login
String
Yes Customer Last Login via Okra
email
Array of String
Yes Customer Email address
address
Array of String
Yes Customer
mothers_maiden
String
Yes Customer Mother's Maiden Name
photo_ids
Array of Object
Yes Customer's photo ID
env
String
Yes Okra API Env the transaction was pulled from production or production-sandbox
bank
ObjectID
Yes Unique Bank ID (Unique Okra Identifier)
accounts
ObjectID
Yes Unique Account ID (Unique Okra Identifier)
customer
ObjectID
Yes Unique Customer ID (Unique Okra Identifier)
record
Array of ObjectID
Yes Unique Record ID (Unique Okra Identifier)
created_at
Object
Yes Date Balance was fetched
last_updated
Object
Yes Last Date Balance was fetched

Transaction

Field Required Description
id
ObjectID
Yes Unique Transaction ID (Unique Okra Identifier)
debit
Integer
No Amount deducted from account
credit
Integer
No Amount credited to account
trans_date
Date
Yes Date transaction occurred
cleared_date
Date
Yes Date transaction cleared at bank
unformatted_trans_date
String
Yes Date transaction occurred (from bank)
unformatted_cleared_date
String
Yes Date transaction cleared (from bank)
branch
String
No Branch transactions occurred
ref
String
No Bank reference ID (from bank)
env
String
Yes Okra API Env the transaction was pulled from production or production-sandbox
code
String
No Bank Code (from bank)
benefactor
ObjectID
No Customer ID of sender (within Okra)
code
String
No Bank Code (from bank)
notes
Object
Yes Breakdown of Narrative from bank
bank
ObjectID
Yes Unique Bank ID (Unique Okra Identifier)
account
ObjectID
Yes Unique Account ID (Unique Okra Identifier)
record
Array of ObjectID
Yes Unique Record ID (Unique Okra Identifier)
created_at
Object
Yes Date transactions was fetched
last_updated
Object
Yes Last Date transactions was fetched

Notes Data Dictionary

Field Required Description
desc
String
Yes Narrative / Description of transaction (combination of bank and user entered information)
topics
Array of String
Yes Topics within the desc
places
Array of String
Yes Places mentioned within the desc
people
Array of String
Yes People mentioned within the desc
actions
Array of String
Yes Actions mentioned within the desc
subject
Array of String
Yes Subject of the desc
preposition
Array of String
Yes Prepositions within desc to understand intent

Done connecting?

Checkout our API Overiview and see how to use the data you've received and other products you can use to create more personalized experiences for your customers!

Not a developer?

Get started without writing a single line of code, Try our App Builder! Click here to get started