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));
}