Esempio n. 1
0
function decrypt_dps_response()
{
    $PxAccess_Url = get_option('access_url');
    $PxAccess_Userid = get_option('access_userid');
    $PxAccess_Key = get_option('access_key');
    $Mac_Key = get_option('mac_key');
    $pxaccess = new PxAccess($PxAccess_Url, $PxAccess_Userid, $PxAccess_Key, $Mac_Key);
    $curgateway = get_option('payment_gateway');
    $_GET = array();
    $params = explode('&', $_SERVER['QUERY_STRING']);
    foreach ($params as $pair) {
        list($key, $value) = explode('=', $pair);
        $_GET[urldecode($key)] = urldecode($value);
    }
    $enc_hex = $_GET['result'];
    if ($enc_hex != null) {
        $rsp = $pxaccess->getResponse($enc_hex);
        $siteurl = get_option('siteurl');
        $total_weight = 0;
        if ($rsp->getResponseText() == 'APPROVED') {
            $sessionid = $rsp->getMerchantReference();
            $purchase_log = new WPSC_Purchase_Log($sessionid, 'sessionid');
            if (!$purchase_log->is_transaction_completed()) {
                $purchase_log->set('processed', WPSC_Purchase_Log::ACCEPTED_PAYMENT);
                $purchase_log->save();
            }
        }
    }
    return $sessionid;
}
Esempio n. 2
0
function _wpsc_filter_merchant_v2_payment_method_form_fields($fields)
{
    $selected_value = isset($_POST['wpsc_payment_method']) ? $_POST['wpsc_payment_method'] : '';
    if (empty($selected_value)) {
        $current_purchase_log_id = wpsc_get_customer_meta('current_purchase_log_id');
        $purchase_log = new WPSC_Purchase_Log($current_purchase_log_id);
        $selected_value = $purchase_log->get('gateway');
    }
    $gateways = _wpsc_merchant_v2_get_active_gateways();
    if (empty($gateways)) {
        return $fields;
    }
    foreach (_wpsc_merchant_v2_get_active_gateways() as $gateway) {
        $gateway = (object) $gateway;
        $title = $gateway->name;
        if (!empty($gateway->image)) {
            $title .= ' <img src="' . $gateway->image . '" alt="' . $gateway->name . '" />';
        }
        $field = array('title' => $title, 'type' => 'radio', 'value' => $gateway->internalname, 'name' => 'wpsc_payment_method', 'checked' => $selected_value == $gateway->internalname);
        $fields[] = $field;
    }
    // check the first payment gateway by default
    if (empty($selected_value)) {
        $fields[0]['checked'] = true;
    }
    return $fields;
}
Esempio n. 3
0
/**
 * Update product stats when a purchase log containing it changes status
 *
 * @since 3.8.13
 *
 * @param int               $log_id     Purchase Log ID
 * @param int               $new_status New status
 * @param int               $old_status Old status
 * @param WPSC_Purchase_Log $log        Purchase Log
 */
function _wpsc_action_update_product_stats($log_id, $new_status, $old_status, $log)
{
    $cart_contents = $log->get_cart_contents();
    $new_status_completed = $log->is_transaction_completed();
    $old_status_completed = WPSC_Purchase_Log::is_order_status_completed($old_status);
    if ($new_status_completed && !$old_status_completed) {
        // if the order went through without any trouble, then it's a positive thing!
        $yay_or_boo = 1;
    } elseif (!$new_status_completed && $old_status_completed) {
        // if the order is declined or invalid, sad face :(
        $yay_or_boo = -1;
    } else {
        // Not one of the above options then we will be indifferent
        $yay_or_boo = 0;
    }
    // this dramatic mood swing affects the stats of each products in the cart
    foreach ($cart_contents as $cart_item) {
        $product = new WPSC_Product($cart_item->prodid);
        if ($product->exists()) {
            $diff_sales = $yay_or_boo * (int) $cart_item->quantity;
            $diff_earnings = $yay_or_boo * (int) $cart_item->price * (int) $cart_item->quantity;
            $product->sales += $diff_sales;
            $product->earnings += $diff_earnings;
            // if this product has parent, make the same changes to the parent
            if ($product->post->post_parent) {
                $parent = WPSC_Product::get_instance($product->post->post_parent);
                $parent->sales += $diff_sales;
                $parent->earnings += $diff_earnings;
            }
        }
    }
}
Esempio n. 4
0
 /**
  * Sets attendee data on attendee posts
  *
  * @since 4.1
  *
  * @param int $attendee_id Attendee Ticket Post ID
  * @param WPSC_Purchase_Log $purchase_log WPEC purchase log object
  * @param int $product_id WPEC Product ID
  * @param int $order_attendee_id Attendee number in submitted order
  */
 public function save_attendee_meta_to_ticket($attendee_id, $purchase_log, $product_id, $order_attendee_id)
 {
     $meta = wpsc_get_purchase_meta($purchase_log->get('id'), Tribe__Tickets_Plus__Meta::META_KEY, true);
     if (!isset($meta[$product_id])) {
         return;
     }
     if (!isset($meta[$product_id][$order_attendee_id])) {
         return;
     }
     update_post_meta($attendee_id, Tribe__Tickets_Plus__Meta::META_KEY, $meta[$product_id][$order_attendee_id]);
 }
 private function set_purchase_log_for_callbacks($sessionid = false)
 {
     if ($sessionid === false) {
         $sessionid = $_REQUEST['sessionid'];
     }
     $purchase_log = new WPSC_Purchase_Log($sessionid, 'sessionid');
     if (!$purchase_log->exists()) {
         return;
     }
     $this->set_purchase_log($purchase_log);
 }
/**
 * transaction_results function main function for creating the purchase reports, transaction results page, and email receipts
 * @access public
 *
 * @since 3.7
 * @param $sessionid (string) unique session id
 * @param echo_to_screen (boolean) whether to output the results or return them (potentially redundant)
 * @param $transaction_id (int) the transaction id
 */
function transaction_results($sessionid, $display_to_screen = true, $transaction_id = null)
{
    global $message_html, $echo_to_screen, $wpsc_cart, $purchase_log;
    // pre-3.8.9 variable
    $echo_to_screen = $display_to_screen;
    $purchase_log_object = new WPSC_Purchase_Log($sessionid, 'sessionid');
    // compatibility with pre-3.8.9 templates where they use a global
    // $purchase_log object which is simply just a database row
    $purchase_log = $purchase_log_object->get_data();
    // pre-3.8.9 templates also use this global variable
    $message_html = wpsc_get_transaction_html_output($purchase_log_object);
    $wpsc_cart->empty_cart();
    do_action('wpsc_transaction_results_shutdown', $purchase_log_object, $sessionid, $display_to_screen);
    return $message_html;
}
Esempio n. 7
0
 function eCommerceThankYou($order)
 {
     global $tcm;
     $orderId = intval($order['purchase_id']);
     $tcm->Log->debug('Ecommerce: ECOMMERCE THANKYOU');
     $tcm->Log->debug('Ecommerce: NEW ECOMMERCE ORDERID=%s', $orderId);
     $order = new WPSC_Purchase_Log($orderId);
     $items = $order->get_cart_contents();
     $productsIds = array();
     foreach ($items as $v) {
         if (isset($v->prodid)) {
             $k = intval($v->prodid);
             if ($k) {
                 $v = $v->name;
                 $productsIds[] = $k;
                 $tcm->Log->debug('Ecommerce: ITEM %s=%s IN CART', $k, $v);
             }
         }
     }
     $args = array('pluginId' => TCM_PLUGINS_WP_ECOMMERCE, 'productsIds' => $productsIds, 'categoriesIds' => array(), 'tagsIds' => array());
     $tcm->Options->pushConversionSnippets($args);
     return '';
 }
Esempio n. 8
0
/**
 * submit checkout function, used through ajax and in normal page loading.
 * No parameters, returns nothing
 */
function wpsc_submit_checkout($collected_data = true)
{
    global $wpdb, $wpsc_cart, $user_ID, $nzshpcrt_gateways, $wpsc_shipping_modules, $wpsc_gateways;
    $num_items = 0;
    $use_shipping = 0;
    $disregard_shipping = 0;
    do_action('wpsc_before_submit_checkout');
    $error_messages = wpsc_get_customer_meta('checkout_misc_error_messages');
    if (!is_array($error_messages)) {
        $error_messages = array();
    }
    $wpsc_checkout = new wpsc_checkout();
    $selected_gateways = get_option('custom_gateway_options');
    $submitted_gateway = isset($_POST['custom_gateway']) ? $_POST['custom_gateway'] : '';
    $options = get_option('custom_shipping_options');
    if ($collected_data) {
        $form_validity = $wpsc_checkout->validate_forms();
        extract($form_validity);
        // extracts $is_valid and $error_messages
        if (wpsc_has_tnc() && (!isset($_POST['agree']) || $_POST['agree'] != 'yes')) {
            $error_messages[] = __('Please agree to the terms and conditions, otherwise we cannot process your order.', 'wpsc');
            $is_valid = false;
        }
    } else {
        $is_valid = true;
        $error_messages = array();
    }
    $selectedCountry = $wpdb->get_results($wpdb->prepare("SELECT id, country FROM `" . WPSC_TABLE_CURRENCY_LIST . "` WHERE isocode = '%s' ", wpsc_get_customer_meta('shipping_country')), ARRAY_A);
    foreach ($wpsc_cart->cart_items as $cartitem) {
        if (!empty($cartitem->meta[0]['no_shipping'])) {
            continue;
        }
        $categoriesIDs = $cartitem->category_id_list;
        foreach ((array) $categoriesIDs as $catid) {
            if (is_array($catid)) {
                $countries = wpsc_get_meta($catid[0], 'target_market', 'wpsc_category');
            } else {
                $countries = wpsc_get_meta($catid, 'target_market', 'wpsc_category');
            }
            if (!empty($countries) && !in_array($selectedCountry[0]['id'], (array) $countries)) {
                $errormessage = sprintf(__('%s cannot be shipped to %s. To continue with your transaction please remove this product from the list below.', 'wpsc'), $cartitem->get_title(), $selectedCountry[0]['country']);
                wpsc_update_customer_meta('category_shipping_conflict', $errormessage);
                $is_valid = false;
            }
        }
        //count number of items, and number of items using shipping
        $num_items++;
        if ($cartitem->uses_shipping != 1) {
            $disregard_shipping++;
        } else {
            $use_shipping++;
        }
    }
    if (array_search($submitted_gateway, $selected_gateways) !== false) {
        wpsc_update_customer_meta('selected_gateway', $submitted_gateway);
    } else {
        $is_valid = false;
    }
    if ($collected_data) {
        if (get_option('do_not_use_shipping') == 0 && ($wpsc_cart->selected_shipping_method == null || $wpsc_cart->selected_shipping_option == null) && $num_items != $disregard_shipping) {
            $error_messages[] = __('You must select a shipping method, otherwise we cannot process your order.', 'wpsc');
            $is_valid = false;
        }
        if (get_option('do_not_use_shipping') != 1 && in_array('ups', (array) $options) && !wpsc_get_customer_meta('shipping_zip') && $num_items != $disregard_shipping) {
            wpsc_update_customer_meta('category_shipping_conflict', __('Please enter a Zipcode and click calculate to proceed', 'wpsc'));
            $is_valid = false;
        }
    }
    wpsc_update_customer_meta('checkout_misc_error_messages', $error_messages);
    if ($is_valid == true) {
        wpsc_delete_customer_meta('category_shipping_conflict');
        // check that the submitted gateway is in the list of selected ones
        $sessionid = mt_rand(100, 999) . time();
        wpsc_update_customer_meta('checkout_session_id', $sessionid);
        $subtotal = $wpsc_cart->calculate_subtotal();
        if ($wpsc_cart->has_total_shipping_discount() == false) {
            $base_shipping = $wpsc_cart->calculate_base_shipping();
        } else {
            $base_shipping = 0;
        }
        $delivery_country = $wpsc_cart->delivery_country;
        $delivery_region = $wpsc_cart->delivery_region;
        if (wpsc_uses_shipping()) {
            $shipping_method = $wpsc_cart->selected_shipping_method;
            $shipping_option = $wpsc_cart->selected_shipping_option;
        } else {
            $shipping_method = '';
            $shipping_option = '';
        }
        if (isset($_POST['how_find_us'])) {
            $find_us = $_POST['how_find_us'];
        } else {
            $find_us = '';
        }
        //keep track of tax if taxes are exclusive
        $wpec_taxes_controller = new wpec_taxes_controller();
        if (!$wpec_taxes_controller->wpec_taxes_isincluded()) {
            $tax = $wpsc_cart->calculate_total_tax();
            $tax_percentage = $wpsc_cart->tax_percentage;
        } else {
            $tax = 0.0;
            $tax_percentage = 0.0;
        }
        $total = $wpsc_cart->calculate_total_price();
        $args = array('totalprice' => $total, 'statusno' => '0', 'sessionid' => $sessionid, 'user_ID' => (int) $user_ID, 'date' => time(), 'gateway' => $submitted_gateway, 'billing_country' => $wpsc_cart->selected_country, 'shipping_country' => $delivery_country, 'billing_region' => $wpsc_cart->selected_region, 'shipping_region' => $delivery_region, 'base_shipping' => $base_shipping, 'shipping_method' => $shipping_method, 'shipping_option' => $shipping_option, 'plugin_version' => WPSC_VERSION, 'discount_value' => $wpsc_cart->coupons_amount, 'discount_data' => $wpsc_cart->coupons_name, 'find_us' => $find_us, 'wpec_taxes_total' => $tax, 'wpec_taxes_rate' => $tax_percentage);
        $purchase_log = new WPSC_Purchase_Log($args);
        $purchase_log->save();
        $purchase_log_id = $purchase_log->get('id');
        if ($collected_data) {
            $wpsc_checkout->save_forms_to_db($purchase_log_id);
        }
        $wpsc_cart->save_to_db($purchase_log_id);
        $wpsc_cart->submit_stock_claims($purchase_log_id);
        if (get_option('wpsc_also_bought') == 1) {
            wpsc_populate_also_bought_list();
        }
        if (!isset($our_user_id) && isset($user_ID)) {
            $our_user_id = $user_ID;
        }
        $wpsc_cart->log_id = $purchase_log_id;
        do_action('wpsc_submit_checkout', array("purchase_log_id" => $purchase_log_id, "our_user_id" => $our_user_id));
        if (get_option('permalink_structure') != '') {
            $separator = "?";
        } else {
            $separator = "&";
        }
        // submit to gateway
        $current_gateway_data =& $wpsc_gateways[$submitted_gateway];
        if (isset($current_gateway_data['api_version']) && $current_gateway_data['api_version'] >= 2.0) {
            $merchant_instance = new $current_gateway_data['class_name']($purchase_log_id);
            $merchant_instance->construct_value_array();
            do_action_ref_array('wpsc_pre_submit_gateway', array(&$merchant_instance));
            $merchant_instance->submit();
        } elseif ($current_gateway_data['internalname'] == $submitted_gateway && $current_gateway_data['internalname'] != 'google') {
            $gateway_used = $current_gateway_data['internalname'];
            $purchase_log->set('gateway', $gateway_used);
            $purchase_log->save();
            $current_gateway_data['function']($separator, $sessionid);
        } elseif ($current_gateway_data['internalname'] == 'google' && $current_gateway_data['internalname'] == $submitted_gateway) {
            $gateway_used = $current_gateway_data['internalname'];
            $purchase_log->set('gateway', $gateway_used);
            wpsc_update_customer_meta('google_checkout', 'google');
            wp_redirect(get_option('shopping_cart_url'));
            exit;
        }
    }
}
Esempio n. 9
0
function response_handler($nvpArray, $fraud, $sessionid, $data = null, $recurring = null)
{
    global $wpdb;
    $result_code = $nvpArray['RESULT'];
    //$RespMsg = 'General Error.  Please contact Customer Support.';
    //    echo ($result_code);
    if ($result_code == 1 || $result_code == 26) {
        wpsc_update_customer_meta('payflow_message', __('Account configuration issue.  Please verify your login credentials.', 'wpsc_gold_cart'));
    } else {
        if ($result_code == '0') {
            $purchase_log = new WPSC_Purchase_Log($sessionid, 'sessionid');
            $purchase_log->set('processed', WPSC_Purchase_Log::ACCEPTED_PAYMENT);
            $purchase_log->save();
            $log_id = $purchase_log->get('id');
            if (isset($nvpArray['CVV2MATCH'])) {
                if ($nvpArray['CVV2MATCH'] != "Y") {
                    $RespMsg = __('Your billing (cvv2) information does not match. Please re-enter.', 'wpsc_gold_cart');
                }
            }
        } else {
            if ($result_code == 12) {
                $log_id = $wpdb->get_var("SELECT `id` FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `sessionid`='{$sessionid}' LIMIT 1");
                $delete_log_form_sql = "SELECT * FROM `" . $wpdb->prefix . "cart_contents` WHERE `purchaseid`='{$log_id}'";
                $cart_content = $wpdb->get_results($delete_log_form_sql, ARRAY_A);
                /*
                foreach((array)$cart_content as $cart_item) {
                         $cart_item_variations = $wpdb->query("DELETE FROM `".$wpdb->prefix."cart_item_variations` WHERE `cart_id` = '".$cart_item['id']."'", ARRAY_A);
                      }
                */
                $wpdb->query("DELETE FROM `" . WPSC_TABLE_CART_CONTENTS . "` WHERE `purchaseid`='{$log_id}'");
                $wpdb->query("DELETE FROM `" . WPSC_TABLE_SUBMITED_FORM_DATA . "` WHERE `log_id` IN ('{$log_id}')");
                $wpdb->query("DELETE FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `id`='{$log_id}' LIMIT 1");
                wpsc_update_customer_meta('payflow_message', __('Your credit card has been declined.  You may press the back button in your browser and check that you\'ve entered your card information correctly, otherwise please contact your credit card issuer.', 'wpsc_gold_cart'));
                header("Location:" . get_option('transact_url') . $seperator . "payflow=1&message=1");
            } else {
                if ($result_code == 13) {
                    $log_id = $wpdb->get_var("SELECT `id` FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `sessionid`='{$sessionid}' LIMIT 1");
                    $delete_log_form_sql = "SELECT * FROM `" . WPSC_TABLE_CART_CONTENTS . "` WHERE `purchaseid`='{$log_id}'";
                    $cart_content = $wpdb->get_results($delete_log_form_sql, ARRAY_A);
                    /*
                    foreach((array)$cart_content as $cart_item) {
                       $cart_item_variations = $wpdb->query("DELETE FROM `".WPSC_TABLE_CART_ITEM_VARIATIONS."` WHERE `cart_id` = '".$cart_item['id']."'", ARRAY_A);
                    }
                    */
                    $RespMsg = __('Invalid credit card information. Please use the back button in your browser and re-enter if you feel that you have received this message in error', 'wpsc_gold_cart');
                    wp_die($RespMsg);
                    //die before deleting cart information
                    $wpdb->query("DELETE FROM `" . WPSC_TABLE_CART_CONTENTS . "` WHERE `purchaseid`='{$log_id}'");
                    $wpdb->query("DELETE FROM `" . WPSC_TABLE_SUBMITED_FORM_DATA . "` WHERE `log_id` IN ('{$log_id}')");
                    $wpdb->query("DELETE FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `id`='{$log_id}' LIMIT 1");
                } else {
                    if ($result_code == 23 || $result_code == 24) {
                        $log_id = $wpdb->get_var("SELECT `id` FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `sessionid`='{$sessionid}' LIMIT 1");
                        $delete_log_form_sql = "SELECT * FROM `" . WPSC_TABLE_CART_CONTENTS . "` WHERE `purchaseid`='{$log_id}'";
                        $cart_content = $wpdb->get_results($delete_log_form_sql, ARRAY_A);
                        /*
                              foreach((array)$cart_content as $cart_item) {
                                 $cart_item_variations = $wpdb->query("DELETE FROM `".$wpdb->prefix."cart_item_variations` WHERE `cart_id` = '".$cart_item['id']."'", ARRAY_A);
                              }
                        */
                        $RespMsg = __('Invalid credit card information. Please use the back button in your browser and re-enter if you feel that you have received this message in error', 'wpsc_gold_cart');
                        wp_die($RespMsg);
                        //die before deleting cart information
                        $wpdb->query("DELETE FROM `" . WPSC_TABLE_CART_CONTENTS . "` WHERE `purchaseid`='{$log_id}'");
                        $wpdb->query("DELETE FROM `" . WPSC_TABLE_SUBMITED_FORM_DATA . "` WHERE `log_id` IN ('{$log_id}')");
                        $wpdb->query("DELETE FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `id`='{$log_id}' LIMIT 1");
                        $RespMsg = __('Invalid credit card information. Please use the back button in your browser and re-enter. If you feel that you received this message in error.', 'wpsc_gold_cart');
                    } else {
                        $log_id = $wpdb->get_var("SELECT `id` FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `sessionid`='{$sessionid}' LIMIT 1");
                        $delete_log_form_sql = "SELECT * FROM `" . WPSC_TABLE_CART_CONTENTS . "` WHERE `purchaseid`='{$log_id}'";
                        $cart_content = $wpdb->get_results($delete_log_form_sql, ARRAY_A);
                        /*
                              foreach((array)$cart_content as $cart_item) {
                                 $cart_item_variations = $wpdb->query("DELETE FROM `".$wpdb->prefix."cart_item_variations` WHERE `cart_id` = '".$cart_item['id']."'", ARRAY_A);
                              }
                        */
                        $wpdb->query("DELETE FROM `" . WPSC_TABLE_CART_CONTENTS . "` WHERE `purchaseid`='{$log_id}'");
                        $wpdb->query("DELETE FROM `" . WPSC_TABLE_SUBMITED_FORM_DATA . "` WHERE `log_id` IN ('{$log_id}')");
                        $wpdb->query("DELETE FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `id`='{$log_id}' LIMIT 1");
                        $RespMsg = __('Invalid credit card information. Please use the back button in your browser and re-enter. If you feel that you received this message in error.', 'wpsc_gold_cart');
                    }
                }
            }
        }
    }
    if ($fraud == 'YES') {
        if ($result_code == 125) {
            $log_id = $wpdb->get_var("SELECT `id` FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `sessionid`='{$sessionid}' LIMIT 1");
            $delete_log_form_sql = "SELECT * FROM `" . WPSC_TABLE_CART_CONTENTS . "` WHERE `purchaseid`='{$log_id}'";
            $cart_content = $wpdb->get_results($delete_log_form_sql, ARRAY_A);
            /*
            foreach((array)$cart_content as $cart_item) {
                        $cart_item_variations = $wpdb->query("DELETE FROM `".$wpdb->prefix."cart_item_variations` WHERE `cart_id` = '".$cart_item['id']."'", ARRAY_A);
                     }
            */
            $wpdb->query("DELETE FROM `" . WPSC_TABLE_CART_CONTENTS . "` WHERE `purchaseid`='{$log_id}'");
            $wpdb->query("DELETE FROM `" . WPSC_TABLE_SUBMITED_FORM_DATA . "` WHERE `log_id` IN ('{$log_id}')");
            $wpdb->query("DELETE FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `id`='{$log_id}' LIMIT 1");
        } else {
            if ($result_code == 126) {
                $RespMsg = __('Your Transaction is Under Review. We will notify you via e-mail if accepted.', 'wpsc_gold_cart');
            } else {
                if ($result_code == 127) {
                    $RespMsg = __('Your Transaction is Under Review. We will notify you via e-mail if accepted.', 'wpsc_gold_cart');
                }
            }
        }
    }
    //$message=transaction_results($sessionid,false,null,$data,$result_code);
    if (get_option('permalink_structure') != '') {
        $seperator = '?';
    } else {
        $seperator = '&';
    }
    if ($result_code != 0) {
        wpsc_update_customer_meta('payflow_message', $RespMsg);
        header("Location:" . get_option('transact_url') . $seperator . "payflow=1&&sessionid=" . $sessionid . "result=" . $result_code . "&message=1");
    }
    header("Location:" . get_option('transact_url') . $seperator . "payflow=1&sessionid=" . $sessionid . "&result=" . $result_code . "&message=1");
}
Esempio n. 10
0
 private function submit_payment_method()
 {
     global $wpsc_cart;
     if (!$this->verify_nonce('wpsc-checkout-form-payment-method')) {
         return;
     }
     if (empty($_POST['wpsc_payment_method']) && !wpsc_is_free_cart()) {
         $this->message_collection->add(__('Please select a payment method', 'wpsc'), 'validation');
     }
     $valid = apply_filters('_wpsc_merchant_v2_validate_payment_method', true, $this);
     if (!$valid) {
         return;
     }
     $submitted_gateway = $_POST['wpsc_payment_method'];
     $purchase_log_id = wpsc_get_customer_meta('current_purchase_log_id');
     $purchase_log = new WPSC_Purchase_Log($purchase_log_id);
     $purchase_log->set('gateway', $submitted_gateway);
     $purchase_log->set(array('gateway' => $submitted_gateway, 'base_shipping' => $wpsc_cart->calculate_base_shipping(), 'totalprice' => $wpsc_cart->calculate_total_price()));
     $purchase_log->save();
     $wpsc_cart->empty_db($purchase_log_id);
     $wpsc_cart->save_to_db($purchase_log_id);
     $wpsc_cart->submit_stock_claims($purchase_log_id);
     $wpsc_cart->log_id = $purchase_log_id;
     $this->wizard->completed_step('payment');
     do_action('wpsc_submit_checkout', array("purchase_log_id" => $purchase_log_id, "our_user_id" => get_current_user_id()));
     do_action('wpsc_submit_checkout_gateway', $submitted_gateway, $purchase_log);
 }
Esempio n. 11
0
/**
 * Updates the 'processed' parameter after a new order is submitted with a free cart.
 *
 * @param  string            $gateway  Name of gateway.  In the case of a free cart, this will be empty.
 * @param  WPSC_Purchase_Log $log      WPSC_Purchase_Log object.
 * @uses   apply_filters               'wpsc_free_checkout_order_status' allows developers to change the status a free cart is saved with.
 * @since  3.9.0
 *
 */
function wpsc_free_checkout_update_processed_status($gateway, $log)
{
    wpsc_update_purchase_log_status($log->get('id'), apply_filters('wpsc_free_checkout_order_status', WPSC_Purchase_Log::ACCEPTED_PAYMENT));
    wp_safe_redirect(add_query_arg('sessionid', $log->get('sessionid'), get_option('transact_url')));
    exit;
}
 public function is_valid_ipn_response()
 {
     $valid = true;
     // Validate Currency
     if ($this->paypal_ipn_values['mc_currency'] !== $this->get_paypal_currency_code()) {
         $valid = false;
     }
     $purchase_log = new WPSC_Purchase_Log($this->cart_data['session_id'], 'sessionid');
     if (!$purchase_log->exists()) {
         $valid = false;
     }
     // Validate amount
     // It is worth noting, there are edge cases here that may need to be addressed via filter.
     // @link https://github.com/wp-e-commerce/WP-e-Commerce/issues/1232.
     if ($this->paypal_ipn_values['mc_gross'] != $this->convert($purchase_log->get('totalprice'))) {
         $valid = false;
     }
     return apply_filters('wpsc_paypal_standard_is_valid_ipn_response', $valid, $this);
 }
function wpsc_get_transaction_html_output($purchase_log)
{
    if (!is_object($purchase_log)) {
        $purchase_log = new WPSC_Purchase_Log($purchase_log);
    }
    if (!$purchase_log->is_transaction_completed() && !$purchase_log->is_order_received()) {
        return '';
    }
    $notification = new WPSC_Purchase_Log_Customer_HTML_Notification($purchase_log);
    $output = $notification->get_html_message();
    $output = apply_filters('wpsc_get_transaction_html_output', $output, $notification);
    return $output;
}
Esempio n. 14
0
function wpsc_get_transaction_html_output($purchase_log)
{
    if (!is_object($purchase_log)) {
        $purchase_log = new WPSC_Purchase_Log($purchase_log);
    }
    $notification = new WPSC_Purchase_Log_Customer_HTML_Notification($purchase_log);
    $output = $notification->get_html_message();
    // see if the customer trying to view this transaction output is the person
    // who made the purchase.
    $checkout_session_id = wpsc_get_customer_meta('checkout_session_id');
    if ($checkout_session_id == $purchase_log->get('sessionid')) {
        $output = apply_filters('wpsc_get_transaction_html_output', $output, $notification);
    } else {
        $output = apply_filters('wpsc_get_transaction_unauthorized_view', __("You don't have the permission to view this page", 'wp-e-commerce'), $output, $notification);
    }
    return $output;
}
 private function submit_payment_method()
 {
     global $wpsc_cart;
     if (!$this->verify_nonce('wpsc-checkout-form-payment-method')) {
         return;
     }
     if (empty($_POST['wpsc_payment_method']) && !wpsc_is_free_cart()) {
         $this->message_collection->add(__('Please select a payment method', 'wp-e-commerce'), 'validation');
     }
     $valid = apply_filters('_wpsc_merchant_v2_validate_payment_method', true, $this);
     if (!$valid) {
         return;
     }
     $purchase_log_id = wpsc_get_customer_meta('current_purchase_log_id');
     $purchase_log = new WPSC_Purchase_Log($purchase_log_id);
     $submitted_gateway = $_POST['wpsc_payment_method'];
     $purchase_log->set(array('gateway' => $submitted_gateway, 'base_shipping' => $wpsc_cart->calculate_base_shipping(), 'totalprice' => $wpsc_cart->calculate_total_price()));
     if ($this->maybe_add_guest_account() && isset($_POST['wpsc_create_account'])) {
         $email = wpsc_get_customer_meta('billingemail');
         $user_id = wpsc_register_customer($email, $email, false);
         $purchase_log->set('user_ID', $user_id);
         wpsc_update_customer_meta('checkout_details', wpsc_get_customer_meta('checkout_details'), $user_id);
         update_user_meta($user_id, '_wpsc_visitor_id', wpsc_get_current_customer_id());
     }
     $purchase_log->save();
     $wpsc_cart->empty_db($purchase_log_id);
     $wpsc_cart->save_to_db($purchase_log_id);
     $wpsc_cart->submit_stock_claims($purchase_log_id);
     $wpsc_cart->log_id = $purchase_log_id;
     $this->wizard->completed_step('payment');
     do_action('wpsc_submit_checkout', array('purchase_log_id' => $purchase_log_id, 'our_user_id' => isset($user_id) ? $user_id : get_current_user_id()));
     do_action('wpsc_submit_checkout_gateway', $submitted_gateway, $purchase_log);
 }
Esempio n. 16
0
 /**
  * Get stats of the products, specifying some more arguments
  *
  * @since 3.8.14
  * @param  array $args Arguments. See {@link WPSC_Purchase_Log::fetch_stats()}.
  * @return array       'earnings' and 'sales' stats
  */
 public function get_stats($args)
 {
     $this->fetch_products();
     $args['products'] = $this->products;
     return WPSC_Purchase_Log::fetch_stats($args);
 }
 /**
  * Save Submitted Form Fields to the wpsc_submited_form_data table.
  *
  * @param WPSC_Purchase_Log $purchase_log
  * @param array $fields
  * @return void
  */
 public static function save_form($purchase_log, $fields, $data = array())
 {
     global $wpdb;
     $log_id = $purchase_log->get('id');
     // delete previous field values
     $sql = $wpdb->prepare("DELETE FROM " . WPSC_TABLE_SUBMITTED_FORM_DATA . " WHERE log_id = %d", $log_id);
     $wpdb->query($sql);
     if (empty($data) && isset($_POST['wpsc_checkout_details'])) {
         $data = $_POST['wpsc_checkout_details'];
     }
     $customer_details = array();
     foreach ($fields as $field) {
         if ($field->type == 'heading') {
             continue;
         }
         $value = '';
         if (isset($data[$field->id])) {
             $value = wp_unslash($data[$field->id]);
         }
         $customer_details[$field->id] = $value;
         $wpdb->insert(WPSC_TABLE_SUBMITTED_FORM_DATA, array('log_id' => $log_id, 'form_id' => $field->id, 'value' => $value), array('%d', '%d', '%s'));
     }
     wpsc_save_customer_details($customer_details);
 }
 /**
  * Process IPN messages from Amazon
  *
  * @access public
  * @since  4.0
  * @return void
  */
 public function process_ipn()
 {
     if (!isset($_GET['wpsc-listener']) || $_GET['wpsc-listener'] !== 'amazon') {
         return;
     }
     if (isset($_GET['state'])) {
         return;
     }
     // Get the IPN headers and Message body
     $headers = getallheaders();
     $body = file_get_contents('php://input');
     $this->doing_ipn = true;
     if (!class_exists('PayWithAmazon\\IpnHandler')) {
         require_once WPSC_MERCHANT_V3_SDKS_PATH . '/amazon-payments/sdk/IpnHandler.php';
     }
     try {
         $ipn = new PayWithAmazon\IpnHandler($headers, $body);
         $data = $ipn->toArray();
         $seller_id = $data['SellerId'];
         if ($seller_id != $this->gateway->seller_id) {
             wp_die(__('Invalid Amazon seller ID', 'wpsc'), __('IPN Error', 'wpsc'), array('response' => 401));
         }
         switch ($data['NotificationType']) {
             case 'OrderReferenceNotification':
                 break;
             case 'PaymentAuthorize':
                 break;
             case 'PaymentCapture':
                 $status = $data['CaptureDetails']['CaptureStatus']['State'];
                 if ('Declined' === $status) {
                     $value = $data['CaptureDetails']['CaptureReferenceId'];
                     $reason = $data['CaptureDetails']['CaptureStatus']['ReasonCode'];
                     // Get Order ID by reference
                     $order = WPSC_Purchase_Log::get_log_by_meta('amazon_capture_id', $value);
                     if (!$order) {
                         break;
                     }
                     // Update status to declined
                     $order->set('processed', WPSC_Purchase_Log::PAYMENT_DECLINED)->save();
                     // Update Amazon note
                     $order->set('amazon-status', __('Could not authorize Amazon payment.', 'wpsc'))->save();
                     // Email user
                     $hard = 'InvalidPaymentMethod' == $reason;
                     $this->send_decline_email($hard, $order);
                 }
                 break;
             case 'PaymentRefund':
                 $refund_id = $data['RefundDetails']['AmazonRefundId'];
                 $status = $data['RefundDetails']['RefundStatus']['State'];
                 $amount = $data['RefundDetails']['RefundAmount'];
                 if ('Completed' === $status) {
                     // get payment ID based on refund ID
                     $order = WPSC_Purchase_Log::get_log_by_meta('amazon_refund_id', $refund_id);
                     // Update status to refunded
                     $order->set('processed', WPSC_Purchase_Log::REFUNDED)->save();
                     // Add payment note for refund.
                     $order->set('amazon-status', sprintf(__('Refunded %s', 'wpsc'), wpsc_currency_display($amount)))->save();
                     // Update refund ID
                     wpsc_add_purchase_meta($order->get('id'), 'amazon_refund_id', $refund_id);
                 }
                 break;
         }
     } catch (Exception $e) {
         wp_die($e->getErrorMessage(), __('IPN Error', 'wpsc'), array('response' => 401));
     }
 }
Esempio n. 19
0
/**
 * Handle Response from DIBS server
 * 
 * 
 *  
 */
function dibspayment_paywin_process()
{
    global $wpdb;
    if (isset($_GET['dibspw_result']) && isset($_POST['s_pid'])) {
        array_walk($_POST, create_function('&$val', '$val = stripslashes($val);'));
        $hamc_key = get_option('dibspw_hmac');
        $order_id = $_POST['orderid'];
        switch ($_GET['dibspw_result']) {
            case 'callback':
                if ($hamc_key && !isset($_POST['MAC'])) {
                    die("HMAC error!");
                }
                if (isset($_POST['MAC']) && $_POST['MAC'] != dibspayment_paywin_calc_mac($_POST, $hamc_key, $bUrlDecode = FALSE)) {
                    die("Mac is incorrect, fraud attempt!!");
                }
                $dibsInvoiceFields = array("acquirerLastName", "acquirerFirstName", "acquirerDeliveryAddress", "acquirerDeliveryPostalCode", "acquirerDeliveryPostalPlace");
                $dibsInvoiceFieldsString = "";
                foreach ($_POST as $key => $value) {
                    if (in_array($key, $dibsInvoiceFields)) {
                        $dibsInvoiceFieldsString .= "{$key}={$value}\n";
                    }
                }
                // Email is not send automatically on a success transactio page
                // from version '3.8.9 so we send email on callback from this version
                if (version_compare(get_option('wpsc_version'), '3.8.9', '>=')) {
                    if ($_POST['status'] == "ACCEPTED") {
                        $purchaselog = new WPSC_Purchase_Log($order_id);
                        $purchaselog->set('processed', get_option('dibspw_status'));
                        $purchaselog->set('notes', $dibsInvoiceFieldsString);
                        $purchaselog->save();
                        $wpscmerch = new wpsc_merchant($order_id, false);
                        $wpscmerch->set_purchase_processed_by_purchid(get_option('dibspw_status'));
                    }
                } else {
                    if ($_POST['status'] == "ACCEPTED") {
                        $purchase_log = $wpdb->get_results("SELECT * FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `sessionid`= " . $_POST['s_pid'] . " LIMIT 1", ARRAY_A);
                        $wpdb->query("UPDATE `" . WPSC_TABLE_PURCHASE_LOGS . "` SET `processed` = '" . get_option('dibspw_status') . "', `notes`='" . $dibsInvoiceFieldsString . "'  WHERE `id` = '" . $purchase_log[0]['id'] . "' LIMIT 1;");
                        // If it is the second callback with status ACCEPTED
                        // we want to send an email to customer.
                        if ($purchase_log[0]['authcode'] == "PENDING") {
                            transaction_results($_POST['s_pid'], false);
                        }
                    } else {
                        // we save not successed statuses it can be PENDING status..
                        $wpdb->query("UPDATE `" . WPSC_TABLE_PURCHASE_LOGS . "` SET `processed` = '1' , `authcode` = '" . $_POST['status'] . "'  WHERE `id` = '" . $purchase_log[0]['id'] . "' LIMIT 1;");
                    }
                }
                break;
            case 'success':
                if (!isset($_GET['page_id']) || get_permalink($_GET['page_id']) != get_option('transact_url')) {
                    $location = add_query_arg('sessionid', $_POST['s_pid'], get_option('transact_url'));
                    if ($_POST['status'] == "ACCEPTED") {
                        if ($hamc_key && !isset($_POST['MAC'])) {
                            die("HMAC error!");
                        }
                        if (isset($_POST['MAC']) && $_POST['MAC'] != dibspayment_paywin_calc_mac($_POST, $hamc_key, $bUrlDecode = FALSE)) {
                            die("HMAC is incorrect, fraud attempt!");
                        }
                    } else {
                        // Declined or PENDING
                        $purchase_log = $wpdb->get_results("SELECT * FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `sessionid`= " . $_POST['s_pid'] . " LIMIT 1", ARRAY_A);
                        $wpdb->query("UPDATE `" . WPSC_TABLE_PURCHASE_LOGS . "` SET `processed` = '1' , `authcode` = '" . $_POST['status'] . "'  WHERE `id` = '" . $purchase_log[0]['id'] . "' LIMIT 1;");
                    }
                    wp_redirect($location);
                    exit;
                }
                break;
            case 'cancel':
                if (isset($_POST['orderid'])) {
                    $purchase_log = $wpdb->get_results("SELECT * FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `sessionid`= " . $_POST['s_pid'] . " LIMIT 1", ARRAY_A);
                    $wpdb->query("UPDATE `" . WPSC_TABLE_PURCHASE_LOGS . "` SET `processed` = '" . get_option('dibspw_statusc') . "' WHERE `id` = '" . $purchase_log[0]['id'] . "' LIMIT 1;");
                    wp_redirect(get_option('shopping_cart_url'));
                    exit;
                }
                break;
        }
    }
}
Esempio n. 20
0
/**
 * submit checkout function, used through ajax and in normal page loading.
 * No parameters, returns nothing
 */
function wpsc_submit_checkout($collected_data = true)
{
    global $wpdb, $wpsc_cart, $user_ID, $nzshpcrt_gateways, $wpsc_shipping_modules, $wpsc_gateways;
    if ($collected_data && isset($_POST['collected_data']) && is_array($_POST['collected_data'])) {
        _wpsc_checkout_customer_meta_update($_POST['collected_data']);
    }
    // initialize our checkout status variab;e, we start be assuming
    // checkout is falid, until we find a reason otherwise
    $is_valid = true;
    $num_items = 0;
    $use_shipping = 0;
    $disregard_shipping = 0;
    do_action('wpsc_before_submit_checkout');
    $error_messages = wpsc_get_customer_meta('checkout_misc_error_messages');
    if (!is_array($error_messages)) {
        $error_messages = array();
    }
    $wpsc_checkout = new wpsc_checkout();
    $selected_gateways = get_option('custom_gateway_options');
    $submitted_gateway = isset($_POST['custom_gateway']) ? $_POST['custom_gateway'] : '';
    if ($collected_data) {
        $form_validity = $wpsc_checkout->validate_forms();
        extract($form_validity);
        // extracts $is_valid and $error_messages
        if (wpsc_has_tnc() && (!isset($_POST['agree']) || $_POST['agree'] != 'yes')) {
            $error_messages[] = __('Please agree to the terms and conditions, otherwise we cannot process your order.', 'wpsc');
            $is_valid = false;
        }
    } else {
        $is_valid = true;
        $error_messages = array();
    }
    $wpsc_country = new WPSC_Country(wpsc_get_customer_meta('shippingcountry'));
    $country_id = $wpsc_country->get_id();
    $country_name = $wpsc_country->get_name();
    foreach ($wpsc_cart->cart_items as $cartitem) {
        if (!empty($cartitem->meta[0]['no_shipping'])) {
            continue;
        }
        $categoriesIDs = $cartitem->category_id_list;
        foreach ((array) $categoriesIDs as $catid) {
            if (is_array($catid)) {
                $countries = wpsc_get_meta($catid[0], 'target_market', 'wpsc_category');
            } else {
                $countries = wpsc_get_meta($catid, 'target_market', 'wpsc_category');
            }
            if (!empty($countries) && !in_array($country_id, (array) $countries)) {
                $errormessage = sprintf(__('%s cannot be shipped to %s. To continue with your transaction please remove this product from the list below.', 'wpsc'), $cartitem->get_title(), $country_name);
                wpsc_update_customer_meta('category_shipping_conflict', $errormessage);
                $is_valid = false;
            }
        }
        //count number of items, and number of items using shipping
        $num_items++;
        if ($cartitem->uses_shipping != 1) {
            $disregard_shipping++;
        } else {
            $use_shipping++;
        }
    }
    // check to see if the current gateway is in the list of available gateways
    if (array_search($submitted_gateway, $selected_gateways) !== false) {
        wpsc_update_customer_meta('selected_gateway', $submitted_gateway);
    } else {
        $is_valid = false;
    }
    if ($collected_data) {
        // Test for required shipping information
        if (wpsc_core_shipping_enabled() && $num_items != $disregard_shipping) {
            // for shipping to work we need a method, option and a quote
            if (!$wpsc_cart->shipping_method_selected() || !$wpsc_cart->shipping_quote_selected()) {
                $error_messages[] = __('Please select one of the available shipping options, then we can process your order.', 'wpsc');
                $is_valid = false;
            }
            // if we don't have a valid zip code ( the function also checks if we need it ) we have an error
            if (!wpsc_have_valid_shipping_zipcode()) {
                wpsc_update_customer_meta('category_shipping_conflict', __('Please enter a Zipcode and click calculate to proceed', 'wpsc'));
                $is_valid = false;
            }
        }
    }
    wpsc_update_customer_meta('checkout_misc_error_messages', $error_messages);
    if ($is_valid == true) {
        wpsc_delete_customer_meta('category_shipping_conflict');
        // check that the submitted gateway is in the list of selected ones
        $sessionid = mt_rand(100, 999) . time();
        wpsc_update_customer_meta('checkout_session_id', $sessionid);
        $subtotal = $wpsc_cart->calculate_subtotal();
        if ($wpsc_cart->has_total_shipping_discount() == false) {
            $base_shipping = $wpsc_cart->calculate_base_shipping();
        } else {
            $base_shipping = 0;
        }
        $delivery_country = $wpsc_cart->delivery_country;
        $delivery_region = $wpsc_cart->delivery_region;
        if (wpsc_uses_shipping()) {
            $shipping_method = $wpsc_cart->selected_shipping_method;
            $shipping_option = $wpsc_cart->selected_shipping_option;
        } else {
            $shipping_method = '';
            $shipping_option = '';
        }
        if (isset($_POST['how_find_us'])) {
            $find_us = $_POST['how_find_us'];
        } else {
            $find_us = '';
        }
        //keep track of tax if taxes are exclusive
        $wpec_taxes_controller = new wpec_taxes_controller();
        if (!$wpec_taxes_controller->wpec_taxes_isincluded()) {
            $tax = $wpsc_cart->calculate_total_tax();
            $tax_percentage = $wpsc_cart->tax_percentage;
        } else {
            $tax = 0.0;
            $tax_percentage = 0.0;
        }
        $total = $wpsc_cart->calculate_total_price();
        $args = array('totalprice' => $total, 'statusno' => '0', 'sessionid' => $sessionid, 'user_ID' => (int) $user_ID, 'date' => time(), 'gateway' => $submitted_gateway, 'billing_country' => $wpsc_cart->selected_country, 'shipping_country' => $delivery_country, 'billing_region' => $wpsc_cart->selected_region, 'shipping_region' => $delivery_region, 'base_shipping' => $base_shipping, 'shipping_method' => $shipping_method, 'shipping_option' => $shipping_option, 'plugin_version' => WPSC_VERSION, 'discount_value' => $wpsc_cart->coupons_amount, 'discount_data' => $wpsc_cart->coupons_name, 'find_us' => $find_us, 'wpec_taxes_total' => $tax, 'wpec_taxes_rate' => $tax_percentage);
        $purchase_log = new WPSC_Purchase_Log($args);
        $purchase_log->save();
        $purchase_log_id = $purchase_log->get('id');
        if ($collected_data) {
            $wpsc_checkout->save_forms_to_db($purchase_log_id);
        }
        $wpsc_cart->save_to_db($purchase_log_id);
        $wpsc_cart->submit_stock_claims($purchase_log_id);
        if (!isset($our_user_id) && isset($user_ID)) {
            $our_user_id = $user_ID;
        }
        $wpsc_cart->log_id = $purchase_log_id;
        do_action('wpsc_submit_checkout', array('purchase_log_id' => $purchase_log_id, 'our_user_id' => $our_user_id));
        do_action('wpsc_submit_checkout_gateway', $submitted_gateway, $purchase_log);
    }
}
 /**
  * Deletes cache of a log (either by using the log ID or sessionid)
  *
  * @access public
  * @static
  * @since 3.8.9
  *
  * @param string $value The value to query
  * @param string $col Optional. Defaults to 'id'. Whether to delete cache by using
  *                    a purchase log ID or sessionid
  * @return void
  */
 public static function delete_cache($value, $col = 'id')
 {
     // this will pull from the old cache, so no worries there
     $log = new WPSC_Purchase_Log($value, $col);
     wp_cache_delete($log->get('id'), 'wpsc_purchase_logs');
     wp_cache_delete($log->get('sessionid'), 'wpsc_purchase_logs_sessionid');
     wp_cache_delete($log->get('id'), 'wpsc_purchase_log_cart_contents');
     do_action('wpsc_purchase_log_delete_cache', $log, $value, $col);
 }
Esempio n. 22
0
/**
 * Update Purchase Log Notes
 *
 * @param  int     $purchlog_id     Purchase log ID.
 * @param  string  $purchlog_notes  Notes.
 */
function wpsc_purchlogs_update_notes($purchlog_id = 0, $purchlog_notes = '')
{
    if (isset($_POST['wpsc_purchlogs_update_notes_nonce']) && wp_verify_nonce($_POST['wpsc_purchlogs_update_notes_nonce'], 'wpsc_purchlogs_update_notes')) {
        if (0 == $purchlog_id && isset($_POST['purchlog_id']) && '' == $purchlog_notes) {
            $purchlog_id = absint($_POST['purchlog_id']);
            $purchlog_notes = stripslashes($_POST['purchlog_notes']);
        }
        if ($purchlog_id > 0) {
            $purchase_log = new WPSC_Purchase_Log($purchlog_id);
            $purchase_log->set('notes', $purchlog_notes);
            $purchase_log->save();
        }
    }
}
Esempio n. 23
0
/**
 * Conditionally empties the cart based on the status of `processed`.
 * Removed from being hardcoded in transaction_results().
 *
 * @since  3.9.0
 *
 * @param  WPSC_Purchase_Log $log Purchase Log.
 * @return void
 */
function wpsc_maybe_empty_cart($log)
{
    if ($log->is_transaction_completed() || $log->is_order_received()) {
        global $wpsc_cart;
        $wpsc_cart->empty_cart();
    }
}
Esempio n. 24
0
function gateway_linkpoint($seperator, $sessionid)
{
    global $wpdb;
    $transact_url = get_option('transact_url');
    $purchase_log_sql = "SELECT * FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `sessionid`= '" . $sessionid . "' LIMIT 1";
    $purchase_log = $wpdb->get_results($purchase_log_sql, ARRAY_A);
    $purchase_log = $purchase_log[0];
    //Get provided user info
    //Here starts most of the changes implemented into linkpoint for passing userinfo
    $usersql = "SELECT\n\t\t`" . WPSC_TABLE_SUBMITED_FORM_DATA . "`.value,\n\t\t`" . WPSC_TABLE_CHECKOUT_FORMS . "`.`name`,\n\t\t`" . WPSC_TABLE_CHECKOUT_FORMS . "`.`unique_name` FROM\n\t\t`" . WPSC_TABLE_CHECKOUT_FORMS . "` LEFT JOIN\n\t\t`" . WPSC_TABLE_SUBMITED_FORM_DATA . "` ON\n\t\t`" . WPSC_TABLE_CHECKOUT_FORMS . "`.id =\n\t\t`" . WPSC_TABLE_SUBMITED_FORM_DATA . "`.`form_id` WHERE\n\t\t`" . WPSC_TABLE_SUBMITED_FORM_DATA . "`.`log_id`=" . $purchase_log['id'] . " ORDER BY `" . WPSC_TABLE_CHECKOUT_FORMS . "`.`checkout_order`";
    $userinfo = $wpdb->get_results($usersql, ARRAY_A);
    foreach ((array) $userinfo as $key => $value) {
        if ($value['unique_name'] == 'billingfirstname' && $value['value'] != '') {
            $myorder1['FIRSTNAME'] = $value['value'];
        }
        if ($value['unique_name'] == 'billinglastname' && $value['value'] != '') {
            $myorder1['LASTNAME'] = $value['value'];
        }
        if ($value['unique_name'] == 'billingemail' && $value['value'] != '') {
            $myorder1['EMAIL'] = $value['value'];
        }
        if ($value['unique_name'] == 'billingphone' && $value['value'] != '') {
            $myorder1['PHONENUM'] = $value['value'];
        }
        if ($value['unique_name'] == 'billingaddress' && $value['value'] != '') {
            $myorder1['STREET'] = $value['value'];
        }
        if ($value['unique_name'] == 'billingcity' && $value['value'] != '') {
            $myorder1['CITY'] = $value['value'];
        }
        if ($value['unique_name'] == 'billingstate' && $value['value'] != '') {
            $sql = "SELECT `code` FROM `" . WPSC_TABLE_REGION_TAX . "` WHERE `id` ='" . $value['value'] . "' LIMIT 1";
            $myorder1['STATE'] = $wpdb->get_var($sql);
        } else {
            //	$data['STATE']='CA';
        }
        if ($value['unique_name'] == 'billingcountry' && $value['value'] != '') {
            $value['value'] = maybe_unserialize($value['value']);
            if ($value['value'][0] == 'UK') {
                $myorder1['COUNTRYCODE'] = 'GB';
            } else {
                $myorder1['COUNTRYCODE'] = $value['value'][0];
            }
            if (is_numeric($value['value'][1])) {
                $sql = "SELECT `code` FROM `" . WPSC_TABLE_REGION_TAX . "` WHERE `id` ='" . $value['value'][1] . "' LIMIT 1";
                $myorder1['STATE'] = $wpdb->get_var($sql);
            }
        }
        if ($value['unique_name'] == 'billingpostcode' && $value['value'] != '') {
            $myorder1['ZIP'] = $value['value'];
        }
        if ($value['unique_name'] == 'shippingfirstname' && $value['value'] != '') {
            $myorder1['SHIPTONAME1'] = $value['value'];
        } else {
            //	$myorder1['SHIPTONAME1']	= '';
        }
        if ($value['unique_name'] == 'shippinglastname' && $value['value'] != '') {
            $myorder1['SHIPTONAME2'] = $value['value'];
        } else {
            //	$myorder1['SHIPTONAME2']	= '';
        }
        if ($value['unique_name'] == 'shippingaddress' && $value['value'] != '') {
            $myorder1['SHIPTOSTREET'] = $value['value'];
        }
        if ($value['unique_name'] == 'shippingcity' && $value['value'] != '') {
            $myorder1['SHIPTOCITY'] = $value['value'];
        }
        //$data['SHIPTOCITY'] = 'CA';
        if ($value['unique_name'] == 'shippingstate' && $value['value'] != '') {
            //	$data['SHIPTOSTATE'] = $value['value'];
            $sql = "SELECT `code` FROM `" . WPSC_TABLE_REGION_TAX . "` WHERE `id` ='" . $value['value'] . "' LIMIT 1";
            $myorder1['SHIPTOSTATE'] = $wpdb->get_var($sql);
        } else {
        }
        if ($value['unique_name'] == 'shippingcountry' && $value['value'] != '') {
            $value['value'] = maybe_unserialize($value['value']);
            if (is_array($value['value'])) {
                if ($value['value'][0] == 'UK') {
                    $myorder1['SHIPTOCOUNTRY'] = 'GB';
                } else {
                    $myorder1['SHIPTOCOUNTRY'] = $value['value'][0];
                }
                if (is_numeric($value['value'][1])) {
                    $sql = "SELECT `code` FROM `" . WPSC_TABLE_REGION_TAX . "` WHERE `id` ='" . $value['value'][1] . "' LIMIT 1";
                    $myorder1['SHIPTOSTATE'] = $wpdb->get_var($sql);
                }
            } else {
                $myorder1['SHIPTOCOUNTRY'] = $value['value'];
            }
        }
        if ($value['unique_name'] == 'shippingpostcode' && $value['value'] != '') {
            $myorder1['SHIPTOZIP'] = $value['value'];
        }
    }
    //Here ends most of the changes implemented into linkpoint
    $store = get_option('linkpoint_store_number');
    $linkpoint = new lphp();
    $myorder["host"] = "secure.linkpt.net";
    $myorder["port"] = "1129";
    $myorder["keyfile"] = WPSC_GOLD_FILE_PATH . "/merchants/linkpointpem/" . $store . ".pem";
    $myorder["configfile"] = $store;
    //	# CREDIT CARD INFO
    //if (get_option('linkpoint_test')=='0') {
    $myorder["ordertype"] = "SALE";
    $myorder["cardnumber"] = $_POST['card_number'];
    /* see note below ( submit_linkpoint() )on using the linkpoint test account this way
    	} else {
    		$myorder["result"] = "GOOD";
    		$myorder["cardnumber"] = "4111-1111-1111-1111";
    		$myorder["cardexpmonth"] = "01";
    		$myorder["cardexpyear"] = "11";
    		$myorder["cvmvalue"] = "111";
    	}
    */
    $myorder["cardexpmonth"] = $_POST['ExpiryMonth'];
    $myorder["cardexpyear"] = $_POST['ExpiryYear'];
    $myorder["cvmvalue"] = $_POST['cvmvalue'];
    //	# BILLING INFO
    $myorder["name"] = $myorder1['FIRSTNAME'] . ' ' . $myorder1['LASTNAME'];
    //	$myorder["billingcompany"]  = $_POST["company"];
    $myorder["address"] = $myorder1['STREET'];
    //	$myorder["address2"] = ' ';//$_POST["address2"];
    $myorder["city"] = $myorder1['CITY'];
    $myorder["state"] = $myorder1['STATE'];
    $myorder["country"] = $myorder1['COUNTRYCODE'];
    $myorder["phone"] = $myorder1['PHONENUM'];
    $myorder["email"] = $myorder1['EMAIL'];
    //	$myorder["addrnum"]  = $_POST["addrnum"];
    $myorder["zip"] = $myorder1['ZIP'];
    //	# SHIPPING INFO
    $myorder["sname"] = $myorder1['SHIPTONAME1'] . ' ' . $myorder1['SHIPTONAME2'];
    $myorder["saddress1"] = $myorder1['SHIPTOSTREET'];
    $myorder["saddress2"] = ' ';
    //$_POST["saddress2"];
    $myorder["scity"] = $myorder1['SHIPTOCITY'];
    $myorder["sstate"] = $myorder1['SHIPTOSTATE'];
    $myorder["szip"] = $myorder1['SHIPTOZIP'];
    $myorder["scountry"] = $myorder1['SHIPTOCOUNTRY'];
    //	# ORDER INFO
    $myorder["chargetotal"] = $purchase_log['totalprice'];
    //	exit('<pre>'.print_r($myorder,true).'</pre>');
    $responce = $linkpoint->curl_process($myorder);
    //	exit('<pre>'.print_r($responce,true).'</pre>');
    if ($responce["r_approved"] != "APPROVED") {
        $message .= "<h3>" . __('Please Check the Payment Results', 'wpsc_gold_cart') . "</h3>";
        $message .= __('Your transaction was not successful.', 'wpsc_gold_cart') . "<br /><br />";
        $errors = wpsc_get_customer_meta('checkout_misc_error_messages');
        if (!is_array($errors)) {
            $errors[] = $message;
        }
        wpsc_update_customer_meta('checkout_misc_error_messages', $errors);
    } else {
        $purchase_log = new WPSC_Purchase_Log($sessionid, 'sessionid');
        $purchase_log->set('processed', WPSC_Purchase_Log::ACCEPTED_PAYMENT);
        $purchase_log->save();
        header("Location: " . $transact_url . $seperator . "sessionid=" . $sessionid);
        exit;
        //transaction_results($sessionid, true);
    }
}
 /**
  * Creates a new Purchase Log entry and set it to the current object
  *
  * @return null
  */
 protected function set_purchase_log_for_callbacks($sessionid = false)
 {
     // Define the sessionid if it's not passed
     if ($sessionid === false) {
         $sessionid = $_REQUEST['sessionid'];
     }
     // Create a new Purchase Log entry
     $purchase_log = new WPSC_Purchase_Log($sessionid, 'sessionid');
     if (!$purchase_log->exists()) {
         return null;
     }
     // Set the Purchase Log for the gateway object
     $this->set_purchase_log($purchase_log);
 }
 public function process_bulk_action()
 {
     global $wpdb;
     $current_action = $this->list_table->current_action();
     do_action('wpsc_sales_log_process_bulk_action', $current_action);
     if (!$current_action || 'download_csv' != $current_action && empty($_REQUEST['post'])) {
         if (!empty($_REQUEST['_wp_http_referer'])) {
             wp_redirect(esc_url_raw(remove_query_arg(array('_wp_http_referer', '_wpnonce', 'action', 'action2'), stripslashes($_SERVER['REQUEST_URI']))));
             exit;
         }
         unset($_REQUEST['post']);
         return;
     }
     if ('download_csv' == $current_action) {
         $this->download_csv();
         exit;
     }
     $sendback = remove_query_arg(array('_wpnonce', '_wp_http_referer', 'action', 'action2', 'confirm', 'post', 'last_paged'));
     if ('delete' == $current_action) {
         // delete action
         if (empty($_REQUEST['confirm'])) {
             $this->list_table->disable_search_box();
             $this->list_table->disable_bulk_actions();
             $this->list_table->disable_sortable();
             $this->list_table->disable_month_filter();
             $this->list_table->disable_views();
             $this->list_table->set_per_page(0);
             add_action('wpsc_purchase_logs_list_table_before', array($this, 'action_list_table_before'));
             return;
         } else {
             if (empty($_REQUEST['post'])) {
                 return;
             }
             $ids = array_map('intval', $_REQUEST['post']);
             foreach ($ids as $id) {
                 $log = new WPSC_Purchase_Log($id);
                 $log->delete();
             }
             $sendback = add_query_arg(array('paged' => $_REQUEST['last_paged'], 'deleted' => count($_REQUEST['post'])), $sendback);
         }
     }
     // change status actions
     if (is_numeric($current_action) && !empty($_REQUEST['post'])) {
         foreach ($_REQUEST['post'] as $id) {
             wpsc_purchlog_edit_status($id, $current_action);
         }
         $sendback = add_query_arg(array('updated' => count($_REQUEST['post'])), $sendback);
     }
     wp_redirect(esc_url_raw($sendback));
     exit;
 }
Esempio n. 27
0
/**
 * Delete a purchase log
 *
 * @deprecated  Use WPSC_Purchase_Log->delete() instead.
 *
 * @param   int|string  $purchlog_id  Required. Purchase log ID (empty string is deprecated).
 * @return  boolean                   Deleted successfully.
 */
function wpsc_delete_purchlog($purchlog_id = '')
{
    global $wpdb;
    // Deprecate empty purchase log ID parameter.
    if ($purchlog_id == '') {
        _wpsc_doing_it_wrong('wpsc_delete_purchlog', __('$purchlog_id parameter requires a numeric purchase log ID.', 'wp-e-commerce'), '3.9.0');
        return false;
    }
    $log = new WPSC_Purchase_Log($purchlog_id);
    return $log->delete();
}
Esempio n. 28
0
 /**
  * set_authcode, generaly speaking a payment gateway gives you an authcode to be able to refer back to the transaction
  * if an authcode already exsits, you can either append another (2931932839|29391839482) or replace depending on the $append flag
  * @param string $authcode
  * @param bool   $append
  * @return bool  result
  */
 function set_authcode($authcode, $append = false)
 {
     $log = new WPSC_Purchase_Log($this->purchase_id);
     $current_authcode = $log->get('authcode');
     if ($append && !empty($current_authcode)) {
         $authcode = $current_authcode . '|' . $authcode;
     }
     return $log->set('authcode', $authcode)->save();
 }
function wpsc_purchlog_edit_status($purchlog_id = '', $purchlog_status = '')
{
    global $wpdb;
    if (empty($purchlog_id) && empty($purchlog_status)) {
        $purchlog_id = absint($_POST['id']);
        $purchlog_status = absint($_POST['new_status']);
    }
    $purchase_log = new WPSC_Purchase_Log($purchlog_id);
    //in the future when everyone is using the 2.0 merchant api, we should use the merchant class to update the staus,
    // then you can get rid of this hook and have each person overwrite the method that updates the status.
    do_action('wpsc_edit_order_status', array('purchlog_id' => $purchlog_id, 'purchlog_data' => $purchase_log->get_data(), 'new_status' => $purchlog_status));
    $result = wpsc_update_purchase_log_status($purchlog_id, $purchlog_status);
    wpsc_clear_stock_claims();
    return $result;
}
Esempio n. 30
0
 /**
  * go_to_transaction_results, please don't extend this without very good reason
  * go to transaction results, if this changes and you extend this, your merchant module may go to the wrong place
  */
 function go_to_transaction_results($session_id)
 {
     $purchase_log = new WPSC_Purchase_Log($this->purchase_id);
     //Now to do actions once the payment has been attempted
     switch ($purchase_log->get('processed')) {
         case WPSC_Purchase_Log::ACCEPTED_PAYMENT:
             // payment worked
             do_action('wpsc_payment_successful');
             break;
         case WPSC_Purchase_Log::INCOMPLETE_SALE:
             // payment declined
             do_action('wpsc_payment_failed');
             break;
         case WPSC_Purchase_Log::ORDER_RECEIVED:
             // something happened with the payment
             do_action('wpsc_payment_incomplete');
             break;
     }
     $transaction_url_with_sessionid = add_query_arg('sessionid', $session_id, get_option('transact_url'));
     wp_redirect($transaction_url_with_sessionid);
     exit;
     // follow the redirect with an exit, just to be sure.
 }