Paytm wallet Integration Android

1.3k views Asked by At

Hi I want to integrate paytm, I did a sample of Paytm. I've created my developer account on paytm and got the app credentials, Merchant details, etc. But it doesn't seem to work. It shows the error: Oops! Session expired due to inctivity our system encounted an obstacle . Please show me the steps. Here's my code

public void onStartTransaction(View view) {
    PaytmPGService Service = PaytmPGService.getStagingService();
    Map<String, String> paramMap = new HashMap<String, String>();

    // these are mandatory parameters

    paramMap.put("ORDER_ID", ((EditText) findViewById(R.id.order_id)).getText().toString());
    paramMap.put("MID", ((EditText) findViewById(R.id.merchant_id)).getText().toString());
    paramMap.put("CUST_ID", ((EditText) findViewById(R.id.customer_id)).getText().toString());
    paramMap.put("CHANNEL_ID", ((EditText) findViewById(R.id.channel_id)).getText().toString());
    paramMap.put("INDUSTRY_TYPE_ID", ((EditText) findViewById(R.id.industry_type_id)).getText().toString());
    paramMap.put("WEBSITE", ((EditText) findViewById(R.id.website)).getText().toString());
    paramMap.put("TXN_AMOUNT", ((EditText) findViewById(R.id.transaction_amount)).getText().toString());
    paramMap.put("THEME", ((EditText) findViewById(R.id.theme)).getText().toString());
    paramMap.put("EMAIL", ((EditText) findViewById(R.id.cust_email_id)).getText().toString());
    paramMap.put("MOBILE_NO", ((EditText) findViewById(R.id.cust_mobile_no)).getText().toString());
    PaytmOrder Order = new PaytmOrder(paramMap);

    PaytmMerchant Merchant = new PaytmMerchant(
            "https://pguat.paytm.com/paytmchecksum/paytmCheckSumGenerator.jsp",
            "https://pguat.paytm.com/paytmchecksum/paytmCheckSumVerify.jsp");

    Service.initialize(Order, Merchant, null);

    Service.startPaymentTransaction(this, true, true,
            new PaytmPaymentTransactionCallback() {
                @Override
                public void someUIErrorOccurred(String inErrorMessage) {
                    // Some UI Error Occurred in Payment Gateway Activity.
                    // // This may be due to initialization of views in
                    // Payment Gateway Activity or may be due to //
                    // initialization of webview. // Error Message details
                    // the error occurred.
                }

                @Override
                public void onTransactionSuccess(Bundle inResponse) {
                    // After successful transaction this method gets called.
                    // // Response bundle contains the merchant response
                    // parameters.
                    Log.e("LOG", "Payment Transaction is successful " + inResponse);
                    Toast.makeText(getApplicationContext(), "Payment Transaction is successful ", Toast.LENGTH_LONG).show();
                }

                @Override
                public void onTransactionFailure(String inErrorMessage,
                        Bundle inResponse) {
                    // This method gets called if transaction failed. //
                    // Here in this case transaction is completed, but with
                    // a failure. // Error Message describes the reason for
                    // failure. // Response bundle contains the merchant
                    // response parameters.
                    Log.e("LOG", "Payment Transaction Failed " + inErrorMessage);
                    Toast.makeText(getBaseContext(), "Payment Transaction Failed ", Toast.LENGTH_LONG).show();
                }

                @Override
                public void networkNotAvailable() { // If network is not
                                                    // available, then this
                                                    // method gets called.

                    Log.e("LOG", "Payment Transaction Network Not Available !!!!!!!~~~~~~~~~" );
                }

                @Override
                public void clientAuthenticationFailed(String inErrorMessage) {
                    // This method gets called if client authentication
                    // failed. // Failure may be due to following reasons //
                    // 1. Server error or downtime. // 2. Server unable to
                    // generate checksum or checksum response is not in
                    // proper format. // 3. Server failed to authenticate
                    // that client. That is value of payt_STATUS is 2. //
                    // Error Message describes the reason for failure.

                    Log.e("LOG", "~~~~~~~~~~~~~ Payment Transaction Client Auth Failed ~~~~~~~~~"  + inErrorMessage);
                }

                @Override
                public void onErrorLoadingWebPage(int iniErrorCode,
                        String inErrorMessage, String inFailingUrl) {

                }

                // had to be added: NOTE
                @Override
                public void onBackPressedCancelTransaction() {
                    // TODO Auto-generated method stub
                }

            });
}

Please check logcat response:-

        INDUSTRY_TYPE_ID=Retail&CHANNEL_ID=WAP&CHECKSUMHASH=Y1gNn%2BSaRMBSkv8WKLHGO0lchmnAqL10YeRZGQkYQv02iIfCa6qeoKZpAhJh8%2BTVP1uXvZuB5PnwM6AZe3LJ4q9oIB%2B1voaX7vjc%2FmjGg%2B4%3D&MOBILE_NO=pawan3&TXN_AMOUNT=1&MID=Bright17797484586497&EMAIL=pawandeepkaurkalsi%40gmail.com&THEME=merchant&payt_STATUS=1&CUST_ID=CUST23657&WEBSITE=BrightRootsPaytm&ORDER_ID=ORDER100004939
 01-09 17:44:01.953 14201-14201/com.example.merchantapp I/cr_Ime: ImeThread is enabled.
 01-09 17:44:01.954 14201-16142/com.example.merchantapp W/cr_media: Requires BLUETOOTH permission
 01-09 17:44:02.009 14201-14201/com.example.merchantapp D/PGSDK: Page started loading https://pguat.paytm.com/oltp-web/processTransaction
 01-09 17:44:02.011 14201-14201/com.example.merchantapp D/PGSDK: Progress dialog started
 01-09 17:44:02.033 14201-16176/com.example.merchantapp E/libEGL: validate_display:255 error 3008 (EGL_BAD_DISPLAY)
 01-09 17:44:02.063 14201-16176/com.example.merchantapp W/VideoCapabilities: Unrecognized profile/level 32768/2 for video/mp4v-es
 01-09 17:44:02.063 14201-16176/com.example.merchantapp I/VideoCapabilities: Unsupported profile 8 for video/mp4v-es
 01-09 17:44:02.063 14201-16176/com.example.merchantapp I/VideoCapabilities: Unsupported profile 8 for video/mp4v-es
 01-09 17:44:02.063 14201-16176/com.example.merchantapp I/VideoCapabilities: Unsupported profile 8 for video/mp4v-es
 01-09 17:44:02.063 14201-16176/com.example.merchantapp I/VideoCapabilities: Unsupported profile 8 for video/mp4v-es
01-09 17:44:02.064 14201-16176/com.example.merchantapp I/VideoCapabilities: Unsupported profile 8 for video/mp4v-es
01-09 17:44:02.064 14201-16176/com.example.merchantapp I/VideoCapabilities: Unsupported profile 8 for video/mp4v-es
01-09 17:44:02.100 14201-16176/com.example.merchantapp I/VideoCapabilities: Unsupported profile 4 for video/mp4v-es
01-09 17:44:02.783 14201-14201/com.example.merchantapp W/cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 14201
01-09 17:44:03.145 14201-14201/com.example.merchantapp E/chromium: [ERROR:interface_registry.cc(99)] Failed to locate a binder for interface: autofill::mojom::AutofillDriver
01-09 17:44:04.293 14201-14201/com.example.merchantapp D/PGSDK: Page finished loading https://pguat.paytm.com/oltp-web/processTransaction
 01-09 17:44:04.294 14201-14201/com.example.merchantapp D/PGSDK: Progress dialog ended
1

There are 1 answers

1
Pratik Gondil On

Please follow steps for integrating paytm.

Step are given below. 1.download PGSDK library from http://paywithpaytm.com/developer/#web_plugin or https://github.com/Paytm-Payments/Paytm_Android_App_Kit

2.Client side certificate (Optional :provide by PAYTM Web). Password for the Client side certificate. (Optional: provided by PAYTM Web). Add Client side certificate file inside raw folder. If raw folder is not there then create raw folder within “res” folder.

3.Add the INTERNET and ACCESS_NETWORK_STATE permissions to your AndroidManifest.xml. These two permissions are required for PGSDK Service to run. AndroidManifest.xml

4.Add PaytmPGActivity in your AndroidManifest.xml and this activity already present in your PGSDK.This Activity perform all transaction related information and provide you callback.

Follow this link Hope this helps.:)