public static function status_update(Pronamic_Pay_Payment $payment, $can_redirect = false) { $data = new Pronamic_WP_Pay_Extensions_S2Member_PaymentData(array('level' => get_post_meta($payment->get_id(), '_pronamic_payment_s2member_level', true), 'period' => get_post_meta($payment->get_id(), '_pronamic_payment_s2member_period', true))); $url = $data->get_normal_return_url(); switch ($payment->status) { case Pronamic_WP_Pay_Statuses::CANCELLED: $url = $data->get_cancel_url(); break; case Pronamic_WP_Pay_Statuses::EXPIRED: $url = $data->get_error_url(); break; case Pronamic_WP_Pay_Statuses::FAILURE: $url = $data->get_error_url(); break; case Pronamic_WP_Pay_Statuses::SUCCESS: $url = $data->get_success_url(); break; case Pronamic_WP_Pay_Statuses::OPEN: $url = $data->get_normal_return_url(); break; } if ($url && $can_redirect) { wp_redirect($url, 303); exit; } }
/** * Handle payment */ public function handle_payment() { if (filter_has_var(INPUT_POST, 'pronamic_pay_s2member')) { $index = filter_input(INPUT_POST, 'pronamic_pay_s2member_index', FILTER_SANITIZE_STRING); $hash = filter_input(INPUT_POST, 'pronamic_pay_s2member_hash', FILTER_SANITIZE_STRING); $data = filter_input(INPUT_POST, 'pronamic_pay_s2member_data', FILTER_SANITIZE_STRING, FILTER_REQUIRE_ARRAY); if ($hash === $this->create_hash($data)) { // Config $config_id = get_option('pronamic_pay_s2member_config_id'); // Gateway $gateway = Pronamic_WP_Pay_Plugin::get_gateway($config_id); // Data $data = new Pronamic_WP_Pay_Extensions_S2Member_PaymentData($data); $email = $data->get_email(); if (!empty($email)) { // Start $payment = Pronamic_WP_Pay_Plugin::start($config_id, $gateway, $data); update_post_meta($payment->get_id(), '_pronamic_payment_s2member_period', $data->get_period()); update_post_meta($payment->get_id(), '_pronamic_payment_s2member_level', $data->get_level()); update_post_meta($payment->get_id(), '_pronamic_payment_s2member_ccaps', $data->get_ccaps()); $error = $gateway->get_error(); if (is_wp_error($error)) { // Set error message $this->error[$index] = array(Pronamic_WP_Pay_Plugin::get_default_error_message()); foreach ($error->get_error_messages() as $message) { $this->error[$index][] = $message; } } else { // Redirect $gateway->redirect($payment); } } } } }