title: Paytm wallet Integration Android
body: <p>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: <code>Oops! Session expired due to inctivity our system encounted an obstacle</code> . Please show me the steps. Here's my code </p>
  
  <pre><code>public void onStartTransaction(View view) {
      PaytmPGService Service = PaytmPGService.getStagingService();
      Map&lt;String, String&gt; paramMap = new HashMap&lt;String, String&gt;();
  
      // 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
                  }
  
              });
  }
  </code></pre>
  
  <p>Please check logcat response:- </p>
  
  <pre><code>        INDUSTRY_TYPE_ID=Retail&amp;CHANNEL_ID=WAP&amp;CHECKSUMHASH=Y1gNn%2BSaRMBSkv8WKLHGO0lchmnAqL10YeRZGQkYQv02iIfCa6qeoKZpAhJh8%2BTVP1uXvZuB5PnwM6AZe3LJ4q9oIB%2B1voaX7vjc%2FmjGg%2B4%3D&amp;MOBILE_NO=pawan3&amp;TXN_AMOUNT=1&amp;MID=Bright17797484586497&amp;EMAIL=pawandeepkaurkalsi%40gmail.com&amp;THEME=merchant&amp;payt_STATUS=1&amp;CUST_ID=CUST23657&amp;WEBSITE=BrightRootsPaytm&amp;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
  </code></pre>