CustomBrowserCallback

Describes how to create an object of PayUCustomBrowserCallback.

PayUCustomBrowserCallback provides following callback methods.

  • onPaymentFailure(String payuResult,String merchantResponse) - Calls when payment fails.

  • onPaymentSuccess(String payuResult,String merchantResponse) - Calls when payment succeeds.

  • onCBErrorReceived(int errorCode,String errormsg) - Called for any error in custom browser.

Following error messages are thrown in callback method.

Error code : Errormsg
1 : VENDOR_NOT_SUPPORTED // Device Vendor is not supported
2 : DEVICE_NOT_SUPPORTED // Device is not supported
3 : APP_VERSION_MISMATCH // Samsung Pay version doesn't meet requirements
4 : COUNTRY_NOT_SUPPORTED // Country of device origin is not supported by Samsung Pay
5 : MERCHANT_KEY_NOT_REGISTER_FOR_SAMSUNG_PAY // Merchant is not registered for
Samsung Pay with PayU
6 : CONTEXT_NULL // Context is null
7 : PAYMENT_ID_NOT_PRESENT // Check your postdata
1001 : DEVICE_NOT_SUPPORTED //In case enablewebflow is set to false for Tez payment and Tez app is not present on device following error would be thrown
1002 : MERCHANT_INFO_NOT_PRESENT // In case below error is received while processing payment please check your postData and hash
  • setCBProperties(WebView webview, Bank payUCustomBrowser) - Callback where webview setting is done.

  • onBackButton(AlertDialog.Builder alertDialogBuilder) - This callback provides alert dialog access, so customisation can be done to alert dialog.

  • onBackApprove() - Calls when ‘ok’ is selected from alert dialog.

  • onBackDismiss()- Calls when ‘cancel’ is selected from alert dialog.

  • onPaymentTerminate() - Called when payment is terminated.

  • isPaymentOptionAvailable(CustomBrowserResultData resultData):Merchant must check for Samsung Pay/PhonePe payment option availability on customer device before showing Samsung Pay/PhonePe/Google Pay/UPI as payment option.This callback is called in response of checkForPaymentAvailability method present in CustomBrowser.Merchant can use value of resultData object like below.

resultData.getPaymentOption() - Gives PaymentOption i.e. SamsungPay/PhonePe/Google Pay/UPI.
resultData.isPaymentOptionAvailable() - Boolean whether Payment via selected PaymentOption is possible.
resultData.getSamsungPayVpa() - Gives SamsungPay Vpa associated with device.
resultData.getErrorMessage() - Gives error message in case PaymentOption is not available.
  • onVpaEntered(String vpa, PackageListDialogFragment packageListDialogFragment)(Available since version 7.3.0) - Merchant must override this function and provide verifyVpaHash in case they want payment via UPI Collect flow.

packageListDialogFragment.verifyVpa(verifyVpaHash);

To generate verifyVpaHash use command as validateVPA and var1 as Vpa address and calculate hash as described here.

Sample code for PayUCustomBrowserCallback:

PayUCustomBrowserCallback payUCustomBrowserCallback = new PayUCustomBrowserCallback() {
@Override
public void onPaymentFailure(String payuResponse,String merchantResponse) {
Intent intent = new Intent();
intent.putExtra(getString(R.string.cb_result), merchantResponse);
intent.putExtra(getString(R.string.cb_payu_response), payuResponse);
setResult(Activity.RESULT_CANCELED, intent);
finish();
}
@Override
public void onPaymentTerminate() {
}
@Override
public void onPaymentSuccess(String payuResponse,String merchantResponse) {
Intent intent = new Intent();
intent.putExtra(getString(R.string.cb_result), merchantResponse);
intent.putExtra(getString(R.string.cb_payu_response), payuResponse);
setResult(Activity.RESULT_OK, intent);
finish();
}
@Override
public void onCBErrorReceived(int code, String errormsg) {
}
@Override
public void setCBProperties(WebView webview, Bank payUCustomBrowser) {
webview.setWebChromeClient(new PayUWebChromeClient(payUCustomBrowser));
webview.setWebViewClient(new PayUWebViewClient(payUCustomBrowser,merchantKey));
webview.postUrl(url, payuConfig.getData().getBytes());
//comment above line if you are using CB is 6.1 or above
}
@Override
public void onBackApprove() {
PaymentsActivity.this.finish();
}
@Override
public void onBackDismiss() {
super.onBackDismiss();
}
@Override
public void onBackButton(AlertDialog.Builder alertDialogBuilder) {
super.onBackButton(alertDialogBuilder);
}
//Below method is available since version 7.1.3+
@Override
public void isPaymentOptionAvailable(CustomBrowserResultData resultData) {
Toast.makeText(PaymentsActivity.this, "isPaymentOptionAvailable"+resultData.getSamsungPayVpa()
, Toast.LENGTH_SHORT).show();
}
//Below method is available since version 7.3.0+
@Override
public void onVpaEntered(String vpa, PackageListDialogFragment packageListDialogFragment) {
//Calculate validateVpahash using vpa and provide to verifyVpa method of
PackageListDialogFragment like below.
packageListDialogFragment.verifyVpa(calculateHash(input));
}
};