/** * 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; } }