Seamless
Using your UI
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
- Drag and drop PayUBizCoreSDK.framework into your project
Import our SDK as below:
Objective-C/Swift
#import <PayUBizCoreKit/PayUBizCoreKit.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 itObjective-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]";
//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
self.paymentParamForPassing.userCredentials = @"ra:ra"
paymentParamForPassing.userCredentials = "ra:ra"
For offers you need to set
offerKey
Objective-C
Swift
self.paymentParamForPassing.offerKey = @"[email protected]"
paymentParamForPassing.offerKey = "[email protected]"
For any other payment default param (like phone and others)
Objective-C
Swift
self.paymentParamForPassing.phoneNumber = @"1111111111";
paymentParamForPassing.phoneNumber = "1111111111"
Get the required hashes by using your own server. Set the hashes as below
Objective-C
Swift
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";
paymentParamForPassing.hashes.paymentHash = "ade84bf6dd9da35d0aab50a5bf61d6272ab0fc488b361b65c66745054aacf1900e3c60b5022d2114bae7360174ebcb3cd7185a5d472e5c99701e5e7e1eccec34"
paymentParamForPassing.hashes.paymentRelatedDetailsHash = "915299224c80eff0eb2407b945a5087556292f58baca25fd05a0bceb6826aa9eb531810001dd4b4677dd928dd60d39eecf843b2189f213f9bb82c5a9483e3aac"
paymentParamForPassing.hashes.vasForMobileSDKHash = "5c0314c2781876f7e0a53676b0d08e1457dafe904d2d15d948626b57409538d51093eef4f15c792b1b9651be7b5659efdd45926e43a1145d68cea094687011ca"
paymentParamForPassing.hashes.deleteUserCardHash = "03e10e892005755f91061121036fb1b10f46202b4138d182f153c5de5c7fd44930ed94b32fac230e59bac1e4ca123aca3297e4b9d25024bf13237db9721fec1a"
paymentParamForPassing.hashes.offerHash = "1e99fdb59bd91c1a85624104c0fcfae34d7fcb850dd17a0b75e7efe49857d15fdefc47dd0d86ca34cbc3a8b580839aea6341a573e4e60dc1ddcf7ecc32bf9cae"
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
@property (nonatomic, strong) PayUCreateRequest *createRequest;
let createRequest = PayUCreateRequest()
To Pay using CCDC, we need to set CCDC parameter as below:
Objective-C
Swift
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
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
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
}
}];
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
}
})
To Pay using StoredCard, we need to set StoredCard parameter as below:
Objective-C
Swift
PayUModelStoredCard *modelStoredCard = [self.paymentRelatedDetail.storedCardArray objectAtIndex:indexPath.row];
self.paymentParamForPassing.cardToken = modelStoredCard.cardToken;
self.paymentParamForPassing.cardBin = modelStoredCard.cardBin;
self.paymentParamForPassing.CVV = @"123";//CVV
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 belowObjective-C
Swift
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
}
}];
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
}
})
For cards tokenised outside PayU platform merchant needs to pass below parameters.
Objective-C
Swift
self.paymentParam.cardTokenType = @"1";
self.paymentParam.additionalInfo = [[AdditionalInfo alloc] initWithLast4Digits:@"1234" tavv:@"1234" trid:@"1234" tokenRefNo:@"1234"];
paymentParam.cardTokenType = "1"
paymentParam.additionalInfo = AdditionalInfo(last4Digits: "1234", tavv: "1234", trid: "1234", tokenRefNo: "1234")
After setting the above parameters, you can get the request by using
createRequestWithPaymentParam.
To Pay using NetBanking, we need to set NetBanking parameter as below:
Objective-C
Swift
self.paymentParamForPassing.bankCode = @"AXIB";//BankCode
paymentParamForPassing.bankCode = "AXIB" //BankCode
After setting the above parameters, you can get the request by using createRequestWithPaymentParam method as below
Objective-C
Swift
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
}
}];
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
}
})
To Pay using CashCard, we need to set cashcard parameter as below:
Objective-C
Swift
self.paymentParamForPassing.bankCode = @"AXIB";//BankCode
paymentParamForPassing.bankCode = "AXIB" //BankCode
After setting the above parameters, you can get the request by using
createRequestWithPaymentParam
method as belowObjective-C
Swift
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
}
}];
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
}
})
To Pay using EMI, you need to set EMI parameter as below:
Objective-C
Swift
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";
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 belowObjective-C
Swift
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
}
}];
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
}
})
Cardless EMI
To Pay using Cardless EMI, you need to set parameter as below:
Objective-C
Swift
self.paymentParamForPassing.bankCode = @"ZESTMON";//BankID
self.paymentParamForPassing.isCardlessEMI = true;
self.paymentParamForPassing.phoneNumber = @"9999999999";
paymentParamForPassing.bankCode = "ZESTMON" //BankID
paymentParamForPassing.isCardlessEMI = true
paymentParamForPassing.phoneNumber = "99999999"
After setting the above parameters, you can get the request by using
createRequestWithPaymentParam
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
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
}
}];
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
}
})
To Pay using Subvention EMI, we need to set subventionAmount parameter of paymentParams
Objective-C
Swift
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";
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
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
}
}];
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
}
})
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.
To get list of No Cost EMI supporting banks, pass
subventionEligibility
as "all" in Fetch Payment Option WebService.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
self.paymentParamForPassing.notifyURL= @"https://notifyURL.com";
paymentParamForPassing.notifyURL = "https://notifyURL.com"
After setting the above parameters, you can get the request by using createRequestWithPaymentParam method as below
Objective-C
Swift
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
}
}];
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
}
})
To Pay using TwidPay, create the post data with CASH_CARD_TWID :
Objective-C
Swift
self.paymentParamForPassing.bankCode = CASH_CARD_TWID;//BankCode
paymentParamForPassing.bankCode = CASH_CARD_TWID //BankCode
After a successful payment, you would get the Twid customer hash in the field5 param of PayuResponse, which can be used in next transactions to skip authentication.
Objective-C
Swift
self.paymentParamForPassing.twidCustomerHash = @"Twid customer hash";
self.paymentParamForPassing.twidCustomerHash = "Twid customer hash"
To Pay using Sodexo, create the post data with PAYMENT_PG_SODEXO :
Objective-C
Swift
self.paymentParamForPassing.cardNumber = @"<Sodexo card number>";//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.shouldSaveCard = YES;//If you want to save card then pass it otherwise it will not save
self.paymentParamForPassing.cardNumber = "<Sodexo card number>";//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.shouldSaveCard = true;//If you want to save card then pass it otherwise it will not save
After setting the above parameters, you can get the request by using createRequestWithPaymentParam method as below
Objective-C
Swift
self.createRequest = [PayUCreateRequest new];
[self.createRequest createRequestWithPaymentParam:self.paymentParamForPassing forPaymentType:PAYMENT_PG_SODEXO 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
}
}];
createRequest().createRequest(withPaymentParam: paymentParamForPassing, forPaymentType: PAYMENT_PG_SODEXO, 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
}
})
After a successful payment, you would get the Sodexo source id in the field3 param of PayuResponse, which can be used to show and get stored Sodexo card details and also can be used for initiate payment.
Objective-C
Swift
self.paymentParamForPassing.sodexoSourceId = @"<Sodexo source id>";
self.paymentParamForPassing.sodexoSourceId = "<Sodexo source id>"
Last modified 11mo ago