Skip to main content

Documentation Portal

Usage of Global-E SDK

All API requests in GlobalEMobileSDK are async. To correctly display data from the result of an API call, use the progress bar, activity indicator, etc.

iOS Initialization and Setup

Import GlobalEMobileSDK

GlobalESDK.setup(token: "YnMTYTk04do=", domain: "https://stgepi4.bglobale.com/externalapi/", cartTokenURL: "https://www2.bglobale.com/checkoutv2/fullredirect/")

Examples:

getCountriesList method:

GlobalESDK.instance.getCountriesList { (result: Result<Array<Country>, GlobalEError>) in

switch result {

case .success(let countries):

print(countries)

case .failure(let error):

print(error.errorDescription)

print(error.errorCode)

}

}

getCurrenciesList method:

GlobalESDK.instance.getCurrenciesList { (result: Result<Array<Currency>, GlobalEError>) in

switch result {

case.success(let result):

print(result)

case.failure(let error):

print(error.errorDescription)

}

}

● Price calculation method:

DefaultCountry object with selected country info. Get this object from updateCurrentCountryInfo or getCurrentCountryInfo methods.

GlobalESDK.instance.convertPrice(countryCode: "IL", currencyCode: "ILS", merchantInfo: DefaultCountry, basePrice: 100.0, quantity: 1, isGrossPrices: false, localVatRate: nil, productCountryVatRate: nil, applyMarketingRounding: true) { (result: Result<Float, GlobalEError>) in

switch result {

case .success(let value):

print(value)

case .failure(let error):

print(error.errorDescription)

print(error.errorCode)

}

}

}
  • Implement a calculation method:

class API {

static func fetchData( @escaping cb: (String) -> (String)) {

cb("price")

}

}

class PriceCell: UITableViewCell {

@IBOutlet var priveLabel: UILabel!

func setData(price: String) {

self.priveLabel.text = price

}

}

class TableScreen: UITableView {

var dataSource: [String]!

func dataSourceInit() {

dataSource = [String]()

}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "PriceCell", for: indexPath) as! PriceCell

let price = dataSource[indexPath.row]

if (price == nil) {

// call API

API.fetchData { (result) -> (String) in

dataSource[indexPath.row] = result

cell.setData(price: dataSource[indexPath.row])

}

} else {

cell.setData(price: price)

}

return cell

}

}
Android Initialization and Setup

Initialize SDK in your Application class

GlobalESDK.init(Application, token, domain, cartTokenUrl)

Example:

class App : Application() {

override fun onCreate() {

super.onCreate()

GlobalESDK.init(this, "YnMTYTk04do=", "https://stgepi4.bglobale.com/externalapi/",

"https://www2.bglobale.com/checkoutv2/fullredirect/")

}

}

Examples of different methods:

getCountriesList method (Coroutines):

val payload = GlobalESDK.getInstance().getCountriesList()

payload.data?.let {

//it - get countries

}

payload.error?.let {

it.forEach { error ->

Log.d("TAG", "${error.errorCode}")

Log.d("TAG", error.errorDescription)

}

}

getCurrenciesList method:

val payload = GlobalESDK.getInstance().getCurrenciesList()

payload.data?.let {

//it - get currencies list

}

payload.error?.let {

it.forEach { error ->

Log.d("TAG", "${error.errorCode}")

Log.d("TAG", error.errorDescription)

}

}

DefaultCountry object with selected country info.

Get this object from updateCurrentCountryInfo or getCurrentCountryInfo methods.

getCurrentCountryInfo method:

val payload = GlobalESDK.getInstance().getCurrentCountryInfo()

payload.data?.let {

//it - get default country

}

payload.error?.let {

it.forEach { error ->

Log.d("TAG", "${error.errorCode}")

Log.d("TAG", error.errorDescription)

}

}

calculatePrice method (Coroutines):

val payload = GlobalESDK.getInstance().convertPrice(

countryCode = “IL”,

currencyCode = “ILS”,

merchantInfo: DefaultCountry,

applyMarketingRounding = true,

quantity = 1,

basePrice = 100.0,

productLocalVatRate = null,

productCountryVatRate = null,

isGrossPrices = true

)

payload.data?.let {

//it - get calculation price

}

payload.error?.let {

it.forEach { error ->

Log.d("TAG", "${error.errorCode}")

Log.d("TAG", error.errorDescription)

}

}

To implement the calculation method in the list:

val totalPrice = 0.0

listProduct.forEach { product ->

val payload = GlobalESDK.getInstance().convertPrice(

countryCode = countryCode,

currencyCode = currencyCode,

merchantInfo: DefaultCountry,

applyMarketingRounding = true,

quantity = 1,

basePrice = product.price,

productLocalVatRate = 10.0,

productCountryVatRate = 12.0,

isGrossPrices = true

)

payload.data?.let { price ->

totalPrice += price.toDouble()

}

payload.error?.let { errors ->

errors.forEach { error ->

Log.d("TAG", "${error.errorCode}")

Log.d("TAG", error.errorDescription)

}

}

}

An example of how to correctly calculate the total price:

val totalPrice = 0
val calculatedPrice1 = convertPrice(basePrice1)
val calculatedPrice2 = convertPrice(basePrice2)
val calculatedPrice3 = convertPrice(basePrice3)
totalPrice = calculatedPrice1 + calculatedPrice2 + calculatedPrice3

The incorrect way to calculate the price:

val baseTolalPrice = basePrice1 + basePrice2 + basePrice3

totalPrice = convertPrice(baseTolalPrice)

Additional information for RX users: https://github.com/Kotlin/kotlinx.coroutines/tree/master/reactive/kotlinx-coroutines-rx2