Beispiel #1
0
 /**
  * process callback
  */
 function paymentProcess($order_id, $crypt)
 {
     //hack for changing white space to + sign
     $crypt = str_replace(' ', '+', $crypt);
     require_once 'models/ecommerce/ecommerce_order.php';
     $Order = new ecommerce_order();
     //decode crypt
     $decoded = self::decryptAes($crypt, ECOMMERCE_TRANSACTION_PROTX_PASSWORD);
     //explode protx data
     parse_str($decoded, $response);
     $this->msgProtxStatus($response['Status']);
     $order_data = $Order->getOrder($order_id);
     $transaction_data['order_id'] = $order_data['id'];
     $transaction_data['pg_data'] = serialize($response);
     $transaction_data['currency_code'] = GLOBAL_DEFAULT_CURRENCY;
     if (is_numeric($response['Amount'])) {
         $transaction_data['amount'] = $response['Amount'];
     } else {
         $transaction_data['amount'] = 0;
     }
     $transaction_data['created'] = date('c');
     $transaction_data['type'] = 'protx';
     if ($response['Status'] == 'OK') {
         $transaction_data['status'] = 1;
     } else {
         $transaction_data['status'] = 0;
     }
     /**
      * insert
      */
     if ($id = $this->Transaction->insert($transaction_data)) {
         // in payment_success must be everytime Status OK
         if ($response['Status'] == 'OK') {
             $Order->setStatus($order_id, 1);
             //send email to admin
             require_once 'models/common/common_email.php';
             $EmailForm = new common_email();
             $_Onxshop_Request = new Onxshop_Request("component/ecommerce/order_detail~order_id={$order_data['id']}~");
             $order_data['order_detail'] = $_Onxshop_Request->getContent();
             //this allows use customer data and company data in the mail template
             //is passed as DATA to template in common_email->_format
             $GLOBALS['common_email']['transaction'] = $transaction_data;
             $GLOBALS['common_email']['order'] = $order_data;
             if (!$EmailForm->sendEmail('new_order_paid', 'n/a', $order_data['client']['customer']['email'], $order_data['client']['customer']['first_name'] . " " . $order_data['client']['customer']['last_name'])) {
                 msg('ecommerce_transaction: Cant send email.', 'error', 2);
             }
             if ($Order->conf['mail_to_address']) {
                 if (!$EmailForm->sendEmail('new_order_paid', 'n/a', $Order->conf['mail_to_address'], $Order->conf['mail_to_name'])) {
                     msg('ecommerce_transaction: Cant send email.', 'error', 2);
                 }
             }
         } else {
             $Order->setStatus($order_id, 5);
         }
         return $id;
     } else {
         //to be sure...
         if ($response['Status'] == 'OK') {
             msg("Payment for order {$order_id} was successfully Authorised, but I cant save the transaction TxAuthNo {$pg_data['TxAuthNo']}!", 'error');
         }
         msg("payment/protx: cannot insert serialized pg_data: {$transaction_data['pg_data']}", 'error');
         return false;
     }
 }
Beispiel #2
0
 /**
  * main action
  */
 public function mainAction()
 {
     /**
      * check
      */
     if (is_numeric($this->GET['id'])) {
         $order_id = $this->GET['id'];
     } else {
         return false;
     }
     /**
      * initialise
      */
     require_once 'models/ecommerce/ecommerce_order.php';
     $Order = new ecommerce_order();
     /**
      * save
      */
     if (isset($_POST['save'])) {
         //get order detail
         $order_data = $Order->getDetail($order_id);
         //prepare data for update
         $order_data['note_backoffice'] = $_POST['order']['note_backoffice'];
         //update order data
         if (!$Order->updateOrder($order_data)) {
             msg("Cannot update order data (Order ID {$order_id})", 'error');
         }
         //update order status (warning: order status change can trigger other events affection order_data)
         if ($order_data['status'] != $_POST['order']['status']) {
             $order_data['status'] = $_POST['order']['status'];
             if (!$Order->setStatus($order_id, $_POST['order']['status'])) {
                 msg("Cannot update order status (Order ID {$order_id})", 'error');
             }
             onxshopGoTo("/backoffice/orders/{$order_id}/detail");
         }
     }
     /**
      * get full detail (including relations)
      */
     $full_order_data = $Order->getOrder($order_id);
     // status
     $status = $Order->conf['status'];
     // parse select box
     foreach ($status as $key => $s) {
         $s1['id'] = $key;
         $s1['name'] = $s;
         if ($s1['id'] == $full_order_data['status']) {
             $s1['selected'] = 'selected="selected"';
         } else {
             $s1['selected'] = '';
         }
         $this->tpl->assign('STATUS', $s1);
         $this->tpl->parse('content.status');
     }
     // parse log
     foreach ($full_order_data['log'] as $log) {
         $log['name'] = $status[$log['status']];
         $this->tpl->assign('STATUS', $log);
         $this->tpl->parse('content.log');
     }
     if ($full_order_data['note_customer'] == '') {
         $full_order_data['note_customer'] = "n/a.";
     }
     $this->tpl->assign('ORDER', $full_order_data);
     /**
      * ACL
      */
     if (!preg_match("/-warehouse\$/", $_SESSION['authentication']['username'])) {
         $this->tpl->parse('content.customer_detail');
         $this->tpl->parse('content.accounting_detail');
     }
     return true;
 }
Beispiel #3
0
 /**
  * process callback
  */
 function paymentProcess($order_id, $pg_data)
 {
     require_once 'models/ecommerce/ecommerce_order.php';
     $Order = new ecommerce_order();
     // check if $pg_data['VendorTxCode'] = $_GET['order_id']
     //$this->msgProtxStatus($pg_data['Status']);
     $order_data = $Order->getOrder($order_id);
     //print_r($order_data);
     /**
      * optional: process payment method only if status = 0 unpaid or 5 failed payment 
      * (better to save transaction every time)
      */
     //if (!$this->checkOrderStatusValidForPayment($order_data['status'])) return false;
     $transaction_data['order_id'] = $order_data['id'];
     $transaction_data['pg_data'] = serialize($pg_data);
     $transaction_data['currency_code'] = GLOBAL_DEFAULT_CURRENCY;
     if (is_numeric($pg_data['authCost'])) {
         $transaction_data['amount'] = $pg_data['authCost'];
     } else {
         $transaction_data['amount'] = 0;
     }
     $transaction_data['created'] = date('c');
     $transaction_data['type'] = 'worldpay';
     if ($pg_data['transStatus'] == 'Y') {
         $transaction_data['status'] = 1;
     } else {
         $transaction_data['status'] = 0;
     }
     /**
      * check installation id
      */
     if ($pg_data['installation'] != ECOMMERCE_TRANSACTION_WORLDPAY_INSID) {
         msg("payment/worldpay: wrong installation id {$pg_data['installation']}, serialized pg_data: {$transaction_data['pg_data']}", 'error');
         return false;
     }
     /**
      * insert
      */
     if ($id = $this->Transaction->insert($transaction_data)) {
         // in payment_success must be everytime Status OK
         if ($pg_data['transStatus'] == 'Y') {
             $Order->setStatus($order_id, 1);
             //send email to admin
             require_once 'models/common/common_email.php';
             $EmailForm = new common_email();
             $_Onxshop_Request = new Onxshop_Request("component/ecommerce/order_detail~order_id={$order_data['id']}~");
             $order_data['order_detail'] = $_Onxshop_Request->getContent();
             //this allows use customer data and company data in the mail template
             //is passed as DATA to template in common_email->_format
             $GLOBALS['common_email']['transaction'] = $transaction_data;
             $GLOBALS['common_email']['order'] = $order_data;
             if (!$EmailForm->sendEmail('new_order_paid', 'n/a', $order_data['client']['customer']['email'], $order_data['client']['customer']['first_name'] . " " . $order_data['client']['customer']['last_name'])) {
                 msg("ecommerce_transaction: Can't send email.", 'error', 2);
             }
             if ($Order->conf['mail_to_address']) {
                 if (!$EmailForm->sendEmail('new_order_paid', 'n/a', $Order->conf['mail_to_address'], $Order->conf['mail_to_name'])) {
                     msg('ecommerce_transaction: Cant send email.', 'error', 2);
                 }
             }
             /**
              * cancel immediatelly if it was only a test
              */
             if ($pg_data['testMode'] == 100) {
                 $Order->setStatus($order_id, 4);
                 msg("Order #{$order_id} has been cancelled, because Worldpay testMode was active.");
             }
         } else {
             $Order->setStatus($order_id, 5);
         }
         return $id;
     } else {
         //to be sure...
         if ($pg_data['Status'] == 'OK') {
             msg("Payment for order {$order_id} was successfully Authorised, but I cant save the transaction id {$pg_data['transId']}!", 'error');
         }
         msg("payment/worldpay: cannot insert serialized pg_data: {$transaction_data['pg_data']}", 'error');
         return false;
     }
 }
Beispiel #4
0
 /**
  * processNilPayment
  */
 public function processNilPayment($order_data)
 {
     if (!is_array($order_data)) {
         return false;
     }
     if ($order_data['basket']['total'] > 0) {
         return false;
     }
     require_once 'models/ecommerce/ecommerce_order.php';
     $EcommerceOrder = new ecommerce_order();
     $EcommerceOrder->setCacheAble(false);
     //mark as payed
     $log_data_id = $EcommerceOrder->setStatus($order_data['id'], 1);
     return $log_data_id;
 }
Beispiel #5
0
 /**
  * process callback
  */
 function paymentProcess($order_id, $crypt)
 {
     //hack for changing white space to + sign
     $crypt = str_replace(' ', '+', $crypt);
     require_once 'models/ecommerce/ecommerce_order.php';
     $Order = new ecommerce_order();
     require_once 'lib/protx.functions.php';
     //decode crypt
     $pg_data_x = simpleXor(base64Decode($crypt), ECOMMERCE_TRANSACTION_PROTX_PASSWORD);
     //explode protx data
     $pg_data = getToken($pg_data_x);
     /**
      * PROTX:
      * vpstxid [int]
      * avscv2 [int]
      * txauthno[int]
      * vpsstatus[int]
      */
     /*
     $pg_data_x = explode('&', $pg_data_x);
     for ($i=1; $i<count($pg_data_x); $i++) {
         $param = explode('=', $pg_data_x[$i]);
     	    	$pg_data[$param[0]] = $param[1];
     }
     */
     //print_r($pg_data);
     // check if $pg_data['VendorTxCode'] = $_GET['order_id']
     $this->msgProtxStatus($pg_data['Status']);
     $order_data = $Order->getOrder($order_id);
     //print_r($order_data);
     /**
      * optional: save only orders in valid status
      */
     /*
     if ($order_data['status'] == 1 || $order_data['status'] == 2 || $order_data['status'] == 3 || $order_data['status'] == 4) {
     	msg("Ecommerce_transaction: Order in status New (paid), Dispatched, Completed, Cancelled", 'error', 2);
     	msg("This order (id=$order_id) was already paid before.", 'error');
     }
     */
     $transaction_data['order_id'] = $order_data['id'];
     $transaction_data['pg_data'] = serialize($pg_data);
     $transaction_data['currency_code'] = GLOBAL_DEFAULT_CURRENCY;
     if (is_numeric($pg_data['Amount'])) {
         $transaction_data['amount'] = $pg_data['Amount'];
     } else {
         $transaction_data['amount'] = 0;
     }
     $transaction_data['created'] = date('c');
     $transaction_data['type'] = 'protx';
     if ($pg_data['Status'] == 'OK') {
         $transaction_data['status'] = 1;
     } else {
         $transaction_data['status'] = 0;
     }
     /**
      * insert
      */
     if ($id = $this->Transaction->insert($transaction_data)) {
         // in payment_success must be everytime Status OK
         if ($pg_data['Status'] == 'OK') {
             $Order->setStatus($order_id, 1);
             //send email to admin
             require_once 'models/common/common_email.php';
             $EmailForm = new common_email();
             $_Onxshop_Request = new Onxshop_Request("component/ecommerce/order_detail~order_id={$order_data['id']}~");
             $order_data['order_detail'] = $_Onxshop_Request->getContent();
             //this allows use customer data and company data in the mail template
             //is passed as DATA to template in common_email->_format
             $GLOBALS['common_email']['transaction'] = $transaction_data;
             $GLOBALS['common_email']['order'] = $order_data;
             if (!$EmailForm->sendEmail('new_order_paid', 'n/a', $order_data['client']['customer']['email'], $order_data['client']['customer']['first_name'] . " " . $order_data['client']['customer']['last_name'])) {
                 msg('ecommerce_transaction: Cant send email.', 'error', 2);
             }
             if ($Order->conf['mail_to_address']) {
                 if (!$EmailForm->sendEmail('new_order_paid', 'n/a', $Order->conf['mail_to_address'], $Order->conf['mail_to_name'])) {
                     msg('ecommerce_transaction: Cant send email.', 'error', 2);
                 }
             }
         } else {
             $Order->setStatus($order_id, 5);
         }
         return $id;
     } else {
         //to be sure...
         if ($pg_data['Status'] == 'OK') {
             msg("Payment for order {$order_id} was successfully Authorised, but I cant save the transaction TxAuthNo {$pg_data['TxAuthNo']}!", 'error');
         }
         msg("payment/protx: cannot insert serialized pg_data: {$transaction_data['pg_data']}", 'error');
         return false;
     }
 }