Advanced Integration Customize your integration (Optional Step)
Offer
You can pass the offer keys to checkoutPro as below:
Swift Objective-C
Copy let config = PayUCheckoutProConfig ()
let offerDetailObj1 = PayUOfferDetails ( title : < #T##String# > ,
offerDescription : < #T##String# > ,
offerKey : < #T##String# > ,
paymentTypes : < #T##[PaymentType]# > )
let offerDetailObj2 = PayUOfferDetails ( title : < #T##String# > ,
offerDescription : < #T##String# > ,
offerKey : < #T##String# > ,
paymentTypes : < #T##[PaymentType]# > )
let offerDetailObj3 = PayUOfferDetails ( title : < #T##String# > ,
offerDescription : < #T##String# > ,
offerKey : < #T##String# > ,
paymentTypes : < #T##[PaymentType]# > )
config.offerDetails = [offerDetailObj1, offerDetailObj2, offerDetailObj3]
Copy PayUCheckoutProConfig *config = [PayUCheckoutProConfig new];
PayUOfferDetails *offerDetailObj1 = [[PayUOfferDetails alloc] initWithTitle:<#(NSString * _Nonnull)#>
offerDescription:<#(NSString * _Nonnull)#>
offerKey:<#(NSString * _Nonnull)#>
paymentTypes:[[NSArray alloc] initWithObjects:[NSNumber numberWithInt:<#(PaymentType)#>], nil]];
PayUOfferDetails *offerDetailObj2 = [[PayUOfferDetails alloc] initWithTitle:<#(NSString * _Nonnull)#>
offerDescription:<#(NSString * _Nonnull)#>
offerKey:<#(NSString * _Nonnull)#>
paymentTypes:[[NSArray alloc] initWithObjects:[NSNumber numberWithInt:<#(PaymentType)#>], nil]];
PayUOfferDetails *offerDetailObj3 = [[PayUOfferDetails alloc] initWithTitle:<#(NSString * _Nonnull)#>
offerDescription:<#(NSString * _Nonnull)#>
offerKey:<#(NSString * _Nonnull)#>
paymentTypes:[[NSArray alloc] initWithObjects:[NSNumber numberWithInt:<#(PaymentType)#>], nil]];
config.offerDetails = @[offerDetailObj1, offerDetailObj2, offerDetailObj3];
Change theme
You can change the primary and the secondary color of the UI to match your apps theme
Swift Objective-C
Copy let config = PayUCheckoutProConfig ()
config. customiseUI ( primaryColor : < #UIColor# > , secondaryColor : < #UIColor# > )
Copy PayUCheckoutProConfig *config = [PayUCheckoutProConfig new];
[config customiseUIWithPrimaryColor:[UIColor blueColor] secondaryColor:[UIColor whiteColor]];
Set Merchant Name & Logo
You can customise the name and logo to personalise the checkout screen
Swift Objective-C
Copy let config = PayUCheckoutProConfig ()
config.merchantName = < #T # #String ? # >
config.merchantLogo = < #T # #UIImage ? # >
Copy PayUCheckoutProConfig *config = [PayUCheckoutProConfig new];
config.merchantName = <#(NSString * _Nullable)#>;
config.merchantLogo = <#(NSString * _Nullable)#>;
Hide Checkout screen back button dialog
Merchant can choose to hide dialog that appears when back button is pressed from L1 screen. Default value is true.
Swift Objective-C
Copy let config = PayUCheckoutProConfig ()
config.showExitConfirmationOnCheckoutScreen = < #Bool # >
Copy PayUCheckoutProConfig *config = [PayUCheckoutProConfig new];
config.showExitConfirmationOnCheckoutScreen = <#(BOOL)#>;
Hide back button dialog after payment initialisation
Merchant can choose to hide dialog that appears when back button is pressed after payment is initialised. Default value is true.
Swift Objective-C
Copy let config = PayUCheckoutProConfig ()
config.showExitConfirmationOnPaymentScreen = < #Bool # >
Copy PayUCheckoutProConfig *config = [PayUCheckoutProConfig new];
config.showExitConfirmationOnPaymentScreen = <#(BOOL)#>;
Auto select OTP
Merchant can choose to auto select OTP flow on bank page with below flag. Default value is false.
Swift Objective-C
Copy let config = PayUCheckoutProConfig ()
config.autoSelectOtp = < #Bool # >
Copy PayUCheckoutProConfig *config = [PayUCheckoutProConfig new];
config.autoSelectOtp = <#(BOOL)#>;
Set merchant response timeout
This is time PayU will wait for merchant surl/furl to load before passing the transaction response back to the app. If merchant surl/furl pages take a longer to load then by default PayU has response timeout of 5 sec. However, if merchant feel that their surl/furl can take longer than 5 seconds then they can set this flag.
Swift Objective-C
Copy let config = PayUCheckoutProConfig ()
config.merchantResponseTimeout = < #TimeInterval ? # >
Copy PayUCheckoutProConfig *config = [PayUCheckoutProConfig new];
config.merchantResponseTimeout = <#(NSTimeInterval * _Nullable)#>;
Enable surepay on bank page
Merchant can enable surepay on bank page. When internet is lost during the transaction, if transaction can be retry from that bank page after internet is resumed, surepay dialog is displayed. It has legitimate values as 0,1,2 and 3. Where number defines number of times surepay dialog should be displayed during the transaction for no internet connectivity. Default value is 0.
Swift Objective-C
Copy let config = PayUCheckoutProConfig ()
config.surePayCount = < #UInt ? # >
Copy PayUCheckoutProConfig *config = [PayUCheckoutProConfig new];
config.surePayCount = <#(NSUInteger * _Nullable)#>;
Review Order
Merchant can pass the checkout order details to the SDK that will be displayed in the SDK during the transaction flow.
Swift Objective-C
Copy let config = PayUCheckoutProConfig ()
config.cartDetails = [[ "Milk" : "1L" ],[ "Butter" : "1Kg" ]]
Copy PayUCheckoutProConfig *config = [PayUCheckoutProConfig new];
config.cartDetails = @[@{@"Milk": @"1L"},@{@"Butter": @"1Kg"}];
Additional payment options in the Checkout screen
Consider below example to display Google Pay, PhonePe and Paytm on primary checkout screen
Swift Objective-C
Copy var preferredPaymentModes: [PaymentMode] = []
preferredPaymentModes. append ( PaymentMode ( paymentType : .upi, paymentOptionID : BankCodes.gPayUPI ))
preferredPaymentModes. append ( PaymentMode ( paymentType : .wallet, paymentOptionID : BankCodes.phonePeWallet ))
preferredPaymentModes. append ( PaymentMode ( paymentType : .wallet, paymentOptionID : BankCodes.paytmWallet ))
let config = PayUCheckoutProConfig ()
config.paymentModesOrder = preferredPaymentModes
Copy NSMutableArray<PaymentMode *> *preferredPaymentModes = [NSMutableArray new];
[preferredPaymentModes addObject: [[PaymentMode alloc] initWithPaymentType:PaymentTypeUpi paymentOptionID:BankCodes.gPayUPI]];
[preferredPaymentModes addObject: [[PaymentMode alloc] initWithPaymentType:PaymentTypeWallet paymentOptionID:BankCodes.phonePeWallet]];
[preferredPaymentModes addObject: [[PaymentMode alloc] initWithPaymentType:PaymentTypeWallet paymentOptionID:BankCodes.paytmWallet]];
PayUCheckoutProConfig *config = [PayUCheckoutProConfig new];
config.paymentModesOrder = preferredPaymentModes;
This will display Google Pay, PhonePe and Paytm respectively on top of available payment options. To reorder the all the payment options check the next section.
Set checkout payment modes order
Default payment modes order on checkout screen is as below: Card, NetBanking, UPI and Wallets
Merchant can specify the checkout payment options order. For this, merchant need to provide list of payment modes. Checkout order will be the order of items in the list. If not all payment modes order is mentioned in list the other payment modes will be displayed in their default order as shown above.
Consider below example to order Cards and UPI on L1 screen
Swift Objective-C
Copy var preferredPaymentModes: [PaymentMode] = []
preferredPaymentModes. append ( PaymentMode ( paymentType : .ccdc ))
preferredPaymentModes. append ( PaymentMode ( paymentType : .netBanking ))
preferredPaymentModes. append ( PaymentMode ( paymentType : .upi ))
preferredPaymentModes. append ( PaymentMode ( paymentType : .wallet ))
preferredPaymentModes. append ( PaymentMode ( paymentType : .emi ))
let config = PayUCheckoutProConfig ()
config.paymentModesOrder = preferredPaymentModes
Copy NSMutableArray<PaymentMode *> *preferredPaymentModes = [NSMutableArray new];
[preferredPaymentModes addObject: [[PaymentMode alloc] initWithPaymentType: PaymentTypeCcdc paymentOptionID: nil]];
[preferredPaymentModes addObject: [[PaymentMode alloc] initWithPaymentType: PaymentTypeNetBanking paymentOptionID: nil]];
[preferredPaymentModes addObject: [[PaymentMode alloc] initWithPaymentType: PaymentTypeUpi paymentOptionID: nil]];
[preferredPaymentModes addObject: [[PaymentMode alloc] initWithPaymentType: PaymentTypeWallet paymentOptionID: nil]];
[preferredPaymentModes addObject: [[PaymentMode alloc] initWithPaymentType: PaymentTypeEmi paymentOptionID: nil]];
PayUCheckoutProConfig *config = [PayUCheckoutProConfig new];
config.paymentModesOrder = preferredPaymentModes;
The resulting order on the initial Checkout screen will be:
Cards (credit/debit)
Net Banking
UPI
Wallets
EMI
Set Native OTP Assist
It offers to capture OTP in the merchant app without any redirection to the bank’s 3Dsecure/ACS page. This means that there's one less point of failure in the checkout process and a faster completion rate for transactions.
To integrate this, please get enabled txn_ s2s_ flow on your merchant key from your Key Account Manager at PayU.
To see the Native OTP Assist experience, Please click on the link
Merchant can choose to auto Native OTP flow on with the below flag. The default value is false.
Swift Objective-C
Copy paymentParam.enableNativeOTP = < #Bool # >
Copy paymentParam.enableNativeOTP = <#(BOOL)#>;