Stripe::confirm PHP Метод

confirm() публичный Метод

public confirm ( )
    public function confirm()
    {
        $this->lang->load('stripe/stripe');
        $this->form_validation->reset_validation();
        $this->form_validation->set_rules('stripe_token', 'lang:label_card_number', 'xss_clean|trim|required');
        if ($this->form_validation->run() === TRUE) {
            // checks if form validation routines ran successfully
            $validated = TRUE;
        } else {
            return FALSE;
        }
        $order_data = $this->session->userdata('order_data');
        // retrieve order details from session userdata
        $cart_contents = $this->session->userdata('cart_contents');
        // retrieve cart contents
        if ($validated === TRUE and !empty($order_data['payment']) and $order_data['payment'] == 'stripe') {
            // check if payment method is equal to paypal
            if (empty($order_data) or empty($cart_contents)) {
                return FALSE;
            }
            $ext_payment_data = !empty($order_data['ext_payment']['ext_data']) ? $order_data['ext_payment']['ext_data'] : array();
            if (!empty($ext_payment_data['order_total']) and $cart_contents['order_total'] < $ext_payment_data['order_total']) {
                $this->alert->set('danger', $this->lang->line('alert_min_total'));
                return FALSE;
            }
            $this->load->model('Stripe_model');
            $response = $this->Stripe_model->createCharge($this->input->post('stripe_token'), $order_data);
            if (isset($response->error->message)) {
                if ($response->error->type === 'card_error') {
                    $this->alert->set('danger', $response->error->message);
                }
            } else {
                if (isset($response->status)) {
                    if ($response->status !== 'succeeded') {
                        $order_data['status_id'] = $ext_payment_data['order_status'];
                    } else {
                        if (isset($ext_payment_data['order_status']) and is_numeric($ext_payment_data['order_status'])) {
                            $order_data['status_id'] = $ext_payment_data['order_status'];
                        } else {
                            $order_data['status_id'] = $this->config->item('default_order_status');
                        }
                    }
                    if (!empty($response->paid)) {
                        $comment = sprintf($this->lang->line('text_payment_status'), $response->status, $response->id);
                    } else {
                        $comment = "{$response->failure_message} {$response->id}";
                    }
                    $order_history = array('object_id' => $order_data['order_id'], 'status_id' => $order_data['status_id'], 'notify' => '0', 'comment' => $comment, 'date_added' => mdate('%Y-%m-%d %H:%i:%s', time()));
                    $this->load->model('Statuses_model');
                    $this->Statuses_model->addStatusHistory('order', $order_history);
                    $this->load->model('Orders_model');
                    if ($this->Orders_model->completeOrder($order_data['order_id'], $order_data, $cart_contents)) {
                        redirect('checkout/success');
                        // redirect to checkout success page with returned order id
                    }
                }
            }
            return FALSE;
        }
    }