/**
  * Check for valid paytm server callback // response processing //
  **/
 function check_paytm_response()
 {
     global $woocommerce;
     if (isset($_REQUEST['ORDERID']) && isset($_REQUEST['RESPCODE'])) {
         $order_sent = $_REQUEST['ORDERID'];
         $responseDescription = $_REQUEST['RESPMSG'];
         if (version_compare(WOOCOMMERCE_VERSION, '2.0.0', '>=')) {
             $order = new WC_Order($_REQUEST['ORDERID']);
         } else {
             $order = new woocommerce_order($_REQUEST['ORDERID']);
         }
         if ($this->log == "yes") {
             error_log("Response Code = " . $_REQUEST['RESPCODE']);
         }
         //  $redirect_url = ($this -> redirect_page_id=="" || $this -> redirect_page_id==0)?get_site_url() . "/":get_permalink($this -> redirect_page_id);
         $redirect_url = $order->get_checkout_order_received_url();
         $this->msg['class'] = 'error';
         $this->msg['message'] = "Thank you for shopping with us. However, the transaction has been Failed For Reason  : " . $responseDescription;
         if ($_REQUEST['RESPCODE'] == 01) {
             // success
             $order_amount = $order->order_total;
             if ($_REQUEST['TXNAMOUNT'] == $order_amount) {
                 if ($this->log == "yes") {
                     error_log("amount matched");
                 }
                 // code by paytm team
                 $order_sent = $_POST['ORDERID'];
                 $res_code = $_POST['RESPCODE'];
                 $responseDescription = $_POST['RESPMSG'];
                 $checksum_recv = $_POST['CHECKSUMHASH'];
                 $paramList = $_POST;
                 $order_amount = $_POST['TXNAMOUNT'];
                 //  code by paytm team
                 $all = $paramList;
                 if ($this->log == "yes") {
                     error_log("received parameters = " . $all);
                 }
                 $bool = "FALSE";
                 $bool = verifychecksum_e($paramList, $this->secret_key, $checksum_recv);
                 //$newcheck = Checksum::calculateChecksum($this->secret_key, $all);
                 if ($this->log == "yes") {
                     error_log("calculated checksum = " . $newch . " and checksum received = " . $_REQUEST['checksum']);
                 }
                 if ($bool == "TRUE") {
                     if ($order->status !== 'completed') {
                         error_log("SUCCESS");
                         $this->msg['message'] = "Thank you for your order . Your transaction has been successful.";
                         $this->msg['class'] = 'success';
                         if ($order->status == 'processing') {
                         } else {
                             $order->payment_complete();
                             $order->add_order_note('Mobile Wallet payment successful');
                             $order->add_order_note($this->msg['message']);
                             $woocommerce->cart->empty_cart();
                         }
                     }
                 } else {
                     // server to server failed while call//
                     //error_log("api process failed");
                     $this->msg['class'] = 'error';
                     $this->msg['message'] = "Severe Error Occur.";
                     $order->update_status('failed');
                     $order->add_order_note('Failed');
                     $order->add_order_note($this->msg['message']);
                 }
             } else {
                 // Order mismatch occur //
                 //error_log("order mismatch");
                 $this->msg['class'] = 'error';
                 $this->msg['message'] = "Order Mismatch Occur";
                 $order->update_status('failed');
                 $order->add_order_note('Failed');
                 $order->add_order_note($this->msg['message']);
             }
         } else {
             $order->update_status('failed');
             $order->add_order_note('Failed');
             $order->add_order_note($responseDescription);
             $order->add_order_note($this->msg['message']);
         }
         add_action('the_content', array(&$this, 'paytmShowMessage'));
         //$redirect_url = ($this -> redirect_page_id=="" || $this -> redirect_page_id==0)?get_site_url() . "/":get_permalink($this -> redirect_page_id);
         $redirect_url = $order->get_checkout_order_received_url();
         //For wooCoomerce 2.0
         $redirect_url = add_query_arg(array('msg' => urlencode($this->msg['message']), 'type' => $this->msg['class']), $redirect_url);
         wp_redirect($redirect_url);
         exit;
     }
 }