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.
To generate verifyVpaHash use command as validateVPA and var1 as Vpa address and calculate hash as describedhere.
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));
}
};