Seamless

Using your UI

To download iOS SDK through cocoa-pod, please go here first.

To run our Sample app do the following:

  • Download latest SDK version and unzip it.

  • Now unzip Release-Universal, now drag and drop the content of unzipped file into Sample App

Initial Setup

  • To integrate with iOS SDK, download the latest SDK from here.

  • Drag and drop PayUBizCoreSDK.framework into your project

Import our SDK as below:

Objective-C/Swift
Objective-C/Swift
#import <PayUBizCoreSDK/PayUBizCoreSDK.h>

While working with swift project add the above code in Bridging-Header.h file.

  • Get all the required parameters

Create an object of PayUModelPaymentParams and set all the parameter in it

Objective-C
Swift
Objective-C
@property (strong, nonatomic) PayUModelPaymentParams *paymentParamForPassing;
self.paymentParamForPassing = [PayUModelPaymentParams new];
self.paymentParamForPassing.key = @"0MQaQP";
self.paymentParamForPassing.transactionID = @"Ywism0Q9XC88qvy";
self.paymentParamForPassing.amount = @"10.0";
self.paymentParamForPassing.productInfo = @"Nokia";
self.paymentParamForPassing.firstName = @"Ram";
self.paymentParamForPassing.email = @"[email protected]";
self.paymentParamForPassing.userCredentials = @"ra:ra";
self.paymentParamForPassing.phoneNumber = @"1111111111";
self.paymentParamForPassing.SURL = @"https://payu.herokuapp.com/ios_success";
self.paymentParamForPassing.FURL = @"https://payu.herokuapp.com/ios_failure";
self.paymentParamForPassing.udf1 = @"u1";
self.paymentParamForPassing.udf2 = @"u2";
self.paymentParamForPassing.udf3 = @"u3";
self.paymentParamForPassing.udf4 = @"u4";
self.paymentParamForPassing.udf5 = @"u5";
self.paymentParamForPassing.environment= ENVIRONMENT_PRODUCTION;
self.paymentParamForPassing.offerKey = @"[email protected]";
Swift
let paymentParamForPassing = PayUModelPaymentParams()
paymentParamForPassing.key = "0MQaQP"
paymentParamForPassing.transactionID = "Ywism0Q9XC88qvy"
paymentParamForPassing.amount = "10.0"
paymentParamForPassing.productInfo = "Nokia"
paymentParamForPassing.firstName = "Ram"
paymentParamForPassing.email = "[email protected]"
paymentParamForPassing.userCredentials = "ra:ra"
paymentParamForPassing.phoneNumber = "1111111111"
paymentParamForPassing.surl = "https://payu.herokuapp.com/ios_success"
paymentParamForPassing.furl = "https://payu.herokuapp.com/ios_failure"
paymentParamForPassing.udf1 = "u1"
paymentParamForPassing.udf2 = "u2"
paymentParamForPassing.udf3 = "u3"
paymentParamForPassing.udf4 = "u4"
paymentParamForPassing.udf5 = "u5"
paymentParamForPassing.environment = ENVIRONMENT_PRODUCTION
paymentParamForPassing.offerKey = "[email protected]"

You don't need to set udf1-5 in case you are not using them email and firstname can be empty strings "" if you don't want to use them For store user card feature you need to set userCredentials

Objective-C
Swift
Objective-C
self.paymentParamForPassing.userCredentials = @"ra:ra"
Swift
paymentParamForPassing.userCredentials = "ra:ra"

For offers you need to set offerKey

Objective-C
Swift
Objective-C
self.paymentParamForPassing.offerKey = @"[email protected]"
Swift
paymentParamForPassing.offerKey = "[email protected]"

For any other payment default param (like phone and others)

Objective-C
Swift
Objective-C
self.paymentParamForPassing.phoneNumber = @"1111111111";
Swift
paymentParamForPassing.phoneNumber = "1111111111"

Get the required hashes by using your own server. Set the hashes as below

Objective-C
Swift
Objective-C
self.paymentParamForPassing.hashes.paymentHash = @"ade84bf6dd9da35d0aab50a5bf61d6272ab0fc488b361b65c66745054aacf1900e3c60b5022d2114bae7360174ebcb3cd7185a5d472e5c99701e5e7e1eccec34";
self.paymentParamForPassing.hashes.paymentRelatedDetailsHash = @"915299224c80eff0eb2407b945a5087556292f58baca25fd05a0bceb6826aa9eb531810001dd4b4677dd928dd60d39eecf843b2189f213f9bb82c5a9483e3aac";
self.paymentParamForPassing.hashes.VASForMobileSDKHash = @"5c0314c2781876f7e0a53676b0d08e1457dafe904d2d15d948626b57409538d51093eef4f15c792b1b9651be7b5659efdd45926e43a1145d68cea094687011ca";
self.paymentParamForPassing.hashes.deleteUserCardHash = @"03e10e892005755f91061121036fb1b10f46202b4138d182f153c5de5c7fd44930ed94b32fac230e59bac1e4ca123aca3297e4b9d25024bf13237db9721fec1a";
self.paymentParamForPassing.hashes.offerHash = @"1e99fdb59bd91c1a85624104c0fcfae34d7fcb850dd17a0b75e7efe49857d15fdefc47dd0d86ca34cbc3a8b580839aea6341a573e4e60dc1ddcf7ecc32bf9cae";
Swift
paymentParamForPassing.hashes.paymentHash = "ade84bf6dd9da35d0aab50a5bf61d6272ab0fc488b361b65c66745054aacf1900e3c60b5022d2114bae7360174ebcb3cd7185a5d472e5c99701e5e7e1eccec34"
paymentParamForPassing.hashes.paymentRelatedDetailsHash = "915299224c80eff0eb2407b945a5087556292f58baca25fd05a0bceb6826aa9eb531810001dd4b4677dd928dd60d39eecf843b2189f213f9bb82c5a9483e3aac"
paymentParamForPassing.hashes.vasForMobileSDKHash = "5c0314c2781876f7e0a53676b0d08e1457dafe904d2d15d948626b57409538d51093eef4f15c792b1b9651be7b5659efdd45926e43a1145d68cea094687011ca"
paymentParamForPassing.hashes.deleteUserCardHash = "03e10e892005755f91061121036fb1b10f46202b4138d182f153c5de5c7fd44930ed94b32fac230e59bac1e4ca123aca3297e4b9d25024bf13237db9721fec1a"
paymentParamForPassing.hashes.offerHash = "1e99fdb59bd91c1a85624104c0fcfae34d7fcb850dd17a0b75e7efe49857d15fdefc47dd0d86ca34cbc3a8b580839aea6341a573e4e60dc1ddcf7ecc32bf9cae"

Generating URLRequest (and post parameters) for Payment

To get request, create an object of class PayUCreateRequest as below. The callbacks give your URLRequest as well as post parameters (NSString format). You can use these post parameters to initialize Custom Browser Instance.

Objective-C
Swift
Objective-C
@property (nonatomic, strong) PayUCreateRequest *createRequest;
Swift
let createRequest = PayUCreateRequest()

CC/DC

To Pay using CCDC, we need to set CCDC parameter as below:

Objective-C
Swift
Objective-C
self.paymentParamForPassing.cardNumber = @"5123456789012346";//cardNumber
self.paymentParamForPassing.nameOnCard = @"name";//Name on card
self.paymentParamForPassing.expYear = @"2018";//Expiry year
self.paymentParamForPassing.expMonth = @"11";//ExpiryMonth
self.paymentParamForPassing.CVV = @"123";//CVV
self.paymentParamForPassing.storeCardName = @"My TestCard";//If you want to save card then pass StoreCardName otherwise it will not save & make sure userCredentials are provided
Swift
paymentParamForPassing.cardNumber = "5123456789012346" //cardNumber
paymentParamForPassing.nameOnCard = "name" //Name on card
paymentParamForPassing.expYear = "2018" //Expiry year
paymentParamForPassing.expMonth = "11" //ExpiryMonth
paymentParamForPassing.cvv = "123" //CVV
paymentParamForPassing.storeCardName = "My TestCard" //If you want to save card then pass StoreCardName otherwise it will not save & make sure userCredentials are provided

After setting the above parameters, you can get the request by using createRequestWithPaymentParam method as below

Objective-C
Swift
Objective-C
self.createRequest = [PayUCreateRequest new];
[self.createRequest createRequestWithPaymentParam:self.paymentParamForPassing forPaymentType:PAYMENT_PG_CCDC withCompletionBlock:^(NSMutableURLRequest *request, NSString *postParam, NSString *error) {
if (error == nil) {
//It is good to go state. You can use request parameter in webview to open Payment Page
}
else{
//Something went wrong with Parameter, error contains the error Message string
}
}];
Swift
createRequest().createRequest(withPaymentParam: paymentParamForPassing, forPaymentType: PAYMENT_PG_CCDC, withCompletionBlock: { request, postParam, error in
if error == nil {
//It is good to go state. You can use request parameter in webview to open Payment Page
} else {
//Something went wrong with Parameter, error contains the error Message string
}
})

StoredCard

To Pay using StoredCard, we need to set StoredCard parameter as below:

Objective-C
Swift
Objective-C
PayUModelStoredCard *modelStoredCard = [self.paymentRelatedDetail.storedCardArray objectAtIndex:indexPath.row];
self.paymentParamForPassing.cardToken = modelStoredCard.cardToken;
self.paymentParamForPassing.cardBin = modelStoredCard.cardBin;
self.paymentParamForPassing.CVV = @"123";//CVV
Swift
let modelStoredCard = paymentRelatedDetail.storedCardArray[indexPath.row] as? PayUModelStoredCard
paymentParamForPassing.cardToken = modelStoredCard?.cardToken
paymentParamForPassing.cardBin = modelStoredCard?.cardBin
paymentParamForPassing.cvv = "123" //CVV

After setting the above parameters, you can get the request by using createRequestWithPaymentParam method as below

Objective-C
Swift
Objective-C
self.createRequest = [PayUCreateRequest new];
[self.createRequest createRequestWithPaymentParam:self.paymentParamForPassing forPaymentType:PAYMENT_PG_STOREDCARD withCompletionBlock:^(NSMutableURLRequest *request, NSString *postParam, NSString *error) {
if (error == nil) {
//It is good to go state. You can use request parameter in webview to open Payment Page
}
else{
//Something went wrong with Parameter, error contains the error Message string
}
}];
Swift
createRequest.createRequest(withPaymentParam: paymentParamForPassing, forPaymentType: PAYMENT_PG_STOREDCARD, withCompletionBlock: { request, postParam, error in
if error == nil {
//It is good to go state. You can use request parameter in webview to open Payment Page
} else {
//Something went wrong with Parameter, error contains the error Message string
}
})

NetBanking

To Pay using NetBanking, we need to set NetBanking parameter as below:

Objective-C
Swift
Objective-C
self.paymentParamForPassing.bankCode = @"AXIB";//BankCode
Swift
paymentParamForPassing.bankCode = "AXIB" //BankCode

After setting the above parameters, you can get the request by using createRequestWithPaymentParam method as below

Objective-C
Swift
Objective-C
self.createRequest = [PayUCreateRequest new];
[self.createRequest createRequestWithPaymentParam:self.paymentParamForPassing forPaymentType:PAYMENT_PG_NET_BANKING withCompletionBlock:^(NSMutableURLRequest *request, NSString *postParam, NSString *error) {
if (error == nil) {
//It is good to go state. You can use request parameter in webview to open Payment Page
}
else{
//Something went wrong with Parameter, error contains the error Message string
}
}];
Swift
createRequest.createRequest(withPaymentParam: paymentParamForPassing, forPaymentType: PAYMENT_PG_NET_BANKING, withCompletionBlock: { request, postParam, error in
if error == nil {
//It is good to go state. You can use request parameter in webview to open Payment Page
} else {
//Something went wrong with Parameter, error contains the error Message string
}
})

CashCard

To Pay using CashCard, we need to set cashcard parameter as below:

Objective-C
Swift
Objective-C
self.paymentParamForPassing.bankCode = @"AXIB";//BankCode
Swift
paymentParamForPassing.bankCode = "AXIB" //BankCode

After setting the above parameters, you can get the request by using createRequestWithPaymentParam method as below

Objective-C
Swift
Objective-C
self.createRequest = [PayUCreateRequest new];
[self.createRequest createRequestWithPaymentParam:self.paymentParamForPassing
forPaymentType:PAYMENT_PG_CASHCARD withCompletionBlock:^(NSMutableURLRequest *request, NSString *postParam, NSString *error) {
if (error == nil) {
//It is good to go state. You can use request parameter in webview to open Payment Page
}
else{
//Something went wrong with Parameter, error contains the error Message string
}
}];
Swift
createRequest.createRequest(withPaymentParam: paymentParamForPassing, forPaymentType: PAYMENT_PG_CASHCARD, withCompletionBlock: { request, postParam, error in
if error == nil {
//It is good to go state. You can use request parameter in webview to open Payment Page
} else {
//Something went wrong with Parameter, error contains the error Message string
}
})

EMI

To Pay using EMI, we need to set EMI parameter as below:

Objective-C
Swift
Objective-C
self.paymentParamForPassing.bankCode = @"EMI03";//BankCode
self.paymentParamForPassing.expiryYear = @"2019";
self.paymentParamForPassing.expiryMonth = @"12";
self.paymentParamForPassing.nameOnCard = @"test";
self.paymentParamForPassing.cardNumber = @"5123456789012346";
self.paymentParamForPassing.CVV = @"123";
Swift
paymentParamForPassing.bankCode = "EMI03" //BankCode
paymentParamForPassing.expiryYear = "2019"
paymentParamForPassing.expiryMonth = "12"
paymentParamForPassing.nameOnCard = "test"
paymentParamForPassing.cardNumber = "5123456789012346"
paymentParamForPassing.cvv = "123"

After setting the above parameters, you can get the request by using createRequestWithPaymentParam method as below

Objective-C
Swift
Objective-C
self.createRequest = [PayUCreateRequest new];
[self.createRequest createRequestWithPaymentParam:self.paymentParamForPassing forPaymentType:PAYMENT_PG_EMI withCompletionBlock:^(NSMutableURLRequest *request, NSString *postParam, NSString *error) {
if (error == nil) {
//It is good to go state. You can use request parameter in webview to open Payment Page
}
else{
//Something went wrong with Parameter, error contains the error Message string
}
}];
Swift
createRequest.createRequest(withPaymentParam: paymentParamForPassing, forPaymentType: PAYMENT_PG_EMI, withCompletionBlock: { request, postParam, error in
if error == nil {
//It is good to go state. You can use request parameter in webview to open Payment Page
} else {
//Something went wrong with Parameter, error contains the error Message string
}
})

PayUMoney

To Pay using PayUMoney, we need to set only the mandatory payment param and we can get the request by using createRequestWithPaymentParam method as below:

Objective-C
Swift
Objective-C
PayUCreateRequest *createRequest = [PayUCreateRequest new];
[createRequest createRequestWithPaymentParam:self.paymentParamForPassing forPaymentType:PAYMENT_PG_PAYU_MONEY withCompletionBlock:^(NSMutableURLRequest *request, NSString *postParam, NSString *error) {
if (error == nil) {
//It is good to go state. You can use request parameter in webview to open Payment Page
}
else{
//Something went wrong with Parameter, error contains the error Message string
}
}];
Swift
createRequest.init(paymentParam: paymentParamForPassing, forPaymentType: PAYMENT_PG_PAYU_MONEY, withCompletionBlock: { request, postParam, error in
if error == nil {
//It is good to go state. You can use request parameter in webview to open Payment Page
} else {
//Something went wrong with Parameter, error contains the error Message string
}
})

Subvention EMI

Pay via Subvention EMI

To Pay using Subvention EMI, we need to set subventionAmount parameter of paymentParams

Objective-C
Swift
Objective-C
self.paymentParamForPassing.bankCode = @"EMI03";//BankCode
self.paymentParamForPassing.expiryYear = @"2019";
self.paymentParamForPassing.expiryMonth = @"12";
self.paymentParamForPassing.nameOnCard = @"test";
self.paymentParamForPassing.cardNumber = @"5123456789012346";
self.paymentParamForPassing.CVV = @"123";
self.paymentParamForPassing.subventionAmount = @"3000";
Swift
paymentParamForPassing.bankCode = "EMI03" //BankCode
paymentParamForPassing.expiryYear = "2019"
paymentParamForPassing.expiryMonth = "12"
paymentParamForPassing.nameOnCard = "test"
paymentParamForPassing.cardNumber = "5123456789012346"
paymentParamForPassing.cvv = "123"
paymentParamForPassing.subventionAmount = "3000"

After setting the above parameters, you can get the request by using createRequestWithPaymentParam method as below:

Objective-C
Swift
Objective-C
self.createRequest = [PayUCreateRequest new];
[self.createRequest createRequestWithPaymentParam:self.paymentParamForPassing forPaymentType:PAYMENT_PG_EMI withCompletionBlock:^(NSMutableURLRequest *request, NSString *postParam, NSString *error) {
if (error == nil) {
//It is good to go state. You can use request parameter in webview to open Payment Page
}
else{
//Something went wrong with Parameter, error contains the error Message string
}
}];
Swift
createRequest.createRequest(withPaymentParam: paymentParamForPassing, forPaymentType: PAYMENT_PG_EMI, withCompletionBlock: { request, postParam, error in
if error == nil {
//It is good to go state. You can use request parameter in webview to open Payment Page
} else {
//Something went wrong with Parameter, error contains the error Message string
}
})

Hash Calculation

If subventionAmount is passed than hash formula for payment hash will be

sha512(key|txnid|amount|productinfo|firstname|email|udf1|udf2|udf3|udf4|udf5||||||SALT|SubventionAmount)

Otherwise it will remain same as earlier.

LazyPay

To Pay using LazyPay, we need to set the below parameters :

Notify Url – Callback URL of merchant where a notification of transaction status will be sent on completion of transaction. It should be HTTPS.

Objective-C
Swift
Objective-C
self.paymentParamForPassing.notifyURL= @"https://notifyURL.com";
Swift
paymentParamForPassing.notifyURL = "https://notifyURL.com"

After setting the above parameters, you can get the request by using createRequestWithPaymentParam method as below

Objective-C
Swift
Objective-C
self.createRequest = [PayUCreateRequest new];
[self.createRequest createRequestWithPaymentParam:self.paymentParamForPassing forPaymentType:PAYMENT_PG_LAZYPAY withCompletionBlock:^(NSMutableURLRequest *request, NSString *postParam, NSString *error) {
if (error == nil) {
//It is good to go. You can use request parameter in webview to open Payment Page
}
else{
//Something went wrong with Parameter, error contains the error Message string
}
}];
Swift
createRequest.createRequest(withPaymentParam: paymentParamForPassing, forPaymentType: PAYMENT_PG_LAZYPAY, withCompletionBlock: { request, postParam, error in
if error == nil {
//It is good to go. You can use request parameter in webview to open Payment Page
} else {
//Something went wrong with Parameter, error contains the error Message string
}
})