Version Notes
Features:
- Added the new Postcode.nl Signal API network for data checking and fraud warnings (https://api.postcode.nl/documentation/signal-api-description in Dutch)
- Added option to enable/disable Signal and Address API separately
Download this release
Release Info
Developer | Postcode.nl Technical Support |
Extension | PostcodeNl_Api |
Version | 1.2.0.0 |
Comparing to | |
See all releases |
Code changes from version 1.1.2.1 to 1.2.0.0
- app/code/community/PostcodeNl/Api/Helper/Data.php +467 -150
- app/code/community/PostcodeNl/Api/Model/Observer.php +29 -0
- app/code/community/PostcodeNl/Api/etc/config.xml +14 -0
- app/code/community/PostcodeNl/Api/etc/system.xml +56 -7
- app/design/frontend/default/default/layout/postcodenl/api/lookup.xml +0 -169
- app/design/frontend/default/default/template/postcodenl/api/jsinit.phtml +0 -1
- app/etc/modules/PostcodeNl_Api.xml +0 -9
- app/locale/en_US/PostcodeNl_Api.csv +7 -0
- app/locale/nl_NL/PostcodeNl_Api.csv +7 -0
- js/postcodenl/api/lookup.js +21 -5
- package.xml +11 -10
- skin/frontend/default/default/postcodenl/api/css/lookup.css +0 -171
- skin/frontend/default/default/postcodenl/api/images/postcode-logo.png +0 -0
app/code/community/PostcodeNl/Api/Helper/Data.php
CHANGED
@@ -4,62 +4,28 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
|
|
4 |
const API_TIMEOUT = 3;
|
5 |
const API_URL = 'https://api.postcode.nl';
|
6 |
|
7 |
-
protected $_modules;
|
8 |
|
9 |
protected $_enrichType = 0;
|
10 |
|
11 |
-
protected
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
// Detect enterprise
|
16 |
-
return 'MagentoEnterprise/'. Mage::getVersion();
|
17 |
-
}
|
18 |
-
elseif ($this->_getModuleInfo('Enterprise_Enterprise') !== null)
|
19 |
-
{
|
20 |
-
// Detect professional
|
21 |
-
return 'MagentoProfessional/'. Mage::getVersion();
|
22 |
-
}
|
23 |
-
else
|
24 |
-
{
|
25 |
-
// Rest
|
26 |
-
return 'Magento/'. Mage::getVersion();
|
27 |
-
}
|
28 |
-
}
|
29 |
-
|
30 |
-
protected function _getModuleInfo($moduleName)
|
31 |
-
{
|
32 |
-
if (!isset($this->_modules))
|
33 |
-
$this->_modules = (array)Mage::getConfig()->getNode('modules')->children();
|
34 |
-
|
35 |
-
if (!isset($this->_modules[$moduleName]))
|
36 |
-
return null;
|
37 |
-
|
38 |
-
return $this->_modules[$moduleName];
|
39 |
-
}
|
40 |
-
|
41 |
-
protected function _getConfigBoolString($configKey)
|
42 |
-
{
|
43 |
-
if (Mage::getStoreConfig($configKey))
|
44 |
-
return 'true';
|
45 |
-
|
46 |
-
return 'false';
|
47 |
-
}
|
48 |
|
49 |
/**
|
50 |
* Get the html for initializing validation script.
|
51 |
*
|
|
|
|
|
52 |
* @return string
|
53 |
*/
|
54 |
public function getJsinit($getAdminConfig = false)
|
55 |
{
|
56 |
-
if ($getAdminConfig &&
|
57 |
return '';
|
58 |
|
59 |
-
|
60 |
-
$baseUrl = Mage::helper('adminhtml')->getUrl('*/pcnl/lookup', array('_secure' => true));
|
61 |
-
else
|
62 |
-
$baseUrl = Mage::getUrl('postcodenl_api/json', array('_secure' => true));
|
63 |
|
64 |
$html = '
|
65 |
<script type="text/javascript">
|
@@ -67,6 +33,7 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
|
|
67 |
var PCNLAPI_CONFIG = {
|
68 |
baseUrl: "' . htmlspecialchars($baseUrl) . '",
|
69 |
useStreet2AsHouseNumber: ' . $this->_getConfigBoolString('postcodenl_api/advanced_config/use_street2_as_housenumber') . ',
|
|
|
70 |
blockPostOfficeBoxAddresses: '. $this->_getConfigBoolString('postcodenl_api/advanced_config/block_postofficeboxaddresses') . ',
|
71 |
neverHideCountry: ' . $this->_getConfigBoolString('postcodenl_api/advanced_config/never_hide_country') . ',
|
72 |
showcase: ' . $this->_getConfigBoolString('postcodenl_api/development_config/api_showcase') . ',
|
@@ -102,48 +69,58 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
|
|
102 |
return $html;
|
103 |
}
|
104 |
|
105 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
{
|
107 |
-
|
108 |
-
if (
|
109 |
-
|
110 |
-
}
|
111 |
|
112 |
-
|
113 |
-
|
114 |
-
if (!Mage::getStoreConfig('postcodenl_api/config/enabled'))
|
115 |
-
{
|
116 |
-
return array('message' => $this->__('Postcode.nl API not enabled.'));
|
117 |
-
}
|
118 |
|
119 |
-
|
120 |
-
|
121 |
-
$serviceSecret = trim(Mage::getStoreConfig('postcodenl_api/config/api_secret'));
|
122 |
-
// Development options
|
123 |
-
$serviceUrl = trim(Mage::getStoreConfig('postcodenl_api/development_config/api_url'));
|
124 |
-
if (empty($serviceUrl))
|
125 |
-
$serviceUrl = self::API_URL;
|
126 |
|
127 |
-
$
|
128 |
-
|
129 |
|
130 |
-
|
131 |
-
|
132 |
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
|
|
|
|
|
|
|
|
|
|
137 |
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
|
148 |
// Some basic user data 'fixing', remove any not-letter, not-number characters
|
149 |
$postcode = preg_replace('~[^a-z0-9]~i', '', $postcode);
|
@@ -151,104 +128,444 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
|
|
151 |
// Basic postcode format checking
|
152 |
if (!preg_match('~^[0-9]{4}[a-z]{2}$~i', $postcode))
|
153 |
{
|
154 |
-
$
|
155 |
-
$
|
156 |
-
$
|
157 |
-
return $sendResponse;
|
158 |
}
|
159 |
|
160 |
-
$url = $
|
161 |
|
162 |
-
$
|
163 |
-
curl_setopt($ch, CURLOPT_URL, $url);
|
164 |
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
165 |
-
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, self::API_TIMEOUT);
|
166 |
-
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
|
167 |
-
curl_setopt($ch, CURLOPT_USERPWD, $serviceKey .':'. $serviceSecret);
|
168 |
-
curl_setopt($ch, CURLOPT_USERAGENT, 'PostcodeNl_Api_MagentoPlugin/' . $extensionVersion .' '. $this->_getMagentoVersion() .' PHP/'. phpversion() .' EnrichType/'. $this->_enrichType);
|
169 |
-
$jsonResponse = curl_exec($ch);
|
170 |
-
$curlError = curl_error($ch);
|
171 |
-
curl_close($ch);
|
172 |
|
173 |
-
$
|
|
|
174 |
|
175 |
-
$sendResponse = array();
|
176 |
if ($serviceShowcase)
|
177 |
-
$
|
178 |
|
179 |
if ($serviceDebug)
|
180 |
{
|
181 |
-
$
|
182 |
-
foreach (Mage::getConfig()->getNode('modules')->children() as $name => $module)
|
183 |
-
{
|
184 |
-
$modules[$name] = array();
|
185 |
-
foreach ($module as $key => $value)
|
186 |
-
{
|
187 |
-
if (in_array((string)$key, array('active')))
|
188 |
-
$modules[$name][$key] = (string)$value == 'true' ? true : false;
|
189 |
-
else if (in_array((string)$key, array('codePool', 'version')))
|
190 |
-
$modules[$name][$key] = (string)$value;
|
191 |
-
}
|
192 |
-
}
|
193 |
-
|
194 |
-
$sendResponse['debugInfo'] = array(
|
195 |
'requestUrl' => $url,
|
196 |
-
'rawResponse' => $
|
197 |
-
'parsedResponse' => $
|
198 |
-
'
|
199 |
'configuration' => array(
|
200 |
-
'url' => $
|
201 |
-
'key' => $
|
202 |
-
'secret' => substr($
|
203 |
'showcase' => $serviceShowcase,
|
204 |
'debug' => $serviceDebug,
|
205 |
),
|
206 |
'magentoVersion' => $this->_getMagentoVersion(),
|
207 |
-
'extensionVersion' => $
|
208 |
-
'modules' => $
|
209 |
);
|
210 |
}
|
211 |
|
212 |
-
if (is_array($
|
|
|
|
|
|
|
|
|
213 |
{
|
214 |
-
|
215 |
{
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
240 |
}
|
241 |
}
|
242 |
-
else
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
243 |
{
|
244 |
-
$
|
|
|
|
|
|
|
|
|
|
|
245 |
}
|
246 |
else
|
247 |
{
|
248 |
-
$
|
249 |
-
|
250 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
251 |
}
|
252 |
-
return $
|
253 |
}
|
254 |
}
|
4 |
const API_TIMEOUT = 3;
|
5 |
const API_URL = 'https://api.postcode.nl';
|
6 |
|
7 |
+
protected $_modules = null;
|
8 |
|
9 |
protected $_enrichType = 0;
|
10 |
|
11 |
+
protected $_httpResponseRaw = null;
|
12 |
+
protected $_httpResponseCode = null;
|
13 |
+
protected $_httpResponseCodeClass = null;
|
14 |
+
protected $_httpClientError = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
/**
|
17 |
* Get the html for initializing validation script.
|
18 |
*
|
19 |
+
* @param bool $getAdminConfig
|
20 |
+
*
|
21 |
* @return string
|
22 |
*/
|
23 |
public function getJsinit($getAdminConfig = false)
|
24 |
{
|
25 |
+
if ($getAdminConfig && $this->_getStoreConfig('postcodenl_api/advanced_config/admin_validation_disabled'))
|
26 |
return '';
|
27 |
|
28 |
+
$baseUrl = $this->_getMagentoLookupUrl($getAdminConfig);
|
|
|
|
|
|
|
29 |
|
30 |
$html = '
|
31 |
<script type="text/javascript">
|
33 |
var PCNLAPI_CONFIG = {
|
34 |
baseUrl: "' . htmlspecialchars($baseUrl) . '",
|
35 |
useStreet2AsHouseNumber: ' . $this->_getConfigBoolString('postcodenl_api/advanced_config/use_street2_as_housenumber') . ',
|
36 |
+
useStreet3AsHouseNumberAddition: ' . $this->_getConfigBoolString('postcodenl_api/advanced_config/use_street3_as_housenumber_addition') . ',
|
37 |
blockPostOfficeBoxAddresses: '. $this->_getConfigBoolString('postcodenl_api/advanced_config/block_postofficeboxaddresses') . ',
|
38 |
neverHideCountry: ' . $this->_getConfigBoolString('postcodenl_api/advanced_config/never_hide_country') . ',
|
39 |
showcase: ' . $this->_getConfigBoolString('postcodenl_api/development_config/api_showcase') . ',
|
69 |
return $html;
|
70 |
}
|
71 |
|
72 |
+
/**
|
73 |
+
* Check if a specific service is enabled or not.
|
74 |
+
*
|
75 |
+
* @param string $service
|
76 |
+
*
|
77 |
+
* @return bool
|
78 |
+
*/
|
79 |
+
public function isApiEnabled($service)
|
80 |
{
|
81 |
+
// If we're debugging, assume all services are enabled, to get feedback on all levels.
|
82 |
+
if ($this->_getStoreConfig('postcodenl_api/development_config/api_debug'))
|
83 |
+
return true;
|
|
|
84 |
|
85 |
+
if (!$this->_getStoreConfig('postcodenl_api/config/enabled'))
|
86 |
+
return false;
|
|
|
|
|
|
|
|
|
87 |
|
88 |
+
if ($service === 'Address' && !$this->_getStoreConfig('postcodenl_api/config/enabled_address_api'))
|
89 |
+
return false;
|
|
|
|
|
|
|
|
|
|
|
90 |
|
91 |
+
if ($service === 'Signal' && !$this->_getStoreConfig('postcodenl_api/config/enabled_signal_api'))
|
92 |
+
return false;
|
93 |
|
94 |
+
return true;
|
95 |
+
}
|
96 |
|
97 |
+
/**
|
98 |
+
* Check if we're currently in debug mode.
|
99 |
+
*
|
100 |
+
* @return bool
|
101 |
+
*/
|
102 |
+
public function isDebugging()
|
103 |
+
{
|
104 |
+
return (bool)$this->_getStoreConfig('postcodenl_api/development_config/api_debug');
|
105 |
+
}
|
106 |
|
107 |
+
/**
|
108 |
+
* Look information about a Dutch address by postcode, house number, and house number addition
|
109 |
+
*
|
110 |
+
* @param string $postcode
|
111 |
+
* @param string $houseNumber
|
112 |
+
* @param string $houseNumberAddition
|
113 |
+
*
|
114 |
+
* @return string
|
115 |
+
*/
|
116 |
+
public function lookupAddress($postcode, $houseNumber, $houseNumberAddition)
|
117 |
+
{
|
118 |
+
// Check if we are we enabled, configured & capable of handling an API request
|
119 |
+
$message = $this->_checkApiReady('Address');
|
120 |
+
if ($message)
|
121 |
+
return $message;
|
122 |
+
|
123 |
+
$response = array();
|
124 |
|
125 |
// Some basic user data 'fixing', remove any not-letter, not-number characters
|
126 |
$postcode = preg_replace('~[^a-z0-9]~i', '', $postcode);
|
128 |
// Basic postcode format checking
|
129 |
if (!preg_match('~^[0-9]{4}[a-z]{2}$~i', $postcode))
|
130 |
{
|
131 |
+
$response['message'] = $this->__('Invalid postcode format, use `1234AB` format.');
|
132 |
+
$response['messageTarget'] = 'postcode';
|
133 |
+
return $response;
|
|
|
134 |
}
|
135 |
|
136 |
+
$url = $this->_getServiceUrl() . '/rest/addresses/' . rawurlencode($postcode). '/'. rawurlencode($houseNumber) . '/'. rawurlencode($houseNumberAddition);
|
137 |
|
138 |
+
$jsonData = $this->_callApiUrlGet($url);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
|
140 |
+
$serviceShowcase = $this->_getStoreConfig('postcodenl_api/development_config/api_showcase');
|
141 |
+
$serviceDebug = $this->isDebugging();
|
142 |
|
|
|
143 |
if ($serviceShowcase)
|
144 |
+
$response['showcaseResponse'] = $jsonData;
|
145 |
|
146 |
if ($serviceDebug)
|
147 |
{
|
148 |
+
$response['debugInfo'] = array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
'requestUrl' => $url,
|
150 |
+
'rawResponse' => $this->_httpResponseRaw,
|
151 |
+
'parsedResponse' => $jsonData,
|
152 |
+
'httpClientError' => $this->_httpClientError,
|
153 |
'configuration' => array(
|
154 |
+
'url' => $this->_getServiceUrl(),
|
155 |
+
'key' => $this->_getKey(),
|
156 |
+
'secret' => substr($this->_getSecret(), 0, 6) .'[hidden]',
|
157 |
'showcase' => $serviceShowcase,
|
158 |
'debug' => $serviceDebug,
|
159 |
),
|
160 |
'magentoVersion' => $this->_getMagentoVersion(),
|
161 |
+
'extensionVersion' => $this->_getExtensionVersion(),
|
162 |
+
'modules' => $this->_getMagentoModules(),
|
163 |
);
|
164 |
}
|
165 |
|
166 |
+
if ($this->_httpResponseCode == 200 && is_array($jsonData) && isset($jsonData['postcode']))
|
167 |
+
{
|
168 |
+
$response = array_merge($response, $jsonData);
|
169 |
+
}
|
170 |
+
else if (is_array($jsonData) && isset($jsonData['exceptionId']))
|
171 |
{
|
172 |
+
if ($this->_httpResponseCode == 400 || $this->_httpResponseCode == 404)
|
173 |
{
|
174 |
+
switch ($jsonData['exceptionId'])
|
175 |
+
{
|
176 |
+
case 'PostcodeNl_Controller_Address_PostcodeTooShortException':
|
177 |
+
case 'PostcodeNl_Controller_Address_PostcodeTooLongException':
|
178 |
+
case 'PostcodeNl_Controller_Address_NoPostcodeSpecifiedException':
|
179 |
+
case 'PostcodeNl_Controller_Address_InvalidPostcodeException':
|
180 |
+
$response['message'] = $this->__('Invalid postcode format, use `1234AB` format.');
|
181 |
+
$response['messageTarget'] = 'postcode';
|
182 |
+
break;
|
183 |
+
case 'PostcodeNl_Service_PostcodeAddress_AddressNotFoundException':
|
184 |
+
$response['message'] = $this->__('Unknown postcode + housenumber combination.');
|
185 |
+
$response['messageTarget'] = 'housenumber';
|
186 |
+
break;
|
187 |
+
case 'PostcodeNl_Controller_Address_InvalidHouseNumberException':
|
188 |
+
case 'PostcodeNl_Controller_Address_NoHouseNumberSpecifiedException':
|
189 |
+
case 'PostcodeNl_Controller_Address_NegativeHouseNumberException':
|
190 |
+
case 'PostcodeNl_Controller_Address_HouseNumberTooLargeException':
|
191 |
+
case 'PostcodeNl_Controller_Address_HouseNumberIsNotAnIntegerException':
|
192 |
+
$response['message'] = $this->__('Housenumber format is not valid.');
|
193 |
+
$response['messageTarget'] = 'housenumber';
|
194 |
+
break;
|
195 |
+
default:
|
196 |
+
$response['message'] = $this->__('Incorrect address.');
|
197 |
+
$response['messageTarget'] = 'housenumber';
|
198 |
+
break;
|
199 |
+
}
|
200 |
+
}
|
201 |
+
else if (is_array($jsonData) && isset($jsonData['exceptionId']))
|
202 |
+
{
|
203 |
+
$response['message'] = $this->__('Validation error, please use manual input.');
|
204 |
+
$response['messageTarget'] = 'housenumber';
|
205 |
+
$response['useManual'] = true;
|
206 |
}
|
207 |
}
|
208 |
+
else
|
209 |
+
{
|
210 |
+
$response['message'] = $this->__('Validation unavailable, please use manual input.');
|
211 |
+
$response['messageTarget'] = 'housenumber';
|
212 |
+
$response['useManual'] = true;
|
213 |
+
}
|
214 |
+
|
215 |
+
return $response;
|
216 |
+
}
|
217 |
+
|
218 |
+
/**
|
219 |
+
* Set the enrichType number, or text/class description if not in known enrichType list
|
220 |
+
*
|
221 |
+
* @param mixed $enrichType
|
222 |
+
*/
|
223 |
+
public function setEnrichType($enrichType)
|
224 |
+
{
|
225 |
+
$this->_enrichType = preg_replace('~[^0-9a-z\-_,]~i', '', $enrichType);
|
226 |
+
if (strlen($this->_enrichType) > 40)
|
227 |
+
$this->_enrichType = substr($this->_enrichType, 0, 40);
|
228 |
+
}
|
229 |
+
|
230 |
+
/**
|
231 |
+
* Perform a Signal API check.
|
232 |
+
*
|
233 |
+
* @param array $signalCheck
|
234 |
+
*
|
235 |
+
* @return array Signal result
|
236 |
+
*/
|
237 |
+
public function checkSignal($signalCheck)
|
238 |
+
{
|
239 |
+
// Check if we are we enabled, configured & capable of handling an API request
|
240 |
+
$message = $this->_checkApiReady('Signal');
|
241 |
+
if ($message)
|
242 |
+
return $message;
|
243 |
+
|
244 |
+
$response = array();
|
245 |
+
|
246 |
+
$url = $this->_getServiceUrl() . '/rest/signal/check';
|
247 |
+
|
248 |
+
$jsonData = $this->_callApiUrlPostJson($url, $signalCheck);
|
249 |
+
|
250 |
+
if ($this->_httpResponseCodeClass == 200 && is_array($jsonData))
|
251 |
+
{
|
252 |
+
$response = $jsonData;
|
253 |
+
}
|
254 |
+
else if (is_array($jsonData) && isset($jsonData['exceptionId']))
|
255 |
{
|
256 |
+
if ($this->_httpResponseCode == 401 || $this->_httpResponseCode == 403)
|
257 |
+
$response['message'] = $this->__('Invalid Signal API authentication:') .' (`'. $this->_httpResponseCode .'`): ' . $jsonData['exception'];
|
258 |
+
else if ($this->_httpResponseCodeClass == 400)
|
259 |
+
$response['message'] = $this->__('Invalid Signal API input:') .' (`'. $this->_httpResponseCode .'`): ' . $jsonData['exception'];
|
260 |
+
else
|
261 |
+
$response['message'] = $this->__('Signal API error:') .' (`'. $this->_httpResponseCode .'`): '. $jsonData['exception'];
|
262 |
}
|
263 |
else
|
264 |
{
|
265 |
+
$response['message'] = $this->__('Signal API response not understood, service unavailable.') . 'HTTP status code: `'. $this->_httpResponseCode .'`';
|
266 |
+
}
|
267 |
+
return $response;
|
268 |
+
}
|
269 |
+
|
270 |
+
/**
|
271 |
+
* Split a housenumber addition from a housenumber.
|
272 |
+
* Examples: "123 2", "123 rood", "123a", "123a4", "123-a", "123 II"
|
273 |
+
* (the official notation is to separate the housenumber and addition with a single space)
|
274 |
+
*
|
275 |
+
* @param string $houseNumber Housenumber input
|
276 |
+
*
|
277 |
+
* @return array Split 'houseNumber' and 'houseNumberAddition'
|
278 |
+
*/
|
279 |
+
public function splitHouseNumber($houseNumber)
|
280 |
+
{
|
281 |
+
$houseNumberAddition = '';
|
282 |
+
if (preg_match('~^(?<number>[0-9]+)(?:[^0-9a-zA-Z]+(?<addition1>[0-9a-zA-Z ]+)|(?<addition2>[a-zA-Z](?:[0-9a-zA-Z ]*)))?$~', $houseNumber, $match))
|
283 |
+
{
|
284 |
+
$houseNumber = $match['number'];
|
285 |
+
$houseNumberAddition = isset($match['addition2']) ? $match['addition2'] : (isset($match['addition1']) ? $match['addition1'] : '');
|
286 |
+
}
|
287 |
+
|
288 |
+
return array($houseNumber, $houseNumberAddition);
|
289 |
+
}
|
290 |
+
|
291 |
+
/**
|
292 |
+
* Split a streename, housenumber and housenumber addition from a text lines containing a street and housenumber information.
|
293 |
+
*
|
294 |
+
* @param array $streetData Lines of steet data
|
295 |
+
*
|
296 |
+
* @return array Array containing 'street', 'houseNumber' and 'houseNumberAddition'
|
297 |
+
*/
|
298 |
+
public function splitStreetData($streetData)
|
299 |
+
{
|
300 |
+
$regexpStreet = '[^0-9].*?|.*?[^0-9]';
|
301 |
+
$regexpHouseNumber = '[0-9]+';
|
302 |
+
$regexpHouseNumberAddition = '[^\\s]+|[^\\s]\\s+[^\\s]{1,4}';
|
303 |
+
|
304 |
+
if (preg_match('~^(?<street>'. $regexpStreet .')\s+(?<houseNumber>'. $regexpHouseNumber .')([^0-9a-zA-Z]*(?<houseNumberAddition>'. $regexpHouseNumberAddition .'))?\s*$~', $streetData[0], $match))
|
305 |
+
{
|
306 |
+
// Found housenumber contained in first street line
|
307 |
+
return array(
|
308 |
+
'street' => $match['street'],
|
309 |
+
'houseNumber' => $match['houseNumber'],
|
310 |
+
'houseNumberAddition' => $match['houseNumberAddition'],
|
311 |
+
);
|
312 |
+
}
|
313 |
+
else if (isset($streetData[1]))
|
314 |
+
{
|
315 |
+
// Find housenumber contained in second street line
|
316 |
+
|
317 |
+
$houseNumberData = $this->splitHouseNumber($streetData[1]);
|
318 |
+
|
319 |
+
return array(
|
320 |
+
'street' => $streetData[0],
|
321 |
+
'houseNumber' => $houseNumberData[0],
|
322 |
+
'houseNumberAddition' => $houseNumberData[1],
|
323 |
+
);
|
324 |
+
}
|
325 |
+
else
|
326 |
+
{
|
327 |
+
return array(
|
328 |
+
'street' => $streetData[0],
|
329 |
+
'houseNumber' => null,
|
330 |
+
'houseNumberAddition' => null,
|
331 |
+
);
|
332 |
+
}
|
333 |
+
}
|
334 |
+
|
335 |
+
/**
|
336 |
+
* Do a Postcode.nl Signal API check on a (newly created) Magento order.
|
337 |
+
* (called by hook class PostcodeNl_Api_Model_Observer)
|
338 |
+
* Will pass any information that can be used by the MijnPolitie.nl MIO Fraud Warning system
|
339 |
+
* (email, phonenumber), or Postcode.nl address validation (billing and delivery address).
|
340 |
+
* Also includes the order number, to be able to reference the Signal Check later.
|
341 |
+
*
|
342 |
+
* @param Mage_Sales_Model_Order $order
|
343 |
+
*
|
344 |
+
* @return array Signal data, or error with 'message' entry.
|
345 |
+
*/
|
346 |
+
public function checkOrderViaSignal($order)
|
347 |
+
{
|
348 |
+
// Check if we are we are enabled, configured & capable of handling an API request
|
349 |
+
$message = $this->_checkApiReady('Signal');
|
350 |
+
if ($message)
|
351 |
+
return $message;
|
352 |
+
|
353 |
+
// Housenumber data is often contained within the 'street' lines of the address.
|
354 |
+
$billingStreetData = $this->splitStreetData($order->getBillingAddress()->getStreet());
|
355 |
+
$shippingStreetData = $this->splitStreetData($order->getShippingAddress()->getStreet());
|
356 |
+
|
357 |
+
// No customer might be available if this is an order status change
|
358 |
+
$hasCustomer = ($order->getCustomer() !== null);
|
359 |
+
|
360 |
+
// Only send phonenumber if it is at least 5 characters long
|
361 |
+
$phoneNumber = Mage::helper('core/string')->strlen($order->getBillingAddress()->getTelephone()) >= 5 ? $order->getBillingAddress()->getTelephone() : null;
|
362 |
+
|
363 |
+
$signalCheck = array(
|
364 |
+
'customer' => array(
|
365 |
+
'email' => $hasCustomer ? $order->getCustomer()->getEmail() : null,
|
366 |
+
'phoneNumber' => $phoneNumber,
|
367 |
+
'address' => array(
|
368 |
+
'postcode' => $order->getBillingAddress()->getPostcode(),
|
369 |
+
'houseNumber' => $billingStreetData['houseNumber'],
|
370 |
+
'houseNumberAddition' => $billingStreetData['houseNumberAddition'],
|
371 |
+
'street' => $billingStreetData['street'],
|
372 |
+
'city' => $order->getBillingAddress()->getCity(),
|
373 |
+
'region' => $order->getBillingAddress()->getRegion(),
|
374 |
+
'country' => $order->getBillingAddress()->getCountryId(),
|
375 |
+
),
|
376 |
+
),
|
377 |
+
'transaction' => array(
|
378 |
+
'internalId' => $order->getIncrementId(),
|
379 |
+
'deliveryAddress' => array(
|
380 |
+
'postcode' => $order->getShippingAddress()->getPostcode(),
|
381 |
+
'houseNumber' => $shippingStreetData['houseNumber'],
|
382 |
+
'houseNumberAddition' => $shippingStreetData['houseNumberAddition'],
|
383 |
+
'street' => $shippingStreetData['street'],
|
384 |
+
'city' => $order->getShippingAddress()->getCity(),
|
385 |
+
'region' => $order->getShippingAddress()->getRegion(),
|
386 |
+
'country' => $order->getShippingAddress()->getCountryId(),
|
387 |
+
),
|
388 |
+
),
|
389 |
+
);
|
390 |
+
|
391 |
+
return $this->checkSignal($signalCheck);
|
392 |
+
}
|
393 |
+
|
394 |
+
protected function _getStoreConfig($path)
|
395 |
+
{
|
396 |
+
return Mage::getStoreConfig($path);
|
397 |
+
}
|
398 |
+
|
399 |
+
protected function _getKey()
|
400 |
+
{
|
401 |
+
return trim($this->_getStoreConfig('postcodenl_api/config/api_key'));
|
402 |
+
}
|
403 |
+
|
404 |
+
protected function _getSecret()
|
405 |
+
{
|
406 |
+
return trim($this->_getStoreConfig('postcodenl_api/config/api_secret'));
|
407 |
+
}
|
408 |
+
|
409 |
+
protected function _getServiceUrl()
|
410 |
+
{
|
411 |
+
$serviceUrl = trim($this->_getStoreConfig('postcodenl_api/development_config/api_url'));
|
412 |
+
if (empty($serviceUrl))
|
413 |
+
$serviceUrl = self::API_URL;
|
414 |
+
|
415 |
+
return $serviceUrl;
|
416 |
+
}
|
417 |
+
|
418 |
+
protected function _getMagentoVersion()
|
419 |
+
{
|
420 |
+
if ($this->_getModuleInfo('Enterprise_CatalogPermissions') !== null)
|
421 |
+
{
|
422 |
+
// Detect enterprise
|
423 |
+
return 'MagentoEnterprise/'. Mage::getVersion();
|
424 |
+
}
|
425 |
+
elseif ($this->_getModuleInfo('Enterprise_Enterprise') !== null)
|
426 |
+
{
|
427 |
+
// Detect professional
|
428 |
+
return 'MagentoProfessional/'. Mage::getVersion();
|
429 |
+
}
|
430 |
+
else
|
431 |
+
{
|
432 |
+
// Rest
|
433 |
+
return 'Magento/'. Mage::getVersion();
|
434 |
+
}
|
435 |
+
}
|
436 |
+
|
437 |
+
protected function _getModuleInfo($moduleName)
|
438 |
+
{
|
439 |
+
$modules = $this->_getMagentoModules();
|
440 |
+
|
441 |
+
if (!isset($modules[$moduleName]))
|
442 |
+
return null;
|
443 |
+
|
444 |
+
return $modules[$moduleName];
|
445 |
+
}
|
446 |
+
|
447 |
+
protected function _getConfigBoolString($configKey)
|
448 |
+
{
|
449 |
+
if ($this->_getStoreConfig($configKey))
|
450 |
+
return 'true';
|
451 |
+
|
452 |
+
return 'false';
|
453 |
+
}
|
454 |
+
|
455 |
+
protected function _getMagentoLookupUrl($inAdmin = false)
|
456 |
+
{
|
457 |
+
if ($inAdmin)
|
458 |
+
return Mage::helper('adminhtml')->getUrl('*/pcnl/lookup', array('_secure' => true));
|
459 |
+
else
|
460 |
+
return Mage::getUrl('postcodenl_api/json', array('_secure' => true));
|
461 |
+
}
|
462 |
+
|
463 |
+
protected function _curlHasSsl()
|
464 |
+
{
|
465 |
+
$curlVersion = curl_version();
|
466 |
+
return $curlVersion['features'] & CURL_VERSION_SSL;
|
467 |
+
}
|
468 |
+
|
469 |
+
protected function _checkApiReady($service = null)
|
470 |
+
{
|
471 |
+
if (!$this->_getStoreConfig('postcodenl_api/config/enabled'))
|
472 |
+
return array('message' => $this->__('Postcode.nl API not enabled.'));;
|
473 |
+
|
474 |
+
if ($this->_getServiceUrl() === '' || $this->_getKey() === '' || $this->_getSecret() === '')
|
475 |
+
return array('message' => $this->__('Postcode.nl API not configured.'));
|
476 |
+
|
477 |
+
if ($service === 'Address' && !$this->_getStoreConfig('postcodenl_api/config/enabled_address_api'))
|
478 |
+
return array('message' => $this->__('Postcode.nl Address API not enabled.'));;
|
479 |
+
|
480 |
+
if ($service === 'Signal' && !$this->_getStoreConfig('postcodenl_api/config/enabled_signal_api'))
|
481 |
+
return array('message' => $this->__('Postcode.nl Signal API not enabled.'));;
|
482 |
+
|
483 |
+
return $this->_checkCapabilities();
|
484 |
+
}
|
485 |
+
|
486 |
+
protected function _checkCapabilities()
|
487 |
+
{
|
488 |
+
// Check for SSL support in CURL
|
489 |
+
if (!$this->_curlHasSsl())
|
490 |
+
return array('message' => $this->__('Cannot connect to Postcode.nl API: Server is missing SSL (https) support for CURL.'));
|
491 |
+
|
492 |
+
return false;
|
493 |
+
}
|
494 |
+
|
495 |
+
protected function _checkAddressApiReady()
|
496 |
+
{
|
497 |
+
if (!$this->_getStoreConfig('postcodenl_api/config/enabled_address_api'))
|
498 |
+
return array('message' => $this->__('Postcode.nl Address API not enabled.'));;
|
499 |
+
}
|
500 |
+
|
501 |
+
protected function _callApiUrlGet($url)
|
502 |
+
{
|
503 |
+
$ch = curl_init();
|
504 |
+
curl_setopt($ch, CURLOPT_URL, $url);
|
505 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
506 |
+
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, self::API_TIMEOUT);
|
507 |
+
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
|
508 |
+
curl_setopt($ch, CURLOPT_USERPWD, $this->_getKey() .':'. $this->_getSecret());
|
509 |
+
curl_setopt($ch, CURLOPT_USERAGENT, $this->_getUserAgent());
|
510 |
+
$this->_httpResponseRaw = curl_exec($ch);
|
511 |
+
$this->_httpResponseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
512 |
+
$this->_httpResponseCodeClass = (int)floor($this->_httpResponseCode / 100) * 100;
|
513 |
+
$this->_httpClientError = curl_error($ch);
|
514 |
+
|
515 |
+
curl_close($ch);
|
516 |
+
|
517 |
+
return json_decode($this->_httpResponseRaw, true);
|
518 |
+
}
|
519 |
+
|
520 |
+
protected function _callApiUrlPostJson($url, $data)
|
521 |
+
{
|
522 |
+
$ch = curl_init();
|
523 |
+
curl_setopt($ch, CURLOPT_URL, $url);
|
524 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
525 |
+
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, self::API_TIMEOUT);
|
526 |
+
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
|
527 |
+
curl_setopt($ch, CURLOPT_USERPWD, $this->_getKey() .':'. $this->_getSecret());
|
528 |
+
curl_setopt($ch, CURLOPT_USERAGENT, $this->_getUserAgent());
|
529 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
|
530 |
+
curl_setopt($ch, CURLOPT_POST, true);
|
531 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
|
532 |
+
$this->_httpResponseRaw = curl_exec($ch);
|
533 |
+
$this->_httpResponseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
534 |
+
$this->_httpResponseCodeClass = (int)floor($this->_httpResponseCode / 100) * 100;
|
535 |
+
$this->_httpClientError = curl_error($ch);
|
536 |
+
curl_close($ch);
|
537 |
+
|
538 |
+
return json_decode($this->_httpResponseRaw, true);
|
539 |
+
}
|
540 |
+
|
541 |
+
protected function _getExtensionVersion()
|
542 |
+
{
|
543 |
+
$extensionInfo = $this->_getModuleInfo('PostcodeNl_Api');
|
544 |
+
return $extensionInfo ? (string)$extensionInfo['version'] : 'unknown';
|
545 |
+
}
|
546 |
+
|
547 |
+
protected function _getUserAgent()
|
548 |
+
{
|
549 |
+
return 'PostcodeNl_Api_MagentoPlugin/' . $this->_getExtensionVersion() .' '. $this->_getMagentoVersion() .' PHP/'. phpversion() .' EnrichType/'. $this->_enrichType;
|
550 |
+
}
|
551 |
+
|
552 |
+
protected function _getMagentoModules()
|
553 |
+
{
|
554 |
+
if ($this->_modules !== null)
|
555 |
+
return $this->_modules;
|
556 |
+
|
557 |
+
$this->_modules = array();
|
558 |
+
foreach (Mage::getConfig()->getNode('modules')->children() as $name => $module)
|
559 |
+
{
|
560 |
+
$this->_modules[$name] = array();
|
561 |
+
foreach ($module as $key => $value)
|
562 |
+
{
|
563 |
+
if (in_array((string)$key, array('active')))
|
564 |
+
$this->_modules[$name][$key] = (string)$value == 'true' ? true : false;
|
565 |
+
else if (in_array((string)$key, array('codePool', 'version')))
|
566 |
+
$this->_modules[$name][$key] = (string)$value;
|
567 |
+
}
|
568 |
}
|
569 |
+
return $this->_modules;
|
570 |
}
|
571 |
}
|
app/code/community/PostcodeNl/Api/Model/Observer.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class PostcodeNl_Api_Model_Observer
|
3 |
+
{
|
4 |
+
/**
|
5 |
+
* Event Hook: checkout_submit_all_after
|
6 |
+
* @param Varien_Event_Observer $observer
|
7 |
+
*/
|
8 |
+
public function signalObserveOrderCreation(Varien_Event_Observer $observer)
|
9 |
+
{
|
10 |
+
$helper = Mage::helper('postcodenl_api');
|
11 |
+
|
12 |
+
if (!$helper->isApiEnabled('Signal'))
|
13 |
+
return;
|
14 |
+
|
15 |
+
$order = $observer->getEvent()->getOrder();
|
16 |
+
|
17 |
+
$result = $helper->checkOrderViaSignal($order);
|
18 |
+
|
19 |
+
// Can't return errors/messages in hook, so log errors.
|
20 |
+
if (isset($result['message']))
|
21 |
+
{
|
22 |
+
Mage::log('Order #'. $order->getIncrementId() .' signalObserveOrderCreation failed: '. $result['message'], Zend_Log::ERR, 'postcodenl-signal.log', true);
|
23 |
+
}
|
24 |
+
else if ($helper->isDebugging())
|
25 |
+
{
|
26 |
+
Mage::log('Order #'. $order->getIncrementId() .' signalObserveOrderCreation called. '. $result['warningCount'] .' Signal warnings, report: '. $result['reportPdfUrl'], Zend_Log::DEBUG, 'postcodenl-signal.log', true);
|
27 |
+
}
|
28 |
+
}
|
29 |
+
}
|
app/code/community/PostcodeNl/Api/etc/config.xml
CHANGED
@@ -61,6 +61,17 @@
|
|
61 |
</setup>
|
62 |
</postcodenl_api_setup>
|
63 |
</resources>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
</global>
|
65 |
<adminhtml>
|
66 |
<layout>
|
@@ -86,9 +97,12 @@
|
|
86 |
<enabled>1</enabled>
|
87 |
<api_key></api_key>
|
88 |
<api_secret></api_secret>
|
|
|
|
|
89 |
</config>
|
90 |
<advanced_config>
|
91 |
<use_street2_as_housenumber>0</use_street2_as_housenumber>
|
|
|
92 |
<block_postofficeboxaddresses>0</block_postofficeboxaddresses>
|
93 |
<never_hide_country>0</never_hide_country>
|
94 |
<admin_validation_disabled>0</admin_validation_disabled>
|
61 |
</setup>
|
62 |
</postcodenl_api_setup>
|
63 |
</resources>
|
64 |
+
<events>
|
65 |
+
<checkout_submit_all_after>
|
66 |
+
<observers>
|
67 |
+
<postcodenl_signal_order_creation>
|
68 |
+
<type>singleton</type>
|
69 |
+
<class>PostcodeNl_Api_Model_Observer</class>
|
70 |
+
<method>signalObserveOrderCreation</method>
|
71 |
+
</postcodenl_signal_order_creation>
|
72 |
+
</observers>
|
73 |
+
</checkout_submit_all_after>
|
74 |
+
</events>
|
75 |
</global>
|
76 |
<adminhtml>
|
77 |
<layout>
|
97 |
<enabled>1</enabled>
|
98 |
<api_key></api_key>
|
99 |
<api_secret></api_secret>
|
100 |
+
<enabled_address_api>1</enabled_address_api>
|
101 |
+
<enabled_signal_api>0</enabled_signal_api>
|
102 |
</config>
|
103 |
<advanced_config>
|
104 |
<use_street2_as_housenumber>0</use_street2_as_housenumber>
|
105 |
+
<use_street3_as_housenumber_addition>0</use_street3_as_housenumber_addition>
|
106 |
<block_postofficeboxaddresses>0</block_postofficeboxaddresses>
|
107 |
<never_hide_country>0</never_hide_country>
|
108 |
<admin_validation_disabled>0</admin_validation_disabled>
|
app/code/community/PostcodeNl/Api/etc/system.xml
CHANGED
@@ -47,13 +47,39 @@
|
|
47 |
<validate>validate-length minimum-length-10</validate>
|
48 |
<comment>
|
49 |
<![CDATA[
|
50 |
-
To get your Postcode.nl API key and secret, please register at <a href="https://api.postcode.nl">Postcode.nl API</a>.
|
51 |
]]></comment>
|
52 |
</api_secret>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
</fields>
|
54 |
</config>
|
55 |
<advanced_config translate="label">
|
56 |
-
<label>Advanced configuration</label>
|
57 |
<frontend_type>text</frontend_type>
|
58 |
<sort_order>20</sort_order>
|
59 |
<show_in_default>1</show_in_default>
|
@@ -74,11 +100,24 @@
|
|
74 |
If you use the second 'street' field as a separate house-number field, enable this option.
|
75 |
]]></comment>
|
76 |
</use_street2_as_housenumber>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
<block_postofficeboxaddresses translate="label">
|
78 |
<label>Block post office box addresses</label>
|
79 |
<frontend_type>select</frontend_type>
|
80 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
81 |
-
<sort_order>
|
82 |
<show_in_default>1</show_in_default>
|
83 |
<show_in_website>1</show_in_website>
|
84 |
<show_in_store>1</show_in_store>
|
@@ -92,7 +131,7 @@
|
|
92 |
<label>Always show country selector</label>
|
93 |
<frontend_type>select</frontend_type>
|
94 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
95 |
-
<sort_order>
|
96 |
<show_in_default>1</show_in_default>
|
97 |
<show_in_website>1</show_in_website>
|
98 |
<show_in_store>1</show_in_store>
|
@@ -106,7 +145,7 @@
|
|
106 |
<label>Disable validation in admin</label>
|
107 |
<frontend_type>select</frontend_type>
|
108 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
109 |
-
<sort_order>
|
110 |
<show_in_default>1</show_in_default>
|
111 |
<show_in_website>1</show_in_website>
|
112 |
<show_in_store>1</show_in_store>
|
@@ -117,10 +156,20 @@
|
|
117 |
</admin_validation_disabled>
|
118 |
</fields>
|
119 |
</advanced_config>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
<development_config translate="label">
|
121 |
<label>Development configuration</label>
|
122 |
<frontend_type>text</frontend_type>
|
123 |
-
<sort_order>
|
124 |
<show_in_default>1</show_in_default>
|
125 |
<show_in_website>1</show_in_website>
|
126 |
<show_in_store>1</show_in_store>
|
@@ -158,7 +207,7 @@
|
|
158 |
<show_in_store>1</show_in_store>
|
159 |
<comment>
|
160 |
<![CDATA[
|
161 |
-
Additional debug information used for trouble-shooting will be sent by the Postcode.nl API extension.<br />
|
162 |
<em>(this is not recommended in production environments!)</em>
|
163 |
]]></comment>
|
164 |
</api_debug>
|
47 |
<validate>validate-length minimum-length-10</validate>
|
48 |
<comment>
|
49 |
<![CDATA[
|
50 |
+
To get your Postcode.nl API key and secret, please register at <a href="https://api.postcode.nl" target="_blank">Postcode.nl API</a>.
|
51 |
]]></comment>
|
52 |
</api_secret>
|
53 |
+
<enabled_address_api translate="label">
|
54 |
+
<label>Address API Enabled?</label>
|
55 |
+
<frontend_type>select</frontend_type>
|
56 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
57 |
+
<sort_order>50</sort_order>
|
58 |
+
<show_in_default>1</show_in_default>
|
59 |
+
<show_in_website>1</show_in_website>
|
60 |
+
<show_in_store>1</show_in_store>
|
61 |
+
<comment>
|
62 |
+
<![CDATA[
|
63 |
+
Dutch address validation via <a href="https://api.postcode.nl/documentation/address-api-description" target="_blank">Postcode.nl Address API</a> is available by default when you create an account.
|
64 |
+
]]></comment>
|
65 |
+
</enabled_address_api>
|
66 |
+
<enabled_signal_api translate="label">
|
67 |
+
<label>Signal API Enabled?</label>
|
68 |
+
<frontend_type>select</frontend_type>
|
69 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
70 |
+
<sort_order>60</sort_order>
|
71 |
+
<show_in_default>1</show_in_default>
|
72 |
+
<show_in_website>1</show_in_website>
|
73 |
+
<show_in_store>1</show_in_store>
|
74 |
+
<comment>
|
75 |
+
<![CDATA[
|
76 |
+
To use the <a href="https://api.postcode.nl/documentation/signal-api-description" target="_blank">Postcode.nl Signal API</a>, sign up for the service during registration, or at your <a href="https://api.postcode.nl">Postcode.nl API dashboard</a>. Then, enable this option.
|
77 |
+
]]></comment>
|
78 |
+
</enabled_signal_api>
|
79 |
</fields>
|
80 |
</config>
|
81 |
<advanced_config translate="label">
|
82 |
+
<label>Advanced Address API configuration</label>
|
83 |
<frontend_type>text</frontend_type>
|
84 |
<sort_order>20</sort_order>
|
85 |
<show_in_default>1</show_in_default>
|
100 |
If you use the second 'street' field as a separate house-number field, enable this option.
|
101 |
]]></comment>
|
102 |
</use_street2_as_housenumber>
|
103 |
+
<use_street3_as_housenumber_addition translate="label">
|
104 |
+
<label>Separate housenumber addition</label>
|
105 |
+
<frontend_type>select</frontend_type>
|
106 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
107 |
+
<sort_order>20</sort_order>
|
108 |
+
<show_in_default>1</show_in_default>
|
109 |
+
<show_in_website>1</show_in_website>
|
110 |
+
<show_in_store>1</show_in_store>
|
111 |
+
<comment>
|
112 |
+
<![CDATA[
|
113 |
+
If you use the third 'street' field as a separate house-number addition field, enable this option. (requires 'Separate housenumber' option to be enabled too)
|
114 |
+
]]></comment>
|
115 |
+
</use_street3_as_housenumber_addition>
|
116 |
<block_postofficeboxaddresses translate="label">
|
117 |
<label>Block post office box addresses</label>
|
118 |
<frontend_type>select</frontend_type>
|
119 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
120 |
+
<sort_order>30</sort_order>
|
121 |
<show_in_default>1</show_in_default>
|
122 |
<show_in_website>1</show_in_website>
|
123 |
<show_in_store>1</show_in_store>
|
131 |
<label>Always show country selector</label>
|
132 |
<frontend_type>select</frontend_type>
|
133 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
134 |
+
<sort_order>40</sort_order>
|
135 |
<show_in_default>1</show_in_default>
|
136 |
<show_in_website>1</show_in_website>
|
137 |
<show_in_store>1</show_in_store>
|
145 |
<label>Disable validation in admin</label>
|
146 |
<frontend_type>select</frontend_type>
|
147 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
148 |
+
<sort_order>50</sort_order>
|
149 |
<show_in_default>1</show_in_default>
|
150 |
<show_in_website>1</show_in_website>
|
151 |
<show_in_store>1</show_in_store>
|
156 |
</admin_validation_disabled>
|
157 |
</fields>
|
158 |
</advanced_config>
|
159 |
+
<advanced_config_signal translate="label">
|
160 |
+
<label>Advanced Signal API configuration</label>
|
161 |
+
<frontend_type>text</frontend_type>
|
162 |
+
<sort_order>30</sort_order>
|
163 |
+
<show_in_default>1</show_in_default>
|
164 |
+
<show_in_website>1</show_in_website>
|
165 |
+
<show_in_store>1</show_in_store>
|
166 |
+
<fields>
|
167 |
+
</fields>
|
168 |
+
</advanced_config_signal>
|
169 |
<development_config translate="label">
|
170 |
<label>Development configuration</label>
|
171 |
<frontend_type>text</frontend_type>
|
172 |
+
<sort_order>40</sort_order>
|
173 |
<show_in_default>1</show_in_default>
|
174 |
<show_in_website>1</show_in_website>
|
175 |
<show_in_store>1</show_in_store>
|
207 |
<show_in_store>1</show_in_store>
|
208 |
<comment>
|
209 |
<![CDATA[
|
210 |
+
Additional debug information used for trouble-shooting will be sent by the Postcode.nl API extension. Signal API will log to 'var/log/postcodenl-signal.log'.<br />
|
211 |
<em>(this is not recommended in production environments!)</em>
|
212 |
]]></comment>
|
213 |
</api_debug>
|
app/design/frontend/default/default/layout/postcodenl/api/lookup.xml
DELETED
@@ -1,169 +0,0 @@
|
|
1 |
-
<?xml version="1.0"?>
|
2 |
-
<layout version="0.1.0">
|
3 |
-
<!-- Regular Magento Checkout, and other checkout modules which use the same page -->
|
4 |
-
<!-- Also for: `J2T OneCheckout`, `Magento Templates - OnePage Magento Checkout`, `EcommerceTeam Easy Checkout 2`, `Quick One Page Checkout` -->
|
5 |
-
<checkout_onepage_index>
|
6 |
-
<reference name="head">
|
7 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
8 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
9 |
-
</reference>
|
10 |
-
<reference name="content">
|
11 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
12 |
-
</reference>
|
13 |
-
</checkout_onepage_index>
|
14 |
-
<customer_address_form>
|
15 |
-
<reference name="head">
|
16 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
17 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
18 |
-
</reference>
|
19 |
-
<reference name="content">
|
20 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
21 |
-
</reference>
|
22 |
-
</customer_address_form>
|
23 |
-
<checkout_multishipping_register>
|
24 |
-
<reference name="head">
|
25 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
26 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
27 |
-
</reference>
|
28 |
-
<reference name="content">
|
29 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
30 |
-
</reference>
|
31 |
-
</checkout_multishipping_register>
|
32 |
-
<checkout_multishipping_address_newshipping>
|
33 |
-
<reference name="head">
|
34 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
35 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
36 |
-
</reference>
|
37 |
-
<reference name="content">
|
38 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
39 |
-
</reference>
|
40 |
-
</checkout_multishipping_address_newshipping>
|
41 |
-
<checkout_multishipping_address_editshipping>
|
42 |
-
<reference name="head">
|
43 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
44 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
45 |
-
</reference>
|
46 |
-
<reference name="content">
|
47 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
48 |
-
</reference>
|
49 |
-
</checkout_multishipping_address_editshipping>
|
50 |
-
<checkout_multishipping_address_editbilling>
|
51 |
-
<reference name="head">
|
52 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
53 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
54 |
-
</reference>
|
55 |
-
<reference name="content">
|
56 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
57 |
-
</reference>
|
58 |
-
</checkout_multishipping_address_editbilling>
|
59 |
-
<!-- Used for `OneStepCheckout(.com)`, but also for `MageStore One Step Checkout` and `Apptha One Step Checkout` -->
|
60 |
-
<onestepcheckout_index_index>
|
61 |
-
<reference name="head">
|
62 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
63 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
64 |
-
</reference>
|
65 |
-
<reference name="content">
|
66 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
67 |
-
</reference>
|
68 |
-
</onestepcheckout_index_index>
|
69 |
-
<!-- Used for older versions of `MageStore One Step Checkout` -->
|
70 |
-
<onestepquickcheckout_index_index>
|
71 |
-
<reference name="head">
|
72 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
73 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
74 |
-
</reference>
|
75 |
-
<reference name="content">
|
76 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
77 |
-
</reference>
|
78 |
-
</onestepquickcheckout_index_index>
|
79 |
-
<!-- For `GoMage LightCheckout` -->
|
80 |
-
<gomage_checkout_onepage_index>
|
81 |
-
<reference name="head">
|
82 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
83 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
84 |
-
</reference>
|
85 |
-
<reference name="content">
|
86 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
87 |
-
</reference>
|
88 |
-
</gomage_checkout_onepage_index>
|
89 |
-
<!-- For `Fire Checkout` 1.5 -->
|
90 |
-
<firecheckout_index_index>
|
91 |
-
<reference name="head">
|
92 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
93 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
94 |
-
</reference>
|
95 |
-
<reference name="content">
|
96 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
97 |
-
</reference>
|
98 |
-
</firecheckout_index_index>
|
99 |
-
<!-- For `Fire Checkout` 2.0 -->
|
100 |
-
<firecheckout_onepage_index>
|
101 |
-
<reference name="head">
|
102 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
103 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
104 |
-
</reference>
|
105 |
-
<reference name="content">
|
106 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
107 |
-
</reference>
|
108 |
-
</firecheckout_onepage_index>
|
109 |
-
<!-- For `FME One Step Checkout`, `MageWorld One Step Checkout Pro`, `GrafischDirect One Step Checkout` -->
|
110 |
-
<checkout_onestep_index>
|
111 |
-
<reference name="head">
|
112 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
113 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
114 |
-
</reference>
|
115 |
-
<reference name="content">
|
116 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
117 |
-
</reference>
|
118 |
-
</checkout_onestep_index>
|
119 |
-
<!-- For `IWD Free One Page / Step Checkout` -->
|
120 |
-
<onepagecheckout_index_index>
|
121 |
-
<reference name="head">
|
122 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
123 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
124 |
-
</reference>
|
125 |
-
<reference name="content">
|
126 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
127 |
-
</reference>
|
128 |
-
</onepagecheckout_index_index>
|
129 |
-
<!-- For `IWD Free One Page / Step Checkout v3+` -->
|
130 |
-
<opc_index_index>
|
131 |
-
<reference name="head">
|
132 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
133 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
134 |
-
</reference>
|
135 |
-
<reference name="content">
|
136 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
137 |
-
</reference>
|
138 |
-
</opc_index_index>
|
139 |
-
<!-- For `AheadWorks One Step Checkout` -->
|
140 |
-
<aw_onestepcheckout_index_index>
|
141 |
-
<reference name="head">
|
142 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
143 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
144 |
-
</reference>
|
145 |
-
<reference name="content">
|
146 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
147 |
-
</reference>
|
148 |
-
</aw_onestepcheckout_index_index>
|
149 |
-
<!-- For `Aitoc One Step Checkout Manager` -->
|
150 |
-
<aitcheckout_checkout_index>
|
151 |
-
<reference name="head">
|
152 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
153 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
154 |
-
</reference>
|
155 |
-
<reference name="content">
|
156 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
157 |
-
</reference>
|
158 |
-
</aitcheckout_checkout_index>
|
159 |
-
<!-- For `MAGExtended Master Checkout` -->
|
160 |
-
<mastercheckout_index_index>
|
161 |
-
<reference name="head">
|
162 |
-
<action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
|
163 |
-
<action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
|
164 |
-
</reference>
|
165 |
-
<reference name="content">
|
166 |
-
<block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
|
167 |
-
</reference>
|
168 |
-
</mastercheckout_index_index>
|
169 |
-
</layout>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/design/frontend/default/default/template/postcodenl/api/jsinit.phtml
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
<?php echo Mage::helper('postcodenl_api/data')->getJsinit();
|
|
app/etc/modules/PostcodeNl_Api.xml
DELETED
@@ -1,9 +0,0 @@
|
|
1 |
-
<?xml version="1.0"?>
|
2 |
-
<config>
|
3 |
-
<modules>
|
4 |
-
<PostcodeNl_Api>
|
5 |
-
<active>true</active>
|
6 |
-
<codePool>community</codePool>
|
7 |
-
</PostcodeNl_Api>
|
8 |
-
</modules>
|
9 |
-
</config>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/locale/en_US/PostcodeNl_Api.csv
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
"Unknown postcode + housenumber combination.","Unknown postcode + housenumber combination."
|
2 |
"Housenumber format is not valid.","Housenumber format is not valid."
|
|
|
3 |
"Housenumber addition `{addition}` is unknown.","Housenumber addition `{addition}` is unknown."
|
4 |
"Housenumber addition required.","Housenumber addition required."
|
5 |
"Invalid postcode format, use `1234AB` format.","Invalid postcode format, use `1234AB` format."
|
@@ -26,3 +27,9 @@
|
|
26 |
"API Showcase","API Showcase"
|
27 |
"API Debug Info","API Debug Info"
|
28 |
"Post office box not allowed.","Post office box not allowed."
|
|
|
|
|
|
|
|
|
|
|
|
1 |
"Unknown postcode + housenumber combination.","Unknown postcode + housenumber combination."
|
2 |
"Housenumber format is not valid.","Housenumber format is not valid."
|
3 |
+
"Incorrect address.","Incorrect address."
|
4 |
"Housenumber addition `{addition}` is unknown.","Housenumber addition `{addition}` is unknown."
|
5 |
"Housenumber addition required.","Housenumber addition required."
|
6 |
"Invalid postcode format, use `1234AB` format.","Invalid postcode format, use `1234AB` format."
|
27 |
"API Showcase","API Showcase"
|
28 |
"API Debug Info","API Debug Info"
|
29 |
"Post office box not allowed.","Post office box not allowed."
|
30 |
+
"Postcode.nl Address API not enabled.","Postcode.nl Address API not enabled."
|
31 |
+
"Postcode.nl Signal API not enabled.","Postcode.nl Signal API not enabled."
|
32 |
+
"Invalid Signal API authentication:","Invalid Signal API authentication:"
|
33 |
+
"Invalid Signal API input:","Invalid Signal API input:"
|
34 |
+
"Signal API error:","Signal API error:"
|
35 |
+
"Signal API response not understood, service unavailable.","Signal API response not understood, service unavailable."
|
app/locale/nl_NL/PostcodeNl_Api.csv
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
"Unknown postcode + housenumber combination.","Onbekende postcode + huisnummer combinatie."
|
2 |
"Housenumber format is not valid.","Onbekend huisnummer formaat."
|
|
|
3 |
"Housenumber addition `{addition}` is unknown.","Huisnummer toevoeging `{addition}` is onbekend."
|
4 |
"Housenumber addition required.","Huisnummer toevoeging vereist."
|
5 |
"Invalid postcode format, use `1234AB` format.","Onbekend postcode formaat, gebruik het `1234AB` formaat."
|
@@ -26,3 +27,9 @@
|
|
26 |
"API Showcase","API Showcase"
|
27 |
"API Debug Info","API Debug Info"
|
28 |
"Post office box not allowed.","Postbus niet toegestaan."
|
|
|
|
|
|
|
|
|
|
|
|
1 |
"Unknown postcode + housenumber combination.","Onbekende postcode + huisnummer combinatie."
|
2 |
"Housenumber format is not valid.","Onbekend huisnummer formaat."
|
3 |
+
"Incorrect address.","Onbekend adres."
|
4 |
"Housenumber addition `{addition}` is unknown.","Huisnummer toevoeging `{addition}` is onbekend."
|
5 |
"Housenumber addition required.","Huisnummer toevoeging vereist."
|
6 |
"Invalid postcode format, use `1234AB` format.","Onbekend postcode formaat, gebruik het `1234AB` formaat."
|
27 |
"API Showcase","API Showcase"
|
28 |
"API Debug Info","API Debug Info"
|
29 |
"Post office box not allowed.","Postbus niet toegestaan."
|
30 |
+
"Postcode.nl Address API not enabled.","Postcode.nl Address API niet ingeschakeld."
|
31 |
+
"Postcode.nl Signal API not enabled.","Postcode.nl Signal API niet ingeschakeld."
|
32 |
+
"Invalid Signal API authentication:","Signal API authenticatie foutmelding:"
|
33 |
+
"Invalid Signal API input:","Incorrecte Signal API invoer:"
|
34 |
+
"Signal API error:","Signal API foutmelding:"
|
35 |
+
"Signal API response not understood, service unavailable.","Signal API antwoord niet begrepen, dienst onbereikbaar."
|
js/postcodenl/api/lookup.js
CHANGED
@@ -401,7 +401,15 @@ document.observe("dom:loaded", PCNL_START_FUNCTION = function()
|
|
401 |
if (PCNLAPI_CONFIG.useStreet2AsHouseNumber && $(prefix + street2))
|
402 |
{
|
403 |
$(prefix + street1).setValue((data.street).trim());
|
404 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
405 |
}
|
406 |
else
|
407 |
{
|
@@ -970,11 +978,19 @@ document.observe("dom:loaded", PCNL_START_FUNCTION = function()
|
|
970 |
var housenumber_addition = '';
|
971 |
if (PCNLAPI_CONFIG.useStreet2AsHouseNumber && $(prefix + street2))
|
972 |
{
|
973 |
-
|
974 |
-
if (housenumber_match)
|
975 |
{
|
976 |
-
housenumber =
|
977 |
-
housenumber_addition =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
978 |
}
|
979 |
}
|
980 |
else
|
401 |
if (PCNLAPI_CONFIG.useStreet2AsHouseNumber && $(prefix + street2))
|
402 |
{
|
403 |
$(prefix + street1).setValue((data.street).trim());
|
404 |
+
if (PCNLAPI_CONFIG.useStreet3AsHouseNumberAddition && $(prefix + street3))
|
405 |
+
{
|
406 |
+
$(prefix + street2).setValue(data.houseNumber);
|
407 |
+
$(prefix + street3).setValue((data.houseNumberAddition ? data.houseNumberAddition : housenumber_addition).trim());
|
408 |
+
}
|
409 |
+
else
|
410 |
+
{
|
411 |
+
$(prefix + street2).setValue((data.houseNumber +' '+ (data.houseNumberAddition ? data.houseNumberAddition : housenumber_addition)).trim());
|
412 |
+
}
|
413 |
}
|
414 |
else
|
415 |
{
|
978 |
var housenumber_addition = '';
|
979 |
if (PCNLAPI_CONFIG.useStreet2AsHouseNumber && $(prefix + street2))
|
980 |
{
|
981 |
+
if (PCNLAPI_CONFIG.useStreet3AsHouseNumberAddition && $(prefix + street3))
|
|
|
982 |
{
|
983 |
+
housenumber = $(prefix + street2).getValue();
|
984 |
+
housenumber_addition = $(prefix + street3).getValue();
|
985 |
+
}
|
986 |
+
else
|
987 |
+
{
|
988 |
+
housenumber_match = $(prefix + street2).getValue().match('^('+ this.REGEXP_HOUSENUMBER +')([^0-9a-zA-Z]*('+ this.REGEXP_HOUSENUMBER_ADDITION +'))?\\s*$');
|
989 |
+
if (housenumber_match)
|
990 |
+
{
|
991 |
+
housenumber = housenumber_match[1].trim();
|
992 |
+
housenumber_addition = housenumber_match[3] === undefined ? '' : housenumber_match[3].trim();
|
993 |
+
}
|
994 |
}
|
995 |
}
|
996 |
else
|
package.xml
CHANGED
@@ -1,30 +1,31 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>PostcodeNl_Api</name>
|
4 |
-
<version>1.
|
5 |
<stability>stable</stability>
|
6 |
<license>Simplified BSD License</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
-
<summary>Complement and validate Dutch addresses at Checkout
|
10 |
<description>Complement and validate Dutch addresses at Checkout with the free postcode Magento plugin from Postcode.nl.
|
|
|
11 |

|
12 |
• Reduce address errors
|
13 |
• Reduce costs from undelivered mail and packages
|
14 |
• Offer extra service for your customers with easy address entry
|
15 |
• Improve sale conversion
|
|
|
|
|
16 |

|
17 |
The postcode Magento plugin from Postcode.nl is free of charge, based on a Fair-Use policy. The use of the Postcode.nl Magento plugin is subject to our Terms and Conditions.</description>
|
18 |
-
<notes>
|
19 |
-
-
|
20 |
-
-
|
21 |
-
Features:
|
22 |
-
- Detection of checkout type, for better future checkout extension support
|
23 |
</notes>
|
24 |
<authors><author><name>Postcode.nl Technical Support</name><user>TechPostcodeNl</user><email>tech@postcode.nl</email></author></authors>
|
25 |
-
<date>2014-
|
26 |
-
<time>
|
27 |
-
<contents><target name="magecommunity"><dir name="PostcodeNl"><dir name="Api"><dir name="Block"><file name="Jsinit.php" hash="79bb826a50ce0cf4f87cc2f958bfafa1"/></dir><dir name="Helper"><file name="Data.php" hash="
|
28 |
<compatible/>
|
29 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><extension><name>curl</name><min>7.10.5</min><max>7.99.0</max></extension></required></dependencies>
|
30 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>PostcodeNl_Api</name>
|
4 |
+
<version>1.2.0.0</version>
|
5 |
<stability>stable</stability>
|
6 |
<license>Simplified BSD License</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
+
<summary>Complement and validate Dutch addresses at Checkout, and check for order errors and fraud risks.</summary>
|
10 |
<description>Complement and validate Dutch addresses at Checkout with the free postcode Magento plugin from Postcode.nl.
|
11 |
+
Also includes the free Postcode.nl Signal API service to validate and enrich order information, as well as check for potential fraud risk via the Dutch authorities.
|
12 |

|
13 |
• Reduce address errors
|
14 |
• Reduce costs from undelivered mail and packages
|
15 |
• Offer extra service for your customers with easy address entry
|
16 |
• Improve sale conversion
|
17 |
+
• Get warnings for potential incorrect order data
|
18 |
+
• Check against the Dutch authorities' fraud warning database
|
19 |

|
20 |
The postcode Magento plugin from Postcode.nl is free of charge, based on a Fair-Use policy. The use of the Postcode.nl Magento plugin is subject to our Terms and Conditions.</description>
|
21 |
+
<notes>Features:
|
22 |
+
- Added the new Postcode.nl Signal API network for data checking and fraud warnings (https://api.postcode.nl/documentation/signal-api-description in Dutch)
|
23 |
+
- Added option to enable/disable Signal and Address API separately
|
|
|
|
|
24 |
</notes>
|
25 |
<authors><author><name>Postcode.nl Technical Support</name><user>TechPostcodeNl</user><email>tech@postcode.nl</email></author></authors>
|
26 |
+
<date>2014-12-02</date>
|
27 |
+
<time>16:25:57</time>
|
28 |
+
<contents><target name="magecommunity"><dir name="PostcodeNl"><dir name="Api"><dir name="Block"><file name="Jsinit.php" hash="79bb826a50ce0cf4f87cc2f958bfafa1"/></dir><dir name="Helper"><file name="Data.php" hash="b339a9af05e5974aeba934603c110390"/></dir><dir name="Model"><file name="Observer.php" hash="f60c131c6000568df5313d9f07d153ee"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="PcnlController.php" hash="1a8eaf87ed60481f51f3f74eab3ab63f"/></dir><file name="JsonController.php" hash="6a3bff054e3229faaae2aa55f9a3cf3c"/></dir><dir name="data"><dir name="postcodenl_api_setup"><file name="data-upgrade-1.0.8.0-1.1.0.0.php" hash="e0acdb124cf735198c021f0c827c82bc"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="5d518aeaeae028b6299c7cf3d6e54f60"/><file name="config.xml" hash="a572215c4525a8d64636335b17128357"/><file name="system.xml" hash="1dc10a6e0247c32270a66373ae58517d"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="postcodenl"><dir name="api"><file name="lookup.xml" hash="e8f6295a91c9c5bfd116ae1048a5445d"/></dir></dir></dir><dir name="template"><dir name="postcodenl"><dir name="api"><file name="jsinit.phtml" hash="8623676f4c6f4068d0b51e31dcfa08e9"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="postcodenl"><dir name="api"><file name="lookup.xml" hash="88c6556ea3cc3b3c6746021e8636a24c"/></dir></dir></dir><dir name="template"><dir name="postcodenl"><dir name="api"><file name="jsinit.phtml" hash="ff32e12bbc26e4414dd8ca76edc4ed0f"/></dir></dir></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="PostcodeNl_Api.csv" hash="f48fa23f30f5dfaab37a905fb1ba9c51"/></dir><dir name="nl_NL"><file name="PostcodeNl_Api.csv" hash="fc2be2700e2025a3f56d4d8e72d30781"/></dir></target><target name="mageweb"><dir name="js"><dir name="postcodenl"><dir name="api"><file name="lookup.js" hash="ad6bea939cd0d6ababd953980a3e86e9"/></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="postcodenl"><dir name="api"><dir name="css"><file name="lookup.css" hash="c58103b505f8bcdf55cea1159ca21e27"/></dir><dir name="images"><file name="postcode-logo.png" hash="da02bc29be1057a0201e63f81ee4bd02"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="postcodenl"><dir name="api"><dir name="css"><file name="lookup.css" hash="c6ffbeceb6907b2e8463d1ff30810304"/></dir><dir name="images"><file name="postcode-logo.png" hash="da02bc29be1057a0201e63f81ee4bd02"/></dir></dir></dir></dir></dir></dir></target></contents>
|
29 |
<compatible/>
|
30 |
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php><extension><name>curl</name><min>7.10.5</min><max>7.99.0</max></extension></required></dependencies>
|
31 |
</package>
|
skin/frontend/default/default/postcodenl/api/css/lookup.css
DELETED
@@ -1,171 +0,0 @@
|
|
1 |
-
/* Frontend styles */
|
2 |
-
|
3 |
-
input.pcnl-readonly {
|
4 |
-
background-color: #EEE;
|
5 |
-
}
|
6 |
-
|
7 |
-
.form-list input.pcnl-input-text-half {
|
8 |
-
width: 45%;
|
9 |
-
margin-right:5px;
|
10 |
-
}
|
11 |
-
.form-list select.pcnl-input-text-half {
|
12 |
-
width: 45%;
|
13 |
-
}
|
14 |
-
|
15 |
-
input.pcnl-readonly,
|
16 |
-
select.pcnl-readonly {
|
17 |
-
color: grey;
|
18 |
-
font-style: italic;
|
19 |
-
}
|
20 |
-
|
21 |
-
.pcnl-info-text {
|
22 |
-
font-size: 90%;
|
23 |
-
}
|
24 |
-
|
25 |
-
.pcnl-info-label {
|
26 |
-
float: none !important;
|
27 |
-
}
|
28 |
-
|
29 |
-
.pcnl-address-text {
|
30 |
-
font-style: italic;
|
31 |
-
clear: both;
|
32 |
-
padding-left: 4px;
|
33 |
-
padding-right: 4px;
|
34 |
-
width: 90%;
|
35 |
-
}
|
36 |
-
|
37 |
-
/* excessive hidey-stuff? yes. blame IE (6, 7 & 9) */
|
38 |
-
.pcnl-hidden-field {
|
39 |
-
visibility: hidden;
|
40 |
-
display: block;
|
41 |
-
height: 0px !important;
|
42 |
-
width: 0px !important;
|
43 |
-
margin: 0 !important;
|
44 |
-
padding: 0 !important;
|
45 |
-
position: absolute;
|
46 |
-
}
|
47 |
-
|
48 |
-
/* Magento 1.9 styling 'float fix' for manual checkbox */
|
49 |
-
.form-list .control.pcnl-manual-checkbox div.input-box {
|
50 |
-
display: block;
|
51 |
-
float: none;
|
52 |
-
}
|
53 |
-
|
54 |
-
/* Showcase styles */
|
55 |
-
|
56 |
-
h4.pcnl-showcase, h4.pcnl-debug {
|
57 |
-
background: url(../images/postcode-logo.png) left center no-repeat;
|
58 |
-
padding-left: 146px;
|
59 |
-
height: 22px;
|
60 |
-
line-height: 25px;
|
61 |
-
margin-bottom: 0px;
|
62 |
-
}
|
63 |
-
|
64 |
-
dl.pcnl-showcase, dl.pcnl-debug {
|
65 |
-
padding: 4px;
|
66 |
-
border: 1px solid grey;
|
67 |
-
border-radius: 4px;
|
68 |
-
-moz-border-radius: 4px;
|
69 |
-
background: white;
|
70 |
-
position: relative;
|
71 |
-
}
|
72 |
-
|
73 |
-
dl.pcnl-showcase iframe {
|
74 |
-
position: absolute;
|
75 |
-
top: 5px;
|
76 |
-
right: 5px;
|
77 |
-
width: 300px;
|
78 |
-
height: 300px;
|
79 |
-
border: 1px solid grey;
|
80 |
-
}
|
81 |
-
|
82 |
-
dl.pcnl-showcase dt, dl.pcnl-debug dt {
|
83 |
-
font-weight: bold;
|
84 |
-
}
|
85 |
-
dl.pcnl-showcase dd, dl.pcnl-debug dd {
|
86 |
-
margin-left: 20px;
|
87 |
-
}
|
88 |
-
|
89 |
-
/* OneStepCheckout(.com) styling */
|
90 |
-
div.checkoutcontainer div.pcnl-input-housenumber {
|
91 |
-
width: 60%;
|
92 |
-
}
|
93 |
-
div.checkoutcontainer div.pcnl-input-housenumber .input-text {
|
94 |
-
width: 74%;
|
95 |
-
}
|
96 |
-
div.checkoutcontainer .pcnl-with-addition div.pcnl-input-housenumber .input-text {
|
97 |
-
width: 22%;
|
98 |
-
}
|
99 |
-
div.checkoutcontainer div.pcnl-input-housenumber select.pcnl-input-text-half {
|
100 |
-
margin-left: 4px;
|
101 |
-
width: 50%;
|
102 |
-
}
|
103 |
-
div.checkoutcontainer .pcnl-info-text {
|
104 |
-
width: 85%;
|
105 |
-
}
|
106 |
-
div.checkoutcontainer dl.pcnl-showcase iframe {
|
107 |
-
position: relative;
|
108 |
-
float: right;
|
109 |
-
width: 260px;
|
110 |
-
height: 260px;
|
111 |
-
margin-bottom: 15px;
|
112 |
-
border: 1px solid grey;
|
113 |
-
}
|
114 |
-
|
115 |
-
/* OneStepCheckout.com */
|
116 |
-
.onestepcheckout-index-index .group-select li .input-postcode .input-box {
|
117 |
-
width: auto;
|
118 |
-
}
|
119 |
-
|
120 |
-
/* GoMage LightCheckout */
|
121 |
-
body.gomage-checkout-onepage-index dl.pcnl-debug {
|
122 |
-
width: 260px;
|
123 |
-
overflow: hidden;
|
124 |
-
}
|
125 |
-
|
126 |
-
body.gomage-checkout-onepage-index dl.pcnl-debug:hover {
|
127 |
-
width: auto;
|
128 |
-
overflow: normal;
|
129 |
-
}
|
130 |
-
|
131 |
-
body.gomage-checkout-onepage-index .pcnl-manual-checkbox label,
|
132 |
-
body.gomage-checkout-onepage-index .pcnl-info label {
|
133 |
-
float: none;
|
134 |
-
}
|
135 |
-
body.gomage-checkout-onepage-index .pcnl-info-text {
|
136 |
-
width: 90%;
|
137 |
-
}
|
138 |
-
|
139 |
-
/* MageStore One Step Checkout */
|
140 |
-
body.onestepcheckout-index-index #one-step-checkout-form .pcnl-info-text {
|
141 |
-
width: 78%;
|
142 |
-
}
|
143 |
-
|
144 |
-
/* Apptha One Step Checkout */
|
145 |
-
body.onestepcheckout-index-index .onepage .form-list .pcnl-apptha-fields .field {
|
146 |
-
margin-right: 8px;
|
147 |
-
float: left;
|
148 |
-
width: 120px !important;
|
149 |
-
}
|
150 |
-
body.onestepcheckout-index-index .onepage .form-list .pcnl-apptha-fields .pcnl-input-housenumber {
|
151 |
-
padding-left: 6px;
|
152 |
-
}
|
153 |
-
body.onestepcheckout-index-index .onepage .form-list .pcnl-apptha-fields .field .input-text {
|
154 |
-
width: 120px !important;
|
155 |
-
}
|
156 |
-
body.onestepcheckout-index-index .onepage .form-list .pcnl-apptha-checkbox .field {
|
157 |
-
width: 250px !important
|
158 |
-
}
|
159 |
-
body.onestepcheckout-index-index .onepage .form-list .pcnl-apptha-checkbox input {
|
160 |
-
float: left;
|
161 |
-
margin-top: 2px;
|
162 |
-
margin-right: 0;
|
163 |
-
}
|
164 |
-
body.onestepcheckout-index-index .onepage .form-list .pcnl-apptha-checkbox label {
|
165 |
-
padding-left: 6px;
|
166 |
-
}
|
167 |
-
|
168 |
-
/* IWD One Step Checkout */
|
169 |
-
body.onepagecheckout-index-index .pcnl-manual-checkbox {
|
170 |
-
clear: both; /* IE 7/9 fix */
|
171 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
skin/frontend/default/default/postcodenl/api/images/postcode-logo.png
DELETED
Binary file
|