Example #1
0
 public function procedcheckoutAction()
 {
     $tempObj = new Model_DbTable_Checkout();
     $producturrency = new Admin_Model_DbTable_Countries();
     $modelAuthor = new Publisher_Model_DbTable_Publishers();
     $creditHistoryObj = new User_Model_DbTable_Chistory();
     $transactionHistoryObj = new User_Model_DbTable_Transactionhistory();
     $this->modelBooks = new Publisher_Model_DbTable_Books();
     $modelImage = new Publisher_Model_DbTable_BookImages();
     $modelStore = new Admin_Model_DbTable_Countries();
     $productPrice = new Publisher_Model_DbTable_BookPrices();
     $productPrice = new Publisher_Model_DbTable_BookPrices();
     $groupSubsObj = new Company_Model_DbTable_GroupSubscriptions();
     $UsersubObj = new Model_DbTable_Usersubscription();
     //$price = 1000;
     $subscription_store = "";
     $subscription_language = "";
     $subscription_issues = "";
     $formdata = $this->getRequest()->getPost();
     $price = $formdata['total_price'];
     $sessid = $formdata['sess_id'];
     //	echo "<pre>";
     //print_r($formdata);
     //exit;
     $user_id = $formdata['user_id'];
     if (isset($price) && $price != 0) {
         $price = $price * 100;
         // multiply the price by 100 because TWPG deals price in kobo.
         $xml = "<?xml version='1.0' encoding='UTF-8'?>\n\t\t\t\t\t<TKKPG>\n\t\t\t\t\t<Request>\n\t\t\t\t\t<Operation>CreateOrder</Operation>\n\t\t\t\t\t<Language>EN</Language>\n\t\t\t\t\t<Order>\n\t\t\t\t\t<Merchant>EVENDOR</Merchant>\n\t\t\t\t\t<Amount>" . $price . "</Amount>\n\t\t\t\t\t<Currency>566</Currency>\n\t\t\t\t\t<Description>Payment for test</Description>\n\t\t\t\t\t<ApproveURL>" . $this->view->serverUrl() . $this->view->baseUrl() . "/checkout/approved/</ApproveURL>\n\t\t\t\t\t<CancelURL>" . $this->view->serverUrl() . $this->view->baseUrl() . "/checkout/declined/</CancelURL>\n\t\t\t\t\t<DeclineURL>" . $this->view->serverUrl() . $this->view->baseUrl() . "/checkout/declined/</DeclineURL>\n\t\t\t\t\t</Order>\n\t\t\t\t\t</Request>\n\t\t\t\t\t</TKKPG>";
         $ch = curl_init();
         //this is to initialize curl
         curl_setopt($ch, CURLOPT_URL, "https://196.46.20.36:5443/Exec");
         //curl_setopt($ch, CURLOPT_URL,"https://mpi.valucardnigeria.com:5443/Exec");
         curl_setopt($ch, CURLOPT_SSLVERSION, 3);
         curl_setopt($ch, CURLOPT_VERBOSE, '1');
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
         curl_setopt($ch, CURLOPT_TIMEOUT, 5000);
         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
         curl_setopt($ch, CURLOPT_CAINFO, getcwd() . '/public/paymentgateway/cert/CAcert.crt');
         curl_setopt($ch, CURLOPT_SSLCERT, getcwd() . '/public/paymentgateway/cert/myshop.pem');
         curl_setopt($ch, CURLOPT_SSLKEY, getcwd() . '/public/paymentgateway/cert/myshop.key');
         //curl_setopt($ch, CURLOPT_SSLKEY, getcwd().'/public/paymentgateway/cert/myshop.key');
         curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
         curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
         $response = curl_exec($ch);
         // this line post to our server
         //echo "<pre>";
         //print_r($response);
         //exit;
         //echo htmlentities($response); //use this check the response sent by our PG at every point
         //exit;
         if (!(curl_errno($ch) > 0)) {
             //$ch>=0 shows error while $ch<=0 shows no error
             $parsedxml = simplexml_load_string($response);
             foreach ($parsedxml->children() as $RESPONSENODE) {
                 foreach ($RESPONSENODE->children() as $ORDERNODE) {
                     foreach ($ORDERNODE->children() as $child) {
                         if ($child->getName() == "OrderID") {
                             $orderid = $child;
                         }
                         if ($child->getName() == "SessionID") {
                             $sessionid = $child;
                         }
                         if ($child->getName() == "URL") {
                             $url = $child;
                         }
                     }
                 }
             }
             //end all loop
             $gateway_url = $url . "?ORDERID=" . $orderid . "&SESSIONID=" . $sessionid;
             /*
             *
             					THE ABOVE FORMED URL ($gateway_url) IS THE URL USED TO 
             					CALL THE PAYMENT GATEWAY....
             					YOU CAN USE THIS URL IN THE SOURCE (src) OF AN IFRAME.
             					E.G  
             					<iframe src= "<?php echo $gateway_url ?>" frameborder="0" scrolling="no"></iframe>
             *
             */
             if ($orderid != '' && $sessionid != '') {
                 $array_order_status = array("order_id" => $orderid, "order_sessionid" => $sessionid);
                 $tempObj->update($array_order_status, 'user_id="' . $user_id . '" and session_id="' . $sessid . '"');
             }
             $storage_company = new Zend_Auth_Storage_Session('company_type');
             $company_data = $storage_company->read();
             if ($company_data->account_type == '1') {
                 $tempData = $tempObj->fetchAll("order_id='" . $orderid . "' and session_id='" . $sessid . "'");
             } else {
                 $tempData = $tempObj->fetchAll("order_id='" . $orderid . "' and is_purchase!='1' and session_id='" . $sessid . "'");
             }
             $order_details = "<table cellpadding='1'><tr><td colspan='3'>Order Id:" . $orderId . "</td></tr><tr><td>Item</td><td>Price</td><td>Quantity</td></tr>";
             foreach ($tempData as $dataDet) {
                 $productPriceInfo = $productPrice->getPriceByStoreId($dataDet['product_id'], $dataDet['store_id']);
                 if ($dataDet['group_id'] != '' && $dataDet['group_id'] != 0) {
                     $dateTime = date('Y-m-d H:i');
                     $price = $productPriceInfo['group_price'];
                     $arrayDataGroup = array("publication_id" => $dataDet['product_id'], "group_id" => $dataDet['group_id'], "company_id" => $dataDet['user_id'], "assigned_date" => $dateTime);
                     //$groupSubsObj->insert($arrayDataGroup);
                 } else {
                     $price = $productPriceInfo['price'];
                 }
                 $orderSt = 0;
                 $product_details = $this->modelBooks->fetchRow("id='" . $dataDet['product_id'] . "'");
                 $getBrandInfo = $this->modelBooks->getBrandInfo($product_details['title']);
                 if (!empty($getBrandInfo) && is_numeric($product_details['title'])) {
                     $titleBrand = $getBrandInfo['brand'];
                 } else {
                     $titleBrand = $product_details['title'];
                 }
                 if (!empty($product_details['parent_brand_id']) && $product_details['cat_id'] != '3') {
                     $productInfo = $this->modelBooks->fetchRow('id="' . $product_details['parent_brand_id'] . '"');
                     $getParentBrandInfo = $this->modelBooks->getBrandInfo($productInfo->title);
                     if (!empty($getParentBrandInfo)) {
                         //$titleBrand=$titleBrand.' ('.$getParentBrandInfo['brand'].')';
                         $titleBrand = $getParentBrandInfo['brand'] . " - " . $titleBrand;
                     }
                 }
                 $getCurrencyName = $producturrency->getCurrencyCode($dataDet['store_id']);
                 $authorInfo = $modelAuthor->getInfoByPublisherId($product_details['author_id']);
                 $imageInfo = $modelImage->getImageInfoByProductId($product_details['id']);
                 if ($dataDet['subscription_type'] == '0' || $dataDet['subscription_type'] == '') {
                     if ($dataDet['group_id'] > 0) {
                         $price = $productPriceInfo['group_price'];
                     } else {
                         $price = $productPriceInfo['price'];
                     }
                 } else {
                     $price = $dataDet['subscription_price'];
                     $subscription_store = $dataDet['subscription_store'];
                     $subscription_language = $dataDet['subscription_language'];
                     $subscription_issues = $dataDet['subscription_issues'];
                 }
                 $converted_price = $producturrency->currencyconverter($getCurrencyName, "NGN", $price);
                 $tempDatInsert = array();
                 $tempDatInsert['userid'] = $dataDet['user_id'];
                 $tempDatInsert['bookid'] = $dataDet['product_id'];
                 $tempDatInsert['store_id'] = $dataDet['store_id'];
                 $tempDatInsert['price'] = $price;
                 $tempDatInsert['quantity'] = $dataDet['quntity'];
                 $tempDatInsert['book_name'] = $titleBrand;
                 $tempDatInsert['add_date'] = date('Y-m-d H:i:s');
                 $tempDatInsert['group_id'] = $dataDet['group_id'];
                 $tempDatInsert['order_id'] = $orderid;
                 $tempDatInsert['payment_status'] = $orderSt;
                 $tempDatInsert['converted_price'] = $converted_price;
                 $tempDatInsert['subscription_type'] = $dataDet['subscription_type'];
                 $tempDatInsert['subscription_name'] = $dataDet['subscription_name'];
                 $tempDatInsert['subscription_store'] = $dataDet['subscription_store'];
                 $tempDatInsert['subscription_language'] = $dataDet['subscription_language'];
                 $tempDatInsert['subscription_issues'] = $dataDet['subscription_issues'];
                 $creditHistoryObj->insert($tempDatInsert);
                 $todaysdate = date('Y-m-d H:i:s');
                 if ($dataDet['subscription_name'] == 'Weekly') {
                     $date = new DateTime($todaysdate);
                     $date->modify("+7 day");
                     $end_date = $date->format("Y-m-d H:i:s");
                 } else {
                     if ($dataDet['subscription_name'] == 'Monthly') {
                         $date = new DateTime($todaysdate);
                         $date->modify("+30 day");
                         $end_date = $date->format("Y-m-d H:i:s");
                     } else {
                         if ($dataDet['subscription_name'] == 'Quarterly') {
                             $date = new DateTime($todaysdate);
                             $date->modify("+90 day");
                             $end_date = $date->format("Y-m-d H:i:s");
                         } else {
                             if ($dataDet['subscription_name'] == 'Half Yearly') {
                                 $date = new DateTime($todaysdate);
                                 $date->modify("+182 day");
                                 $end_date = $date->format("Y-m-d H:i:s");
                             } else {
                                 if ($dataDet['subscription_name'] == 'Yearly') {
                                     $date = new DateTime($todaysdate);
                                     $date->modify("+365 day");
                                     $end_date = $date->format("Y-m-d H:i:s");
                                 }
                             }
                         }
                     }
                 }
                 $subscriptionObj = array();
                 $subscriptionObj['order_id'] = $orderid;
                 $subscriptionObj['product_id'] = $dataDet['product_id'];
                 $subscriptionObj['group_id'] = $dataDet['group_id'];
                 $subscriptionObj['user_id'] = $dataDet['user_id'];
                 $subscriptionObj['subscription_type'] = $dataDet['subscription_type'];
                 $subscriptionObj['subscription_name'] = $dataDet['subscription_name'];
                 $subscriptionObj['subscription_price'] = $price;
                 $subscriptionObj['country'] = $dataDet['subscription_store'];
                 $subscriptionObj['language'] = $dataDet['subscription_language'];
                 $subscriptionObj['number_of_issues'] = $dataDet['subscription_issues'];
                 $subscriptionObj['start_date'] = date('Y-m-d H:i:s');
                 $subscriptionObj['end_date'] = $end_date;
                 $subscriptionObj['remaining_downloads'] = $dataDet['subscription_issues'];
                 $subscriptionObj['publication_id'] = $product_details['parent_brand_id'];
                 $UsersubObj->insert($subscriptionObj);
             }
             //echo $gateway_url;
             //exit;
             header("location: " . $gateway_url);
         } else {
             echo curl_error($ch);
             exit;
         }
         exit;
     } else {
         $this->_redirect('/checkout/cart/');
     }
 }
Example #2
0
    function displayorderAction()
    {
        ##########################   data ###########################
        $orderIdForPurchase = $this->_getParam('orderid');
        $producturrency = new Admin_Model_DbTable_Countries();
        $modelAuthor = new Publisher_Model_DbTable_Publishers();
        $tempObj = new Model_DbTable_Checkout();
        $creditHistoryObj = new User_Model_DbTable_Chistory();
        $transactionHistoryObj = new User_Model_DbTable_Transactionhistory();
        $productPrice = new Publisher_Model_DbTable_BookPrices();
        $modelImage = new Publisher_Model_DbTable_BookImages();
        $modelStore = new Admin_Model_DbTable_Countries();
        $productPrice = new Publisher_Model_DbTable_BookPrices();
        $modelSubscription = new Publisher_Model_DbTable_Subscriptions();
        $this->modelBooks = new Publisher_Model_DbTable_Books();
        $UsersubObj = new Model_DbTable_Usersubscription();
        $storage_company = new Zend_Auth_Storage_Session('company_type');
        $company_data = $storage_company->read();
        $storage = new Zend_Auth_Storage_Session('account_type');
        $userCompanyObj = new Company_Model_DbTable_Companies();
        $data = $storage->read();
        $useremails = "";
        if ($data->id) {
            $user_id = $data->id;
        } elseif ($company_data->id) {
            $user_id = $company_data->id;
        }
        if ($company_data->account_type == '1') {
            $groupObj = new Company_Model_DbTable_Groups();
            $groupList = $groupObj->getGroupList($company_data->id);
        }
        $datahistory = "<div class='display-order'><div class='top_heading'>\t\t\t\t\n\t\t    \t<div class='item'>Item(s)</div>\n\t\t\t\t<div class='prices'>Subscribed Users</div>\n\t\t        <div class='prices'>Subscription Type</div>\n\t\t        <div class='prices'>Price</div>";
        if ($company_data->account_type == '1') {
            $datahistory .= "<div class='quantity'>Qty</div>";
        } else {
            $datahistory .= "<div class='quantity'>&nbsp;</div>";
        }
        $datahistory .= "<div class='total'>Total</div>\n\t\t    </div>";
        $orderData = $creditHistoryObj->fetchAll("order_id='" . $orderIdForPurchase . "'");
        $dataDet = '';
        foreach ($orderData as $dataDet) {
            $price = $dataDet['price'];
            $subscription_data = $modelSubscription->fetchAll('id="' . $dataDet['subscription_type'] . '"');
            $product_details = $this->modelBooks->fetchRow("id='" . $dataDet['bookid'] . "'");
            $transaction_details = $transactionHistoryObj->fetchRow("id='" . $dataDet['transaction_id'] . "'");
            $catInfo = $this->modelBooks->getCategoryInfo($product_details['cat_id']);
            $getCurrencyName = $producturrency->getCurrencyCode($dataDet['store_id']);
            $authorInfo = $modelAuthor->getInfoByPublisherId($product_details['publisher_id']);
            $imageInfo = $modelImage->getImageInfoByProductId($product_details['id']);
            $total_price = $total_price + $producturrency->currencyconverter($getCurrencyName, "NGN", $dataDet['quantity'] * $price);
            if ($dataDet['payment_status'] == 1) {
                $orderStatus = 'Approved';
            } elseif ($dataDet['payment_status'] == 2) {
                $orderStatus = 'Declined';
            } else {
                $orderStatus = 'Pending';
            }
            if (count($subscription_data) > 0) {
                $subtype = $subscription_data[0]->subscription_type;
            } else {
                $subtype = "N/A";
            }
            if ($company_data->account_type == '1') {
                $subscriptiondatavalues = $UsersubObj->fetchAll('order_id=' . $orderIdForPurchase . ' and product_id=' . $dataDet['bookid'] . '  and active_date IS NULL');
                foreach ($subscriptiondatavalues as $userdata) {
                    $user_details = $userCompanyObj->fetchRow("id='" . $userdata['user_id'] . "'");
                    $useremails .= $user_details['user_email'] . '<br/>';
                }
                $useremails = rtrim($useremails, '<br/>');
            } else {
                $user_details = $userCompanyObj->fetchRow("id='" . $user_id . "'");
                $useremails = $user_details['user_email'];
            }
            $datahistory .= '<div class="cart_detail">
		    	<div class="item_content">
		   	    	<img src="' . $this->view->serverUrl() . $this->view->baseUrl() . '/' . USER_UPLOAD_DIR . 'thumb1_' . $imageInfo['image_name'] . '" width="140" height="175" alt="">
		            <h5>' . stripslashes($dataDet['book_name']) . '</h5>';
            if ($authorInfo['first_name'] != '') {
                $datahistory .= '<span><em>by: </em> ' . stripslashes($authorInfo['first_name'] . '&nbsp;' . $authorInfo['last_name']) . '</span>';
            }
            $datahistory .= '<span><em>Category: </em> ' . stripslashes($catInfo['category_name']) . '</span>
					<span><em>publisher:</em> ' . stripslashes($authorInfo['publisher']) . '</span>
		           </div>     
				   <div class="space_content">' . $useremails . '</div>
				<div class="prices_content">' . $subtype . '</div>
		        <div class="prices_content">&#x20a6;' . $producturrency->currencyconverter($getCurrencyName, "NGN", $price) . '</div>
		        <div style="float: left;padding: 5% 0;text-align: center;width: 70px;">
		        	<div class="">';
            if ($dataDet['group_id'] != 0) {
                $datahistory .= '<div >' . $dataDet['quantity'] . '</div>';
            }
            $datahistory .= '</div>
		        </div>
		        <div class="total_content">&#x20a6;' . @number_format($producturrency->currencyconverter($getCurrencyName, "NGN", $dataDet['quantity'] * $price), 2) . '</div>    
		 		</div>';
            if ($company_data->account_type == '1') {
                $finalsubprice = $finalsubprice + $dataDet['quantity'] * $price;
            } else {
                $finalsubprice = $finalsubprice + $price;
            }
        }
        $datahistory .= '<div class="shipping_total">
					<div class="row">
				    	<div class="lt">Subtotal</div>
				        <div class="rt">&#x20a6;' . @number_format($total_price, 2) . '</div>
				    </div>
				 		    
				    <div class="row" style="border:none;">
				    	<div class="lt">Tax</div>
				        <div class="rt">&#x20a6;' . '00.00</div>
				    </div>
				    
				    <div class="row subtotal">
				    	<div class="lt">Total</div>
				        <div class="rt">&#x20a6;' . @number_format($total_price, 2) . '</div>
				    </div>	
				      <div class="row subtotal">
				    	<div class="lt">Order Id</div>
				        <div class="rt">' . $orderIdForPurchase . '</div>
				    </div>
				      <div class="row subtotal">
				    	<div class="lt">Payment Status</div>
				        <div class="rt">' . $orderStatus . '</div>
				    </div>		   
				</div></div>';
        $this->view->datahistory = $datahistory;
        $this->view->orderId = $orderIdForPurchase;
        $this->view->transactionId = $orderData[0]['transaction_id'];
        $this->view->orderStatus = $orderStatus;
        $this->view->responseDescription = $transaction_details['responseDescription'];
    }