ControllerExtensionPaymentKlarnaCheckout::shippingAddress PHP Метод

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

public shippingAddress ( )
    public function shippingAddress()
    {
        $this->load->model('extension/payment/klarna_checkout');
        $this->load->model('localisation/zone');
        if (!$this->config->get('klarna_checkout_status')) {
            return false;
        }
        $json = array();
        unset($this->session->data['shipping_address']);
        unset($this->session->data['shipping_methods']);
        if ($this->request->server['REQUEST_METHOD'] == 'POST' && isset($this->request->post['country'])) {
            $country_info = $this->model_extension_payment_klarna_checkout->getCountryByIsoCode3($this->request->post['country']);
            if ($country_info) {
                // Set default zone for shipping calculations. Get overwritten by correct data when order is confirmed
                $zones = $this->model_localisation_zone->getZonesByCountryId($country_info['country_id']);
                $zone = array();
                if (isset($this->request->post['region']) && !empty($this->request->post['region'])) {
                    $zone = $this->model_extension_payment_klarna_checkout->getZoneByCode($this->request->post['region'], $country_info['country_id']);
                }
                if ($zone || $zones) {
                    $this->session->data['shipping_address'] = array('address_id' => null, 'firstname' => utf8_substr($this->request->post['given_name'], 0, 32), 'lastname' => utf8_substr($this->request->post['family_name'], 0, 32), 'company' => null, 'address_1' => utf8_substr($this->request->post['street_address'], 0, 128), 'address_2' => utf8_substr($this->request->post['street_address'], 129, 256), 'postcode' => utf8_substr($this->request->post['postal_code'], 0, 10), 'city' => utf8_substr($this->request->post['city'], 0, 128), 'zone_id' => $zone ? $zone['zone_id'] : $zones[0]['zone_id'], 'zone' => $zone ? $zone['name'] : $zones[0]['name'], 'zone_code' => $zone ? $zone['code'] : $zones[0]['code'], 'country_id' => $country_info['country_id'], 'country' => $country_info['name'], 'iso_code_2' => $country_info['iso_code_2'], 'iso_code_3' => $country_info['iso_code_3'], 'address_format' => $country_info['address_format'], 'custom_field' => array());
                    $this->tax->unsetRates();
                    $this->tax->setShippingAddress($this->session->data['shipping_address']['country_id'], $this->session->data['shipping_address']['zone_id']);
                    $this->tax->setStoreAddress($this->config->get('config_country_id'), $this->config->get('config_zone_id'));
                }
            } else {
                $this->model_extension_payment_klarna_checkout->log('Couldnt find country: ' . $this->request->post['country']);
            }
        }
        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }