Advanced Integration

Customize your integration (Optional Step)

Offer

You can pass the offer keys to checkoutPro as below:

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]

Change theme

You can change the primary and the secondary color of the UI to match your apps theme

let config = PayUCheckoutProConfig()
config.customiseUI(primaryColor: <#UIColor#>, secondaryColor: <#UIColor#>)

You can customise the name and logo to personalise the checkout screen

let config = PayUCheckoutProConfig()
config.merchantName = <#T##String?#>
config.merchantLogo = <#T##UIImage?#>

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.

let config = PayUCheckoutProConfig()
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.

let config = PayUCheckoutProConfig()
config.showExitConfirmationOnPaymentScreen = <#Bool#>

Auto select OTP

Merchant can choose to auto select OTP flow on bank page with below flag. Default value is false.

let config = PayUCheckoutProConfig()
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.

let config = PayUCheckoutProConfig()
config.merchantResponseTimeout = <#TimeInterval?#>

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.

let config = PayUCheckoutProConfig()
config.surePayCount = <#UInt?#>

Review Order

Merchant can pass the checkout order details to the SDK that will be displayed in the SDK during the transaction flow.

let config = PayUCheckoutProConfig()
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

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

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

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

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.

paymentParam.enableNativeOTP = <#Bool#>

Last updated