/** * Submit * Charges the user for the purchase and if profit sharing is enabled * each product owner. * @since 1.3 * @version 1.3 */ function submit() { // Since the wpsc_pre_submit_gateway action could change these values, we need to check if ($this->cost > 0 && $this->user_id != 0 && !empty($this->transaction_id)) { // Let other play before we start do_action_ref_array('mycred_wpecom_charg', array(&$this)); // Charge $this->core->add_creds('wpecom_payment', $this->user_id, 0 - $this->cost, $this->prefs['log'], '', $this->purchase_id, $this->mycred_type); // Update Order $this->set_transaction_details($this->transaction_id, 3); transaction_results($this->cart_data['session_id'], false); // Payout Share if ($this->prefs['share'] > 0) { // Loop though items foreach ((array) $this->cart_items as $item) { // Get product $product = get_post((int) $item['product_id']); // Continue if product has just been deleted or owner is buyer if ($product === NULL || $product->post_author == $this->user_id) { continue; } // Calculate Cost $price = $item['price']; $quantity = $item['quantity']; $cost = $price * $quantity; // Calculate Share $percentage = apply_filters('mycred_wpecom_profit_share', $this->prefs['share'], $this, $product); if ($percentage == 0) { continue; } $share = $percentage / 100 * $cost; // Payout $this->core->add_creds('store_sale', $product->post_author, $share, $this->prefs['share_log'], $product->ID, array('ref_type' => 'post'), $this->mycred_type); } } // Let others play before we end do_action_ref_array('mycred_wpecom_charged', array(&$this)); // Empty Cart, Redirect & Exit wpsc_empty_cart(); $this->go_to_transaction_results($this->cart_data['session_id']); exit; } elseif (!empty($this->transaction_id)) { $this->set_transaction_details($this->transaction_id, 2); } }
/** * submit method, sends the received data to the payment gateway * @access public */ function submit() { $name_value_pairs = array(); foreach ($this->collected_gateway_data as $key => $value) { $name_value_pairs[] = $key . '=' . urlencode($value); } $gateway_values = implode('&', $name_value_pairs); $redirect = get_option('paypal_multiple_url') . "?" . $gateway_values; // URLs up to 2083 characters long are short enough for an HTTP GET in all browsers. // Longer URLs require us to send aggregate cart data to PayPal short of losing data. // An exception is made for recurring transactions, since there isn't much we can do. if (strlen($redirect) > 2083 && !$this->cart_data['is_subscription']) { $name_value_pairs = array(); foreach ($this->_construct_value_array(true) as $key => $value) { $name_value_pairs[] = $key . '=' . urlencode($value); } $gateway_values = implode('&', $name_value_pairs); $redirect = get_option('paypal_multiple_url') . "?" . $gateway_values; } if (defined('WPSC_ADD_DEBUG_PAGE') && WPSC_ADD_DEBUG_PAGE) { echo "<a href='" . esc_url($redirect) . "'>" . __("Test the URL here", 'wp-e-commerce') . "</a>"; echo "<pre>" . print_r($this->collected_gateway_data, true) . "</pre>"; exit; } else { if (defined('WPSC_PAYPAL_BUY_NOW') && WPSC_PAYPAL_BUY_NOW) { wpsc_empty_cart(); } wp_redirect($redirect); exit; } }
function _wpsc_oklink_return() { if (!isset($_REQUEST['wpsc_oklink_return'])) { return; } // oklink order param interferes with wordpress unset($_REQUEST['order']); unset($_GET['order']); if (!isset($_REQUEST['sessionid'])) { return; } global $sessionid; $purchase_log = new WPSC_Purchase_Log($_REQUEST['sessionid'], 'sessionid'); if (!$purchase_log->exists() || $purchase_log->is_transaction_completed()) { return; } $status = 1; if (isset($_REQUEST['cancelled'])) { # Unsetting sessionid to show error do_action('wpsc_payment_failed'); $sessionid = false; unset($_REQUEST['sessionid']); unset($_GET['sessionid']); } else { $status = WPSC_Purchase_Log::ORDER_RECEIVED; $purchase_log->set('processed', $status); $purchase_log->save(); wpsc_empty_cart(); } }