function tc_ipn_callback($reference_id, $merchant_id)
 {
     $tc = new TotalCoinAPI(MODULE_PAYMENT_TOTALCOIN_CLIENT_EMAIL, MODULE_PAYMENT_TOTALCOIN_CLIENT_APIKEY);
     $data = $tc->get_ipn_info($reference_id);
     if ($data['IsOk']) {
         $order_status = $this->tc_get_last_order_status_from_transaction_history($data['Response']['TransactionHistories']);
         $order_id = $data['Response']['MerchantReference'];
         switch ($order_status) {
             case 'Approved':
                 $status = 1;
                 $comments = 'La orden ha sido autorizada, se está esperando la liberación del pago.';
                 break;
             case 'Rejected':
                 $status = 1;
                 $comments = 'Pago rechazado por TotalCoin, contactar al cliente.';
                 break;
             case 'Available':
                 $status = 3;
                 $comments = 'La orden ha sido pagada. El dinero ya se encuentra disponible.';
                 break;
             default:
                 $status = 2;
                 //In process
                 $comments = 'La orden está siendo procesada.';
                 break;
         }
         /*
         orders_status_id 1 | orders_status_name Pending
         orders_status_id 2 | orders_status_name Processing
         orders_status_id 3 | orders_status_name Delivered
         */
         $data = array('orders_status' => $status);
         tep_db_perform('orders', $data, 'update', "orders_id = '" . $order_id . "'");
         $data_history = array('orders_id' => $order_id, 'orders_status_id' => $status, 'date_added' => 'now()', 'customer_notified' => '0', 'comments' => $comments);
         tep_db_perform('orders_status_history', $data_history);
     }
 }
function tc_ipn_callback()
{
    global $wpdb;
    if ($_REQUEST['reference'] != '' && $_REQUEST['merchant'] != '') {
        $tc_id = $_REQUEST['reference'];
        $api_key = get_option('totalcoin_apikey');
        $tc = new TotalCoinAPI("", $api_key);
        $data = $tc->get_ipn_info($tc_id);
        if ($data['IsOk']) {
            $order_status = tc_get_last_order_status_from_transaction_history($data['Response']['TransactionHistories']);
            $order_id = $data['Response']['MerchantReference'];
            switch ($order_status) {
                case 'Approved':
                    $purchase_log_sql = "UPDATE `" . WPSC_TABLE_PURCHASE_LOGS . "` SET transactid = " . $tc_id . ", processed = 3, notes = 'La orden ha sido autorizada, se está esperando la liberación del pago.' WHERE id= '" . $order_id . "' LIMIT 1";
                    break;
                case 'InProccess':
                    $purchase_log_sql = "UPDATE `" . WPSC_TABLE_PURCHASE_LOGS . "` SET transactid = " . $tc_id . ", processed = 2, notes = 'La orden está siendo procesada.' WHERE id= '" . $order_id . "' LIMIT 1";
                    break;
                case 'Rejected':
                    $purchase_log_sql = "UPDATE `" . WPSC_TABLE_PURCHASE_LOGS . "` SET transactid = " . $tc_id . ", processed = 6, notes = 'Pago rechazado por TotalCoin, contactar al cliente.' WHERE id= '" . $order_id . "' LIMIT 1";
                    break;
                default:
                    $purchase_log_sql = "UPDATE `" . WPSC_TABLE_PURCHASE_LOGS . "` SET transactid = '" . $tc_id . "', processed = 2, notes = 'La orden ha sido pagada. El dinero ya se encuentra disponible.' WHERE id= '" . $order_id . "' LIMIT 1";
            }
            $purchase_log = $wpdb->get_results($purchase_log_sql, ARRAY_A);
        }
    }
}