1. Integration Steps

Step 1: Create a PayU account

First, create a PayU account. See Register for a Merchant Account.

Step 2: Set up build.gradle

Add the following URL in the root project’s build.gradle:

allprojects 
{
repositories {
maven {
url "https://phonepe.mycloudrepo.io/public/repositories/phonepe-intentsdk-android"
}
}
}

Add the following dependency in your application’s build.gradle:

implementation 'in.payu:phonepe-intent:1.7.5'

Step 1: Create Callbacks Instance

PayUPhonePeCallback provides the following callback methods.

  • onPaymentOptionFailure (String payuResponse, String merchantResponse): Calls when payment fails.
  • onPaymentOptionSuccess (String payuResponse, String merchantResponse): Calls when payment succeeds.
  • onPaymentOptionInitialisationFailure (int errorCode, String description): Called for PhonePe initialisation failure.
  • onPaymentOptionInitialisationSuccess (boolean result): Callback when PhonePe is successfully initialised.

Following are error messages concerning PhonePe initialization failure.

Error CodeError CodeDescription
1MERCHANTKEY_NOT
REGISTER_FOR_PHONEPE
Merchant is not registered for PhonePe with PayU

Create an instance of PayUPhonePeCallback similar to the following code block:

PayUPhonePeCallback payUPhonePeCallback = new PayUPhonePeCallback() {
@Override
public void onPaymentOptionFailure(String payuResponse, String merchantResponse) {
//Called when Payment gets failed.
}
@Override
public void onPaymentOptionInitialisationSuccess(boolean result) {
super.onPaymentOptionInitialisationSuccess(result);
// Merchants are advised to show PhonePe option on their UI after this callback is called.
}
@Override
public void onPaymentOptionSuccess(String payuResponse, String merchantResponse) {
//Called when Payment gets successful.
}
@Override
public void onPaymentOptionInitialisationFailure (int errorCode, String description) {
//Callback thrown in case PhonePe initialisation fails.
}
};

Step 2: Set up for Test/Sandbox merchant

If you are using the SDK with a test merchant, provide the following metadata value to the manifest file:

<application
<meta-data
android:name="payu_web_service_url"
android:value="https://test.payu.in" />
<meta-data
android:name="payu_post_url"
android:value="https://test.payu.in" />
</application>

Step 3: Check for PhonePe availability

SDK provides the checkForPaymentAvailability method to check if PhonePe payment is available or not on the device. This method must be executed before showing PhonePe as a checkout option.

PhonePe.getInstance().checkForPaymentAvailability(Activity activity, PayUPhonePeCallback callback, String paymentOptionHash, String merchantKey, String user_credentials)

Where:

  • PayUPhonePeCallback: the class to provide callbacks
  • Activity : Activity
  • paymentOptionHash: Payment Related Details hash
  • merchantKey: PayU Merchant Key
  • user_credentials: Provide user credentials or use “default”

To generate PaymentOption Hash, refer to Hash Generation.

Step 4: Make Payment by PhonePe

After successful initialization of PhonePe by calling checkForPaymentAvailability method, call makePayment method to make payment.

PhonePe.getInstance().makePayment(PayUPhonePeCallback callback, Activity activity, String postData,boolean isUserCacheEnabled, View customDialogView);

Where:

  • PayUPhonePeCallback: the class to provide callbacks
  • Activity: activity instance
  • postData: PayU postdata
  • isUserCacheEnabled: To Enable/Disable User Cache
  • customDialogView: Provide your Custom Progress dialog view (Optional)

To generate Payment Hash, refer to Hash Generation.

Sample PostDatafor hash

txnid=1524122818080&productinfo=product_info&user_credentials=default&key=*****&surl=**SUCCESS_URL**&furl=**FAILURE_URL&firstname=firstname&[email protected]&amount=10&udf1=udf1&udf2=udf2&udf3=udf3&udf4=udf4&udf5=udf5&pg=CASH&bankcode=PPINTENT&hash=***PAYMENT_HASH***