Skip to main content

Introduction

XPaySwiftSDK is an SDK for integrating payments through XPay with IOS development written in Swift.

Installation

KotlinUtils is available through jitpack

  1. Add the following line in your pod file at the end of repositories:
pod 'XPaySwiftSDK', :git => 'https://github.com/xpayeg/XPaySwiftSDK.git'

Usage

Make payment


import UIKit
import XPaySwiftSDK

class ViewController: UIViewController {
// => Add this
var xpayUtils: XPayUtils!

override func viewDidLoad() {
super.viewDidLoad()

// => Add this
xpayUtils = XPayUtils(
from: self, // ViewController instance
sdkMode: XPaySDKMode.DEVELOPMENT, // XPaySDKMode.LIVE for production mode
apiKey: "API_KEY", // Your api key, Create an api key => https://xpayeg.github.io/docs/api-key
apiPaymentId: 1, // Your api payment id, Create an api payment id => https://xpayeg.github.io/docs/api-payments
communityId: "COMMUNITY_ID" // Your community id, Get your community id => https://xpayeg.github.io/docs/community-id
)

}

@objc func payNow() {
xpayUtils.makePayment(
amount: 100.0, // Float
originalAmount: 100.0, // Float
payUsing: XPayPaymentMethod.card, // XPayPaymentMethod.card || XPayPaymentMethod.fawry || XPayPaymentMethod.meezaDigital
billingData: (
name: "Full Name", // String, Must match Regex("^[a-zA-Z\\u0621-\\u064A-]{3,}(?:\\s[a-zA-Z\\u0621-\\u064A-]{3,})+\$")
email: "email@email.com", // String, Must match Regex("^[a-zA-Z0-9._%+-]+@[a-zA-Z.-]+[.][a-zA-Z]{2,4}\$")
phoneNumber: "+201112223330" // String, Must match Regex("^\\+[0-9]{7,15}\$")
)
){ [weak self] result in
DispatchQueue.main.async {
switch result {
case .success(let data):
print("Data: \(data)")
// Handle success, e.g., update UI or display a message
self?.getTransactionDetails(transactionUUID: data.transactionUUID)
case .failure(let error):
print("Error: \(error.localizedDescription)")
// Handle error, e.g., show an alert
}
}
}
}
@objc func getTransactionDetails(transactionUUID: String) {
xpayUtils.getTransaction(
transactionUUID: transactionUUID
){ [weak self] result in
DispatchQueue.main.async {
switch result {
case .success(let data):
print("Data: \(data)")
// Handle success, e.g., update UI or display a message
case .failure(let error):
print("Error: \(error.localizedDescription)")
// Handle error, e.g., show an alert
}
}
}
}
}

Switching to Production server

By default XpayUtils will make all the requests to XPay testing server, to switch to Production server change sdkMode to XPaySDKMode.LIVE.

xpayUtils = XPayUtils(
from: self,
sdkMode: XPaySDKMode.LIVE,
apiKey: "API_KEY",
apiPaymentId: 1,
communityId: "COMMUNITY_ID"
)```