/** * @param null $args * * @return mixed */ function learn_press_add_order($args = null) { //$method, $method_id, $status = 'Pending', $customer_id = false, $transaction_object = false, $args = array() $default_args = array('method' => '', 'method_id' => '', 'status' => '', 'user_id' => null, 'order_id' => 0, 'parent' => 0, 'transaction_object' => false); $args = wp_parse_args($args, $default_args); $order_data = array(); if ($args['order_id'] > 0 && get_post($args['order_id'])) { $updating = true; $order_data['ID'] = $args['order_id']; } else { $updating = false; $order_data['post_type'] = LP()->order_post_type; $order_data['post_status'] = !empty($args['status']) ? 'publish' : 'lpr-draft'; $order_data['ping_status'] = 'closed'; $order_data['post_author'] = ($order_owner_id = learn_press_cart_order_instructor()) ? $order_owner_id : 1; // always is administrator $order_data['post_parent'] = absint($args['parent']); } $order_title = array(); if ($args['method']) { $order_title[] = $args['method']; } if ($args['method_id']) { $order_title[] = $args['method_id']; } $order_title[] = date_i18n('Y-m-d-H:i:s'); $order_data['post_title'] = join('-', $order_title); if (empty($args['user_id'])) { $user = learn_press_get_current_user(); $args['user_id'] = $user->ID; } if (!$args['transaction_object']) { $args['transaction_object'] = learn_press_generate_transaction_object(); } if (!$updating) { if ($transaction_id = wp_insert_post($order_data)) { update_post_meta($transaction_id, '_learn_press_transaction_method', $args['method']); //update_post_meta( $transaction_id, '_learn_press_transaction_status', $status ); update_post_meta($transaction_id, '_learn_press_customer_id', $args['user_id']); update_post_meta($transaction_id, '_learn_press_customer_ip', learn_press_get_ip()); update_post_meta($transaction_id, '_learn_press_order_items', $args['transaction_object']); add_user_meta($args['user_id'], '_lpr_order_id', $transaction_id); } } else { $transaction_id = wp_update_post($order_data); } if ($transaction_id) { if (!empty($args['status'])) { learn_press_update_order_status($transaction_id, $args['status']); } update_post_meta($transaction_id, '_learn_press_transaction_method_id', $args['method_id']); if ($args['transaction_object']) { update_post_meta($transaction_id, '_learn_press_order_items', $args['transaction_object']); } if (!empty($args['status'])) { if ($updating) { return apply_filters('learn_press_update_transaction_success', $transaction_id, $args); } else { return apply_filters('learn_press_add_transaction_success', $transaction_id, $args); } } return $transaction_id; } return false; //do_action( 'learn_press_add_transaction_fail', $args );// $method, $method_id, $status, $customer_id, $transaction_object, $args ); }
function get_paypal_basic_request_url($order) { $settings = get_option('_lpr_settings_payment'); if (empty($settings['paypal'])) { return; } $paypal_settings = $settings['paypal']; $user = learn_press_get_current_user(); $paypal_args = array('cmd' => '_xclick', 'amount' => learn_press_get_cart_total(), 'quantity' => '1'); $transaction = learn_press_generate_transaction_object(); $temp_id = learn_press_uniqid(); $xxx = @file_get_contents(LPR_PLUGIN_PATH . '/temp.txt'); learn_press_set_transient_transaction('lpps', $temp_id, $user->ID, $transaction); file_put_contents(LPR_PLUGIN_PATH . '/temp.txt', $xxx . "=" . $temp_id); /*$order_id = LearnPress()->session->get( 'learn_press_user_order' ); $order_id = learn_press_add_transaction( array( 'method' => $this->method, 'method_id' => '', 'status' => '', 'user_id' => null, 'order_id' => $order_id, 'parent' => 0, 'transaction_object' => $transaction ) ); //LearnPress()->session->set( 'learn_press_user_order', $order_id ); $order = new LPR_Order( $order_id );*/ $nonce = wp_create_nonce('learn-press-paypal-nonce'); $paypal_email = $paypal_settings['sandbox'] ? $paypal_settings['paypal_sandbox_email'] : $paypal_settings['paypal_email']; $query = array('business' => $paypal_email, 'item_name' => learn_press_get_cart_description(), 'return' => add_query_arg(array('learn-press-transaction-method' => 'paypal-standard', 'paypal-nonce' => $nonce), learn_press_get_cart_course_url()), 'currency_code' => learn_press_get_currency(), 'notify_url' => get_site_url() . '/?' . learn_press_get_web_hook('paypal-standard') . '=1', 'no_note' => '1', 'shipping' => '0', 'email' => $user->user_email, 'rm' => '2', 'cancel_return' => learn_press_get_cart_course_url(), 'custom' => $temp_id, 'no_shipping' => '1'); $query = array_merge($paypal_args, $query); $query = apply_filters('it_exchange_paypal_standard_query', $query); $paypal_payment_url = ($paypal_settings['sandbox'] ? $this->paypal_payment_sandbox_url : $this->paypal_payment_live_url) . '?' . http_build_query($query); return $paypal_payment_url; }
/** * Action when user press the "Take this course" button * * @param $course_id * @param string $payment_method */ function learn_press_take_course($course_id, $payment_method = '') { $user = learn_press_get_current_user(); $can_take_course = apply_filters('learn_press_before_take_course', true, $user->ID, $course_id, $payment_method); if ($can_take_course) { if (learn_press_is_free_course($course_id)) { if ($order_id = learn_press_add_transaction(array('method' => 'free', 'method_id' => '', 'status' => '', 'user_id' => $user->ID, 'transaction_object' => learn_press_generate_transaction_object()))) { learn_press_update_order_status($order_id, 'Completed'); learn_press_add_message('message', __('Congratulations! You have enrolled this course')); $json = array('result' => 'success', 'redirect' => ($confirm_page_id = learn_press_get_page_id('taken_course_confirm')) && get_post($confirm_page_id) ? learn_press_get_order_confirm_url($order_id) : get_permalink($course_id)); learn_press_send_json($json); } } else { if (has_filter('learn_press_take_course_' . $payment_method)) { $order = null; $result = apply_filters('learn_press_take_course_' . $payment_method, $order); $result = apply_filters('learn_press_payment_result', $result, $order); if (is_ajax()) { learn_press_send_json($result); exit; } else { wp_redirect($result['redirect']); exit; } } else { wp_die(__('Invalid payment method.', 'learn_press')); } } } else { learn_press_add_message('error', __('Sorry! You can not enroll to this course')); $json = array('result' => 'error', 'redirect' => get_permalink($course_id)); echo '<!--LPR_START-->' . json_encode($json) . '<!--LPR_END-->'; } }