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.
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));
}
};