Hey! These docs are for version 3.2, which is no longer officially supported. Click here for the latest version, 1.0!

Payment Page

What is the size of Juspay Payment SDK?
Juspay Payments SDK is superlight at ~2MB. However, if you wish to include SDK based payment methods (such as GooglePay SDK, Paypal SDK etc..,) it may add up to the download size of your application.
How can I override the SMS permissions requested by the SDK?
You may override the SMS permissions by adding below code snippet to your app’s manifest file
  • <uses-permission android:name="android.permission.RECEIVE_SMS" tools:node="remove"/>
  • <uses-permission android:name="android.permission.READ_SMS" tools:node="remove" />
Why should prefetch be called in every user journey? Will it have any impact on my app performance?
Since the SDK uses a Micro Service architecture on top of Android, it is highly recommended to call preFetch to maintain resources up-to-date on the client. Calling the function before SDK initiation will download the latest code and update it locally.

It is recommended to call prefetch API from your app’s homescreen, to fetch the latest SDK updates. The latency of pre-fetch API shall be less than 1 second only and it will not have any impact on your app’s performance.
What is the need for signed payload and signature?
This is to avoid server-to-server calls between Merchant and Juspay, until an actual transaction is initiated. On the other hand, it also simplifies the integration process while ensuring security and high availability.
How to update the SDK version?
Once you have integrated with our Payments SDK, any version updates will require only a change of version number in you SDK specific dependency.
dependencies {
  implementation 'in.juspay:hypersdk:add updated version number here'
Why can’t Juspay provide a public key to the merchant (using which merchant signs payload)?
The signature process is a security enhancement measure for ensuring integrity of the payload. In such cases, the source of order/customer information (merchant) will have to retain the private key and the recipient of order/ customer information (Juspay) will need access to the public key.

Kindly note that the keys are not meant for encryption (wherein the encryption end will possess the public key and decryption end will possess the private key).
Getting a “java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/security/ProviderInstaller” exception while trying to run the android application?
You may have to add a dependency 'com.google.android.gms:play-services-base:' to your project.
Getting a “Webpage not available” or “net::ERR_CLEARTEXT_NOT_PERMITTED” error or there no webpage is loading after hitting the Pay button?
Please add

in your AndroidManifest.xml file.

Getting a “JSON parse error” or “Unexpected token u in JSON at position 0 error”?
The value provided for the payload parameter is not a valid JSON. Please verify this by running JSON.parse() on that string. You will notice that parsing fails.

Manually handcrafting stringified JSON, tends to become error-prone. We would recommend you to construct the JSON object and call JSON.stringify() to ensure that the string that is received is in fact a valid JSON.

Eg: payload = JSON.stringify({action: "initiate",merchant_id: "merchant_preprod"})

If done as suggested above, the payload string is guaranteed to be a valid stringified JSON and there won't be any issue during JSON parsing.
What are the logging points to be ensured while integrating the Juspay Android/iOS SDK?
Please ensure the below logging points. It will be useful in tracking the performance of Juspay SDK.
Merchant logging points - Android / iOS SDK
Category Aspect to be logged Comments
SDK requests Prefetch SDK payload This will help debug/ replicate errors, if any.
SDK requests Initiate SDK payload This will help debug/ replicate errors, if any.
SDK requests Process SDK payload This will help debug/ replicate errors, if any.
SDK requests Terminate SDK
SDK events event: initiate_result This will indicate whether intiate was success or failure
SDK events event: process_result This will cover all information including: payment status, user backpress, error scenarios
SDK events hide_loder event
Android Lifecycle Activity creation
Android Lifecycle onResume This can be used along with the juspay sdk request, to identify and debug any integration issues.
Android Lifecycle onPause
Android Lifecycle onDestroy
Android Lifecycle onStop
Android Lifecycle onActivityResult
Android Lifecycle isSdkInitialized response
Backpress control Response From juspay
User events No. of times pay button is clicked to open payment page for every order
App events No. of timeouts while waiting for the hide loader event
Note: All above log points shall be logged with respective timestamps
What is strict mode and how does Juspay SDK handle strict mode violations?
  • Strict mode is a high-bar quality check enabled only during the development cycle of android apps which detects things you might be doing wrong accidentally and brings them to your notice
  • Google developer docs says "But don't feel compelled to fix everything that StrictMode finds". Even many widely used Android Libraries also have multiple strict mode violations which are not fixed
  • In line with Google's best practices, we haven't fixed every Strict Mode violation. However, we ensure that this has no impact on performance of Juspay SDK
How to share an iOS Integrated build with Juspay Team using TestFlight?
  • Please add the UUID of the test devices to FAD and share the build for testing. UUID are as below
  • 1. 818e18d37d641aa8bd20d320f61e04de9c02c4e6
  • 2. 875695c13b92b4987762f213d335f57e0586e9b1
  • 3. f5933817d797270bd973506c44396bfffe94930d
  • 4. 00008020-001455EA2685002E

    Email: [email protected]

What are the limitations of displaying Web Payment Page inside App WebView?
Compared to the Integration of Web payment page on Android/iOS Webview, it is recommended to integrate Native SDK on Android & iOs platforms, due to following reasons
  • Feature restriction: Features such as OTP reading, bank page optimization, app invoked flows, UPI Intent, Visa 1-Click and Netbanking MPIN are possible only in Native SDK integration
  • User experience: The user experience on Native SDK payment page will be superior, because most user experience driven features are possible via Native SDK only