Exemplo n.º 1
0
 /**
  * Prepares and returns a new Order
  * @return Colabs_Order New Order object
  */
 protected static function make($items = array(), $description = '')
 {
     if (empty($description)) {
         $description = __('Transaction ID ', 'colabsthemes');
     }
     $order_id = wp_insert_post(array('post_title' => $description, 'post_content' => __('Transaction Data', 'colabsthemes'), 'post_type' => COLABS_ORDER_POST_TYPE, 'post_status' => COLABS_ORDER_PENDING));
     if ($order_id) {
         update_post_meta($order_id, '_order_type', COLABS_POST_TYPE);
         if ($items) {
             foreach ($items as $key => $value) {
                 update_post_meta($order_id, $key, $value);
             }
         }
         if (isset($_SERVER['REMOTE_ADDR'])) {
             update_post_meta($order_id, '_ip_address', $_SERVER['REMOTE_ADDR']);
         }
         $order = colabs_get_order($order_id);
         $order->set_currency(get_option('colabs_currency_code'));
         return $order;
     }
 }
Exemplo n.º 2
0
function colabs_property_parse_query($wp_query)
{
    if ($wp_query->is_main_query() && is_page(get_option('colabs_dashboard_page_id'))) {
        if (get_query_var('order_cancel') || get_query_var('order_status')) {
            $wp_query->set('tab', 'orders');
        }
        if (get_query_var('order_status')) {
            $wp_query->set('order_status', array_map('wp_strip_all_tags', get_query_var('order_status')));
        }
        if (get_query_var('order_cancel')) {
            $order = colabs_get_order(intval(get_query_var('order_cancel')));
            if (get_current_user_id() != $order->get_author()) {
                $wp_query->set('order_cancel_msg', -1);
                return;
            }
            if (COLABS_ORDER_COMPLETED == $order->get_status()) {
                $wp_query->set('order_cancel_msg', -2);
                return;
            }
            if (!empty($order) && get_query_var('confirm_order_cancel')) {
                $order->failed();
                $wp_query->set('order_cancel_success', 1);
            }
        } elseif (get_query_var('property_end') && get_query_var('confirm')) {
            $property_id = intval(get_query_var('property_end'));
            $property = get_post($property_id);
            if ($property->ID != $property_id || $property->post_author != get_current_user_id()) {
                $wp_query->set('property_action', -1);
                return;
            }
            if (get_query_var('cancel')) {
                $pending_payment = colabs_get_pending_payment($property_id);
                $order = colabs_get_order($pending_payment[$property_id]['order_id']);
                if ($order && !in_array($order->get_status(), array(COLABS_ORDER_ACTIVATED, COLABS_ORDER_COMPLETED))) {
                    $order->failed();
                } else {
                    _colabs_end_property($property_id, $cancel = true);
                }
                $wp_query->set('property_action', 1);
            } else {
                _colabs_end_property($property_id);
                $wp_query->set('property_action', 2);
            }
            // Property delete
        } elseif (get_query_var('property_delete')) {
            _colabs_delete_property(get_query_var('property_delete'));
            // Property mark as sold
        } elseif (get_query_var('property_marksold')) {
            $property_id = get_query_var('property_marksold');
            update_post_meta($property_id, 'colabs_property_sold', 'true');
            $sold_term = get_term_by('slug', 'sold', COLABS_TAX_STATUS);
            if ($sold_term) {
                // Save previous property_status into a post meta
                update_post_meta($property_id, '_colabs_previous_property_status', wp_get_post_terms($property_id, COLABS_TAX_STATUS, array('fields' => 'ids')));
                wp_set_post_terms($property_id, $sold_term->term_id, COLABS_TAX_STATUS);
            }
            // Property set unsold
        } elseif (get_query_var('property_unsold')) {
            $property_id = get_query_var('property_unsold');
            update_post_meta($property_id, 'colabs_property_sold', 'false');
            $previous_status = get_post_meta($property_id, '_colabs_previous_property_status', true);
            if ($previous_status) {
                wp_set_post_terms($property_id, $previous_status, COLABS_TAX_STATUS);
            } else {
                $sell_term = get_term_by('slug', 'sell', COLABS_TAX_STATUS);
                if ($sell_term) {
                    wp_set_post_terms($id, $sell_term->term_id, COLABS_TAX_STATUS);
                }
            }
        }
    }
    if ($wp_query->is_main_query() && is_page(get_option('colabs_submit_page_id'))) {
        if ($wp_query->get('property_relist')) {
            $property_id = $wp_query->get('property_relist');
            // if ( is_user_logged_in() && ! current_user_can('can_submit_property') ) {
            //   wp_redirect( home_url() );
            //   exit();
            // }
            if (!colabs_allow_relist()) {
                redirect_myproperties();
            }
            $wp_query->set('property_id', $property_id);
        }
    }
}
Exemplo n.º 3
0
function colabs_get_post_order_status($post_id, $pending_payment = '')
{
    $order_status = '';
    if (isset($pending_payment[$post_id])) {
        $order = colabs_get_order($pending_payment[$post_id]['order_id']);
        if ($order) {
            if (COLABS_ORDER_FAILED == $order->get_status()) {
                $order_status = __('Payment Failed', 'colabsthemes');
            } elseif (COLABS_ORDER_ACTIVATED == $order->get_status()) {
                $order_status = __('Active', 'colabsthemes');
            } elseif ('undecided' == $pending_payment[$post_id]['status']) {
                $order_status = __('Pending Payment', 'colabsthemes');
            } else {
                $order_status = __('Pending Approval', 'colabsthemes');
            }
        }
    }
    return $order_status;
}
Exemplo n.º 4
0
    /**
     * Processes a Order to display
     * instructions to the user
     * @param  Colabs_Order $order   Order to display information for
     * @return void
     */
    public function process($order)
    {
        // if gateway wasn't selected then exit
        if ($order['colabs_payment_method'] != 'authorize_aim') {
            return;
        }
        if (is_array($order)) {
            // is this a test transaction?
            if (get_option('colabs_authorize_sandbox') == true) {
                $process_url = 'https://test.authorize.net/gateway/transact.dll';
            } else {
                $process_url = 'https://secure.authorize.net/gateway/transact.dll';
            }
            $authorizeaim_args = array('x_login' => get_option('colabs_authorize_id'), 'x_tran_key' => get_option('colabs_authorize_key'), 'x_version' => '3.1', 'x_delim_data' => 'TRUE', 'x_delim_char' => '|', 'x_relay_response' => 'FALSE', 'x_type' => 'AUTH_CAPTURE', 'x_method' => 'CC', 'x_card_num' => $_POST['aim_creditcard'], 'x_exp_date' => $_POST['aim_ccexpdate'], 'x_description' => 'Order #' . $order['order_id'], 'x_amount' => $order['item_amount'], 'x_card_code' => $_POST['aim_cvvnumber']);
            $post_response = wp_remote_retrieve_body(wp_remote_post($process_url, array('body' => $authorizeaim_args, 'sslverify' => false)));
            $response_array = explode('|', $post_response);
            $order_class = colabs_get_order($order['order_id']);
            $error = 0;
            if (count($response_array) > 1) {
                if ($response_array[0] == '1') {
                    $payment_details = array('currency' => get_option('colabs_currency_code'), 'timestamp' => current_time('mysql'), 'txn_id' => $response_array[4], 'payment' => 'Authorize AIM', 'note' => $response_array[51]);
                    $order_class->complete($payment_details);
                } else {
                    $payment_details['note'] = $response_array[3];
                    $order_class->pending($payment_details);
                    $error = 1;
                }
                $info_message = $response_array[3];
            } else {
                $order_class->failed();
                $error = 1;
            }
        }
        if ($error == 0) {
            echo '<p class="alert alert-success">' . $info_message . '</p>';
        } else {
            echo '<p class="alert alert-danger">' . $info_message . '</p>';
        }
        ?>
    
    <h4><?php 
        _e('Your Transaction Details', 'colabsthemes');
        ?>
</h4>

    <ul>
      <li><span><?php 
        _e('Transaction ID:', 'colabsthemes');
        ?>
</span><?php 
        echo esc_html($order['order_id']);
        ?>
</li>
      <li><span><?php 
        _e('Reference #:', 'colabsthemes');
        ?>
</span><?php 
        echo esc_attr($order['post_id']);
        ?>
</li>
      <li><span><?php 
        _e('Total Amount:', 'colabsthemes');
        ?>
</span><?php 
        echo colabs_get_price($order['item_amount']);
        ?>
</li>
    </ul>
    <?php 
    }
</th>
      </tr>
    </thead>
    <tbody>

    <?php 
    if ($orders->have_posts()) {
        ?>

      <?php 
        while ($orders->have_posts()) {
            $orders->the_post();
            ?>

        <?php 
            $order = colabs_get_order($orders->post->ID);
            ?>
          <tr>
            <td class="order-history-id" data-title="<?php 
            echo 'ID';
            ?>
">#<?php 
            the_ID();
            ?>
</td>
            <td class="date" data-title="<?php 
            _e('Date', 'colabsthemes');
            ?>
"><strong><?php 
            the_time(__('j M', 'colabsthemes'));
            ?>
    if (!empty($_POST['colabs_payment_method']) && empty($get_gateway)) {
        $order->set_gateway($_POST['colabs_payment_method']);
    }
    $gateway_id = $_POST['colabs_payment_method'];
    $gateway = Colabs_Gateway_Registry::get_gateway($gateway_id);
    if (Colabs_Gateway_Registry::is_gateway_enabled($gateway_id)) {
        $receipt_order['order_id'] = $order->get_id();
        $receipt_order['post_id'] = $order->get_post_type_id();
        $receipt_order['item_name'] = get_the_title($order->get_post_type_id());
        $receipt_order['item_amount'] = $order->get_total();
        $receipt_order['colabs_payment_method'] = $gateway_id;
        $gateway->process($receipt_order);
    }
} else {
    the_order_summary();
    $orders = colabs_get_order($order_id);
    if ($orders->get_total() > 0) {
        ?>
    <form action="" method="POST" class="payment-form">
      <p><?php 
        _e('Please select a method for processing your payment:', 'colabsthemes');
        ?>
</p>
      <input type="hidden" name="action" value="payment-process" />
      <input type="hidden" name="referer" value="<?php 
        echo esc_url(get_query_var('referer'));
        ?>
" />
      <input type="hidden" name="order_id" value="<?php 
        echo $order_id;
        ?>
Exemplo n.º 7
0
 private function find_next_processable_subscription_order($subscription_id)
 {
     $posts = new WP_Query(array('post_type' => COLABS_ORDER_POST_TYPE, 'post_status' => array(COLABS_ORDER_PENDING, COLABS_ORDER_FAILED), 'meta_query' => array(array('key' => 'paypal_subscription_id', 'value' => $subscription_id)), 'order' => 'ASC', 'orderby' => 'date'));
     if (count($posts->posts) == 0) {
         return false;
     }
     return colabs_get_order($posts->post->ID);
 }
Exemplo n.º 8
0
 function colabs_listing_handle_payment_return()
 {
     // PayPal IPN handling code
     if ((isset($_POST['payment_status']) || isset($_POST['txn_type'])) && isset($_POST['item_number']) && 'paypal' == $_GET['payment-gateway-api']) {
         //Common variables
         $amount = $_POST['mc_gross'];
         $currency = $_POST['mc_currency'];
         $order_id = $_POST['item_number'];
         if (!empty($order_id)) {
             $order = colabs_get_order($order_id);
             // process PayPal response
             $paypal = array('currency' => $currency, 'timestamp' => $_POST['payment_date'], 'status' => $_POST['payment_status'], 'txn_id' => $_POST['txn_id'], 'payment' => 'Paypal', 'note' => '');
             switch ($_POST['payment_status']) {
                 case 'Partially-Refunded':
                     break;
                 case 'Completed':
                 case 'Processed':
                     $order->complete($paypal);
                     break;
                 case 'Refunded':
                     $note = __('Last transaction has been reversed. Reason: Payment has been refunded', 'colabsthemes');
                     $paypal['note'] = $note;
                     $order->failed($paypal);
                     break;
                 case 'Reversed':
                     $note = __('Last transaction has been reversed. Reason: Payment has been reversed (charge back)', 'colabsthemes');
                     $paypal['note'] = $note;
                     $order->failed($paypal);
                     break;
                 case 'Denied':
                     $note = __('Last transaction has been reversed. Reason: Payment Denied', 'colabsthemes');
                     $paypal['note'] = $note;
                     $order->failed($paypal);
                     break;
                 case 'In-Progress':
                 case 'Pending':
                     $pending_str = array('address' => __('Customer did not include a confirmed shipping address', 'colabsthemes'), 'authorization' => __('Funds not captured yet', 'colabsthemes'), 'echeck' => __('eCheck that has not cleared yet', 'colabsthemes'), 'intl' => __('Payment waiting for approval by service provider', 'colabsthemes'), 'multi-currency' => __('Payment waiting for service provider to handle multi-currency process', 'colabsthemes'), 'unilateral' => __('Customer did not register or confirm his/her email yet', 'colabsthemes'), 'upgrade' => __('Waiting for service provider to upgrade the PayPal account', 'colabsthemes'), 'verify' => __('Waiting for service provider to verify his/her PayPal account', 'colabsthemes'), 'paymentreview' => __('Paypal is currently reviewing the payment and will approve or reject within 24 hours', 'colabsthemes'), '*' => '');
                     $reason = @$_POST['pending_reason'];
                     $note = __('Last transaction is pending. Reason: ', 'colabsthemes') . (isset($pending_str[$reason]) ? $pending_str[$reason] : $pending_str['*']);
                     $paypal['note'] = $note;
                     $order->pending($paypal);
                     break;
                 default:
             }
         }
     }
 }