PayHere Mobile SDK for iOS
PayHere Mobile SDK for iOS allows you to accept payments seamlessly within your iOS app, without redirecting your app user to the web browser.
Contents
Requirements
- iOS 11.0+
- Xcode 11.0+
- Swift 5.0+
Installation
CocoaPods
CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:
$ gem install cocoapods
To integrate PayHere into your Xcode project using CocoaPods, specify it in your Podfile
:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks! # add this line if not present
target '<Your Target Name>' do
pod 'payHereSDK'
end
Then, run the following command:
$ pod install
Usage
Import PayHere SDK into your UIViewController
import payHereSDK
Create InitRequest
CheckOut
let merchantID = ""
let item = Item(id: "item_1", name: "Item 1", quantity: 1, amount: 50.0)
let initRequest = PHInitialRequest(
merchantID: merchantID,
notifyURL: "",
firstName: "Pay",
lastName: "Here",
email: "[email protected]",
phone: "+9477123456",
address: "Colombo",
city: "Colombo",
country: "Sri Lanka",
orderID: "001",
itemsDescription: "PayHere SDK Sample",
itemsMap: [item],
currency: .LKR,
amount: 50.00,
deliveryAddress: "",
deliveryCity: "",
deliveryCountry: "",
custom1: "custom 01",
custom2: "custom 02"
)
PreApproval
let merchantID = ""
let item = Item(id: "item_1", name: "Item 1", quantity: 1, amount: 50.0)
let initRequest = PHInitialRequest(
merchantID: merchantID,
notifyURL: "",
firstName: "",
lastName: "",
email: "",
phone: "",
address: "",
city: "",
country: "",
orderID: "001",
itemsDescription: "",
itemsMap: [item1],
currency: .LKR,
custom1: "",
custom2: ""
)
Recurring
let merchantID = ""
let item = Item(id: "item_1", name: "Item 1", quantity: 1, amount: 50.0)
let initRequest = PHInitialRequest(
merchantID: merchantID,
notifyURL: "",
firstName: "",
lastName: "",
email: "",
phone: "",
address: "",
city: "",
country: "",
orderID: "002",
itemsDescription: "",
itemsMap: [item1],
currency: .LKR,
amount: 60.50,
deliveryAddress: "",
deliveryCity: "",
deliveryCountry: "",
custom1: "",
custom2: "",
startupFee: 0.0,
recurrence: .Month(duration: 2),
duration: .Forver
)
PreApproval
let merchantID = ""
let item = Item(id: "item_1", name: "Item 1", quantity: 1, amount: 50.0)
let initRequest = PHInitialRequest(
merchantID: merchantID,
notifyURL: "",
firstName: "",
lastName: "",
email: "",
phone: "",
address: "",
city: "",
country: "",
orderID: "001",
itemsDescription: "",
itemsMap: [item1],
currency: .LKR,
custom1: "",
custom2: ""
)
Hold On Card
let merchantID = ""
let item = Item(id: "item_1", name: "Item 1", quantity: 1, amount: 50.0)
let initRequest = PHInitialRequest(
merchantID: merchandID,
notifyURL: "",
firstName: "",
lastName: "",
email: "",
phone: "",
address: "",
city: "",
country: "",
orderID: "",
itemsDescription: "",
itemsMap: [item1,item2],
currency: .LKR,
amount: 0.0,
deliveryAddress: "",
deliveryCity: "",
deliveryCountry: "",
custom1: "",
custom2: "",
isHoldOnCardEnabled: true
)
Precent PayHere Payment View
In order to make a payment request, first initialize PayHere ViewController as below;
PHPrecentController.precent(from: self, withInitRequest: initRequest, delegate: self)
Handle Payment Response
extension ViewController : PHViewControllerDelegate{
func onErrorReceived(error: Error) {
print("✋ Error",error)
}
func onResponseReceived(response: PHResponse<Any>?) {
guard let response = response else {
print("Could not receive payment response")
return
}
if(response.isSuccess()){
guard let resp = response.getData() as? payHereSDK.StatusResponse else{
return
}
print("Payment Success")
print("Payment Status", resp.status ?? -1)
print("Message", resp.message ?? "Unknown Message")
print("Payment No", resp.paymentNo ?? -1.0)
print("Payment Amount", resp.price ?? -1.0)
}
else{
print("Payment Error", response.getMessage() ?? "Unknown Message")
}
}
}
FAQ
How to fixed [!] Unable to find a specification for payHereSDK issue
follow the instruction given bellow
$ pod repo remove master
$ pod setup
$ pod install