PostcodeNl_Api - Version 1.2.5.0

Version Notes

Fixes:
- Marked compatible with PHP7
- Simpler config for enabling addon in frontend and backend
- Updated readme texts and links
- Removed signal api

Download this release

Release Info

Developer Postcode.nl Technical Support
Extension PostcodeNl_Api
Version 1.2.5.0
Comparing to
See all releases


Code changes from version 1.2.4.0 to 1.2.5.0

app/code/community/PostcodeNl/Api/Helper/Data.php CHANGED
@@ -14,6 +14,7 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
14
  protected $_httpClientError = null;
15
  protected $_debuggingOverride = false;
16
 
 
17
  /**
18
  * Get the html for initializing validation script.
19
  *
@@ -23,7 +24,7 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
23
  */
24
  public function getJsinit($getAdminConfig = false)
25
  {
26
- if ($getAdminConfig && $this->_getStoreConfig('postcodenl_api/advanced_config/admin_validation_disabled'))
27
  return '';
28
 
29
  $baseUrl = $this->_getMagentoLookupUrl($getAdminConfig);
@@ -57,7 +58,7 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
57
  apiDebug: "' . htmlspecialchars($this->__('API Debug')) . '",
58
  disabledText: "' . htmlspecialchars($this->__('- disabled -')) . '",
59
  infoLabel: "' . htmlspecialchars($this->__('Address validation')) . '",
60
- infoText: "' . htmlspecialchars($this->__('Fill out your postcode and housenumber to auto-complete your address. You can also manually set your address information.')) . '",
61
  manualInputLabel: "' . htmlspecialchars($this->__('Manual input')) . '",
62
  manualInputText: "' . htmlspecialchars($this->__('Fill out address information manually')) . '",
63
  outputLabel: "' . htmlspecialchars($this->__('Validated address')) . '",
@@ -70,31 +71,6 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
70
  return $html;
71
  }
72
 
73
- /**
74
- * Check if a specific service is enabled or not.
75
- *
76
- * @param string $service
77
- *
78
- * @return bool
79
- */
80
- public function isApiEnabled($service)
81
- {
82
- // If we're debugging, assume all services are enabled, to get feedback on all levels.
83
- if ($this->isDebugging())
84
- return true;
85
-
86
- if (!$this->_getStoreConfig('postcodenl_api/config/enabled'))
87
- return false;
88
-
89
- if ($service === 'Address' && !$this->_getStoreConfig('postcodenl_api/config/enabled_address_api'))
90
- return false;
91
-
92
- if ($service === 'Signal' && !$this->_getStoreConfig('postcodenl_api/config/enabled_signal_api'))
93
- return false;
94
-
95
- return true;
96
- }
97
-
98
  /**
99
  * Check if we're currently in debug mode, and if the current user may see dev info.
100
  *
@@ -104,8 +80,8 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
104
  {
105
  if ($this->_debuggingOverride)
106
  return true;
107
- else
108
- return (bool)$this->_getStoreConfig('postcodenl_api/development_config/api_debug') && Mage::helper('core')->isDevAllowed();
109
  }
110
 
111
  /**
@@ -113,7 +89,7 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
113
  *
114
  * @param bool $toggle
115
  */
116
- public function setDebuggingOverride($toggle = true)
117
  {
118
  $this->_debuggingOverride = $toggle;
119
  }
@@ -130,7 +106,7 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
130
  public function lookupAddress($postcode, $houseNumber, $houseNumberAddition)
131
  {
132
  // Check if we are we enabled, configured & capable of handling an API request
133
- $message = $this->_checkApiReady('Address');
134
  if ($message)
135
  return $message;
136
 
@@ -221,217 +197,6 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
221
  $this->_enrichType = substr($this->_enrichType, 0, 40);
222
  }
223
 
224
- /**
225
- * Perform a Signal API check.
226
- *
227
- * @param array $signalCheck
228
- *
229
- * @return array Signal result
230
- */
231
- public function checkSignal(array $signalCheck)
232
- {
233
- // Check if we are we enabled, configured & capable of handling an API request
234
- $message = $this->_checkApiReady('Signal');
235
- if ($message)
236
- return $message;
237
-
238
- $response = array();
239
-
240
- $url = $this->_getServiceUrl() . '/rest/signal/check';
241
-
242
- $jsonData = $this->_callApiUrlPostJson($url, $signalCheck);
243
-
244
- if ($this->_httpResponseCodeClass == 200 && is_array($jsonData))
245
- {
246
- $response = $jsonData;
247
- }
248
- else if (is_array($jsonData) && isset($jsonData['exceptionId']))
249
- {
250
- if ($this->_httpResponseCode == 401 || $this->_httpResponseCode == 403)
251
- $response['message'] = $this->__('Invalid Signal API authentication:') .' (`'. $this->_httpResponseCode .'`): ' . $jsonData['exception'];
252
- else if ($this->_httpResponseCodeClass == 400)
253
- $response['message'] = $this->__('Invalid Signal API input:') .' (`'. $this->_httpResponseCode .'`): ' . $jsonData['exception'];
254
- else
255
- $response['message'] = $this->__('Signal API error:') .' (`'. $this->_httpResponseCode .'`): '. $jsonData['exception'];
256
- }
257
- else
258
- {
259
- $response['message'] = $this->__('Signal API response not understood, service unavailable.') . 'HTTP status code: `'. $this->_httpResponseCode .'`';
260
- }
261
-
262
- if ($this->isDebugging())
263
- $response['debugInfo'] = $this->_getDebugInfo($url, $jsonData);
264
-
265
- return $response;
266
- }
267
-
268
- /**
269
- * Split a house number addition from a house number.
270
- * Examples: "123 2", "123 rood", "123a", "123a4", "123-a", "123 II"
271
- * (the official notation is to separate the house number and addition with a single space)
272
- *
273
- * @param string $houseNumber House number input
274
- *
275
- * @return array Split 'houseNumber' and 'houseNumberAddition'
276
- */
277
- public function splitHouseNumber($houseNumber)
278
- {
279
- $houseNumberAddition = '';
280
- 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))
281
- {
282
- $houseNumber = $match['number'];
283
- $houseNumberAddition = isset($match['addition2']) ? $match['addition2'] : (isset($match['addition1']) ? $match['addition1'] : null);
284
- }
285
-
286
- return array($houseNumber, $houseNumberAddition);
287
- }
288
-
289
- /**
290
- * Split a street name, house number and house number addition from a text lines containing a street and house number information.
291
- *
292
- * @param array $streetData Lines of street data
293
- *
294
- * @return array Array containing 'street', 'houseNumber' and 'houseNumberAddition'
295
- */
296
- public function splitStreetData(array $streetData)
297
- {
298
- $regexpStreet = '[^0-9].*?|.*?[^0-9]';
299
- $regexpHouseNumber = '[0-9]+';
300
- $regexpHouseNumberAddition = '[^\\s]+|[^\\s]\\s+[^\\s]{1,4}';
301
-
302
- if (preg_match('~^(?<street>'. $regexpStreet .')\s+(?<houseNumber>'. $regexpHouseNumber .')([^0-9a-zA-Z]*(?<houseNumberAddition>'. $regexpHouseNumberAddition .'))?\s*$~', $streetData[0], $match))
303
- {
304
- // Found housenumber contained in first street line
305
- return array(
306
- 'street' => $match['street'],
307
- 'houseNumber' => $match['houseNumber'],
308
- 'houseNumberAddition' => isset($match['houseNumberAddition']) ? $match['houseNumberAddition'] : null,
309
- );
310
- }
311
- else if (isset($streetData[1]))
312
- {
313
- // Find housenumber contained in second street line
314
-
315
- $houseNumberData = $this->splitHouseNumber($streetData[1]);
316
-
317
- return array(
318
- 'street' => $streetData[0],
319
- 'houseNumber' => $houseNumberData[0],
320
- 'houseNumberAddition' => $houseNumberData[1],
321
- );
322
- }
323
- else
324
- {
325
- return array(
326
- 'street' => $streetData[0],
327
- 'houseNumber' => null,
328
- 'houseNumberAddition' => null,
329
- );
330
- }
331
- }
332
-
333
- /**
334
- * Do a Postcode.nl Signal API check on a (newly created) Magento order.
335
- * (called by hook class PostcodeNl_Api_Model_Observer)
336
- * Will pass any information that can be used by the MijnPolitie.nl MIO Fraud Warning system
337
- * (email, phonenumber), or Postcode.nl address validation (billing and delivery address).
338
- * Also includes the order number, to be able to reference the Signal Check later.
339
- *
340
- * @param Mage_Sales_Model_Order $order
341
- *
342
- * @return array Signal data, or error with 'message' entry.
343
- */
344
- public function checkOrderViaSignal($order)
345
- {
346
- // Check if we are we are enabled, configured & capable of handling an API request
347
- $message = $this->_checkApiReady('Signal');
348
- if ($message)
349
- return $message;
350
-
351
- // Housenumber data is often contained within the 'street' lines of the address.
352
- $billingStreetData = $this->splitStreetData($order->getBillingAddress()->getStreet());
353
- $shippingStreetData = $this->splitStreetData($order->getShippingAddress()->getStreet());
354
-
355
- // No customer might be available if this is an order status change
356
- $hasCustomer = ($order->getCustomer() !== null);
357
-
358
- // Note if this is executed as an admin, then do not send access details, as that might muddy the customer info
359
- $isAdmin = Mage::app()->getStore()->isAdmin();
360
-
361
- // Only send phonenumber if it is at least 5 characters long
362
- $phoneNumber = Mage::helper('core/string')->strlen($order->getBillingAddress()->getTelephone()) >= 5 ? $order->getBillingAddress()->getTelephone() : null;
363
-
364
- $signalCheck = array(
365
- 'customer' => array(
366
- 'email' => $hasCustomer ? $order->getCustomer()->getEmail() : null,
367
- 'phoneNumber' => $phoneNumber,
368
- 'address' => array(
369
- 'postcode' => $order->getBillingAddress()->getPostcode(),
370
- 'houseNumber' => $billingStreetData['houseNumber'],
371
- 'houseNumberAddition' => $billingStreetData['houseNumberAddition'],
372
- 'street' => $billingStreetData['street'],
373
- 'city' => $order->getBillingAddress()->getCity(),
374
- 'region' => $order->getBillingAddress()->getRegion(),
375
- 'country' => $order->getBillingAddress()->getCountryId(),
376
- ),
377
- ),
378
- 'access' => array(
379
- 'ipAddress' => $isAdmin ? null : Mage::helper('core/http')->getRemoteAddr(),
380
- 'additionalIpAddresses' => array(),
381
- ),
382
- 'transaction' => array(
383
- 'internalId' => $order->getIncrementId(),
384
- 'deliveryAddress' => array(
385
- 'postcode' => $order->getShippingAddress()->getPostcode(),
386
- 'houseNumber' => $shippingStreetData['houseNumber'],
387
- 'houseNumberAddition' => $shippingStreetData['houseNumberAddition'],
388
- 'street' => $shippingStreetData['street'],
389
- 'city' => $order->getShippingAddress()->getCity(),
390
- 'region' => $order->getShippingAddress()->getRegion(),
391
- 'country' => $order->getShippingAddress()->getCountryId(),
392
- ),
393
- ),
394
- );
395
-
396
- // Retrieve quote for registered remote IP / proxy IP (they are registered at session start)
397
- $quoteId = $order->getQuoteId();
398
- $quote = Mage::getModel('sales/quote')->load($quoteId);
399
- if ($quote)
400
- {
401
- $signalCheck['access'] = $this->_addAccessIpAddress($signalCheck['access'], $quote->getRemoteIp());
402
- $signalCheck['access'] = $this->_addAccessIpAddress($signalCheck['access'], $quote->getXForwardedFor());
403
- }
404
- // Register current forwarded-for IP address (if not admin)
405
- if (!$isAdmin)
406
- {
407
- $forwardedFor = Mage::app()->getRequest()->getServer('HTTP_X_FORWARDED_FOR');
408
- $signalCheck['access'] = $this->_addAccessIpAddress($signalCheck['access'], $forwardedFor);
409
- }
410
-
411
- return $this->checkSignal($signalCheck);
412
- }
413
-
414
- protected function _addAccessIpAddress($access, $inputIp)
415
- {
416
- if ($inputIp === '' || $inputIp === null || $inputIp === false)
417
- return $access;
418
-
419
- // input might be multiple IPs (from X-Forwarded-For, for example)
420
- if (strpos($inputIp, ',') !== false)
421
- {
422
- $inputIp = array_map('trim', explode(',', $inputIp));
423
-
424
- foreach ($inputIp as $ip)
425
- $access = $this->_addAccessIpAddress($access, $ip);
426
- }
427
- else if (filter_var($inputIp, FILTER_VALIDATE_IP) && $inputIp !== $access['ipAddress'] && !in_array($inputIp, $access['additionalIpAddresses']))
428
- {
429
- $access['additionalIpAddresses'][] = $inputIp;
430
- }
431
-
432
- return $access;
433
- }
434
-
435
  protected function _getDebugInfo($url, $jsonData)
436
  {
437
  return array(
@@ -462,9 +227,9 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
462
  $info = array();
463
 
464
  // Do a test address lookup
465
- $this->setDebuggingOverride(true);
466
  $addressData = $this->lookupAddress('2012ES', '30', '');
467
- $this->setDebuggingOverride(false);
468
 
469
  if (!isset($addressData['debugInfo']) && isset($addressData['message']))
470
  {
@@ -482,14 +247,14 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
482
  if (strpos($addressData['debugInfo']['httpClientError'], 'SSL certificate problem, verify that the CA cert is OK') !== false)
483
  {
484
  $info[] = $this->__('Your servers\' \'cURL SSL CA bundle\' is missing or outdated. Further information:');
485
- $info[] = '- <a href="http://stackoverflow.com/questions/6400300/https-and-ssl3-get-server-certificatecertificate-verify-failed-ca-is-ok" target="_blank">'. $this->__('How to update/fix your CA cert bundle') .'</a>';
486
- $info[] = '- <a href="http://curl.haxx.se/docs/sslcerts.html" target="_blank">'. $this->__('About cURL SSL CA certificates') .'</a>';
487
  $info[] = '';
488
  }
489
  else if (strpos($addressData['debugInfo']['httpClientError'], 'unable to get local issuer certificate') !== false)
490
  {
491
  $info[] = $this->__('cURL cannot read/access the CA cert file:');
492
- $info[] = '- <a href="http://curl.haxx.se/docs/sslcerts.html" target="_blank">'. $this->__('About cURL SSL CA certificates') .'</a>';
493
  $info[] = '';
494
  }
495
  else
@@ -546,28 +311,6 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
546
  $status = 'success';
547
  }
548
 
549
- if ($status == 'success' && $this->isApiEnabled('Signal'))
550
- {
551
- $this->setDebuggingOverride(true);
552
- $signalData = $this->checkSignal(array('customer' => array('firstName' => 'Magento', 'lastName' => 'Tester')));
553
- $this->setDebuggingOverride(false);
554
-
555
- if (!is_array($signalData['debugInfo']['parsedResponse']))
556
- {
557
- // Signal service failed, but in an unexpected way
558
- $status = 'error';
559
- $message = $this->__('Address API service has no problems, but the Signal API service reported an error.');
560
- $info[] = '- '. $this->__('The Signal service might be temporarily unavailable, if problems persist, please contact <a href=\'mailto:info@postcode.nl\'>info@postcode.nl</a>.');
561
- }
562
- else if (isset($signalData['debugInfo']['parsedResponse']['exceptionId']))
563
- {
564
- // We have an exception message from the service itself
565
- $status = 'error';
566
- $message = $this->__('Address API service has no problems, but the Signal API service reported an error.');
567
- $info[] = $this->__('Postcode.nl service message:') .' "'. $signalData['debugInfo']['parsedResponse']['exception'] .'"';
568
- }
569
- }
570
-
571
  return array(
572
  'message' => $message,
573
  'status' => $status,
@@ -611,11 +354,8 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
611
  // Detect professional
612
  return 'MagentoProfessional/'. Mage::getVersion();
613
  }
614
- else
615
- {
616
- // Rest
617
- return 'Magento/'. Mage::getVersion();
618
- }
619
  }
620
 
621
  protected function _getModuleInfo($moduleName)
@@ -640,8 +380,8 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
640
  {
641
  if ($inAdmin)
642
  return Mage::helper('adminhtml')->getUrl('*/pcnl/lookup', array('_secure' => true));
643
- else
644
- return Mage::getUrl('postcodenl_api/json', array('_secure' => true));
645
  }
646
 
647
  protected function _curlHasSsl()
@@ -650,20 +390,14 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
650
  return $curlVersion['features'] & CURL_VERSION_SSL;
651
  }
652
 
653
- protected function _checkApiReady($service = null)
654
  {
655
- if (!$this->_getStoreConfig('postcodenl_api/config/enabled') && !$this->_debuggingOverride)
656
- return array('message' => $this->__('Postcode.nl API not enabled.'));;
657
 
658
  if ($this->_getServiceUrl() === '' || $this->_getKey() === '' || $this->_getSecret() === '')
659
  return array('message' => $this->__('Postcode.nl API not configured.'), 'info' => array($this->__('Configure your `API key` and `API secret`.')));
660
 
661
- if ($service === 'Address' && !$this->_getStoreConfig('postcodenl_api/config/enabled_address_api') && !$this->_debuggingOverride)
662
- return array('message' => $this->__('Postcode.nl Address API not enabled.'));;
663
-
664
- if ($service === 'Signal' && !$this->_getStoreConfig('postcodenl_api/config/enabled_signal_api') && !$this->_debuggingOverride)
665
- return array('message' => $this->__('Postcode.nl Signal API not enabled.'));;
666
-
667
  return $this->_checkCapabilities();
668
  }
669
 
@@ -676,12 +410,6 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
676
  return false;
677
  }
678
 
679
- protected function _checkAddressApiReady()
680
- {
681
- if (!$this->_getStoreConfig('postcodenl_api/config/enabled_address_api'))
682
- return array('message' => $this->__('Postcode.nl Address API not enabled.'));;
683
- }
684
-
685
  protected function _callApiUrlGet($url)
686
  {
687
  $ch = curl_init();
@@ -691,32 +419,12 @@ class PostcodeNl_Api_Helper_Data extends Mage_Core_Helper_Abstract
691
  curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
692
  curl_setopt($ch, CURLOPT_USERPWD, $this->_getKey() .':'. $this->_getSecret());
693
  curl_setopt($ch, CURLOPT_USERAGENT, $this->_getUserAgent());
694
- $this->_httpResponseRaw = curl_exec($ch);
695
- $this->_httpResponseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
696
- $this->_httpResponseCodeClass = (int)floor($this->_httpResponseCode / 100) * 100;
697
- $this->_httpClientError = curl_errno($ch) ? sprintf('cURL error %s: %s', curl_errno($ch), curl_error($ch)) : null;
698
-
699
- curl_close($ch);
700
 
701
- return json_decode($this->_httpResponseRaw, true);
702
- }
703
-
704
- protected function _callApiUrlPostJson($url, array $data)
705
- {
706
- $ch = curl_init();
707
- curl_setopt($ch, CURLOPT_URL, $url);
708
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
709
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, self::API_TIMEOUT);
710
- curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
711
- curl_setopt($ch, CURLOPT_USERPWD, $this->_getKey() .':'. $this->_getSecret());
712
- curl_setopt($ch, CURLOPT_USERAGENT, $this->_getUserAgent());
713
- curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
714
- curl_setopt($ch, CURLOPT_POST, true);
715
- curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
716
  $this->_httpResponseRaw = curl_exec($ch);
717
  $this->_httpResponseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
718
  $this->_httpResponseCodeClass = (int)floor($this->_httpResponseCode / 100) * 100;
719
  $this->_httpClientError = curl_errno($ch) ? sprintf('cURL error %s: %s', curl_errno($ch), curl_error($ch)) : null;
 
720
  curl_close($ch);
721
 
722
  return json_decode($this->_httpResponseRaw, true);
14
  protected $_httpClientError = null;
15
  protected $_debuggingOverride = false;
16
 
17
+
18
  /**
19
  * Get the html for initializing validation script.
20
  *
24
  */
25
  public function getJsinit($getAdminConfig = false)
26
  {
27
+ if ($getAdminConfig && !$this->_getStoreConfig('postcodenl_api/advanced_config/admin_validation_enabled'))
28
  return '';
29
 
30
  $baseUrl = $this->_getMagentoLookupUrl($getAdminConfig);
58
  apiDebug: "' . htmlspecialchars($this->__('API Debug')) . '",
59
  disabledText: "' . htmlspecialchars($this->__('- disabled -')) . '",
60
  infoLabel: "' . htmlspecialchars($this->__('Address validation')) . '",
61
+ infoText: "' . htmlspecialchars($this->__('Fill out your postcode and housenumber to auto-complete your address.')) . '",
62
  manualInputLabel: "' . htmlspecialchars($this->__('Manual input')) . '",
63
  manualInputText: "' . htmlspecialchars($this->__('Fill out address information manually')) . '",
64
  outputLabel: "' . htmlspecialchars($this->__('Validated address')) . '",
71
  return $html;
72
  }
73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  /**
75
  * Check if we're currently in debug mode, and if the current user may see dev info.
76
  *
80
  {
81
  if ($this->_debuggingOverride)
82
  return true;
83
+
84
+ return (bool)$this->_getStoreConfig('postcodenl_api/development_config/api_debug') && Mage::helper('core')->isDevAllowed();
85
  }
86
 
87
  /**
89
  *
90
  * @param bool $toggle
91
  */
92
+ protected function _setDebuggingOverride($toggle)
93
  {
94
  $this->_debuggingOverride = $toggle;
95
  }
106
  public function lookupAddress($postcode, $houseNumber, $houseNumberAddition)
107
  {
108
  // Check if we are we enabled, configured & capable of handling an API request
109
+ $message = $this->_checkApiReady();
110
  if ($message)
111
  return $message;
112
 
197
  $this->_enrichType = substr($this->_enrichType, 0, 40);
198
  }
199
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
200
  protected function _getDebugInfo($url, $jsonData)
201
  {
202
  return array(
227
  $info = array();
228
 
229
  // Do a test address lookup
230
+ $this->_setDebuggingOverride(true);
231
  $addressData = $this->lookupAddress('2012ES', '30', '');
232
+ $this->_setDebuggingOverride(false);
233
 
234
  if (!isset($addressData['debugInfo']) && isset($addressData['message']))
235
  {
247
  if (strpos($addressData['debugInfo']['httpClientError'], 'SSL certificate problem, verify that the CA cert is OK') !== false)
248
  {
249
  $info[] = $this->__('Your servers\' \'cURL SSL CA bundle\' is missing or outdated. Further information:');
250
+ $info[] = '- <a href="https://stackoverflow.com/questions/6400300/https-and-ssl3-get-server-certificatecertificate-verify-failed-ca-is-ok" target="_blank">'. $this->__('How to update/fix your CA cert bundle') .'</a>';
251
+ $info[] = '- <a href="https://curl.haxx.se/docs/sslcerts.html" target="_blank">'. $this->__('About cURL SSL CA certificates') .'</a>';
252
  $info[] = '';
253
  }
254
  else if (strpos($addressData['debugInfo']['httpClientError'], 'unable to get local issuer certificate') !== false)
255
  {
256
  $info[] = $this->__('cURL cannot read/access the CA cert file:');
257
+ $info[] = '- <a href="https://curl.haxx.se/docs/sslcerts.html" target="_blank">'. $this->__('About cURL SSL CA certificates') .'</a>';
258
  $info[] = '';
259
  }
260
  else
311
  $status = 'success';
312
  }
313
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
314
  return array(
315
  'message' => $message,
316
  'status' => $status,
354
  // Detect professional
355
  return 'MagentoProfessional/'. Mage::getVersion();
356
  }
357
+
358
+ return 'Magento/'. Mage::getVersion();
 
 
 
359
  }
360
 
361
  protected function _getModuleInfo($moduleName)
380
  {
381
  if ($inAdmin)
382
  return Mage::helper('adminhtml')->getUrl('*/pcnl/lookup', array('_secure' => true));
383
+
384
+ return Mage::getUrl('postcodenl_api/json', array('_secure' => true));
385
  }
386
 
387
  protected function _curlHasSsl()
390
  return $curlVersion['features'] & CURL_VERSION_SSL;
391
  }
392
 
393
+ protected function _checkApiReady()
394
  {
395
+ if (!$this->_debuggingOverride && !($this->_getStoreConfig('postcodenl_api/config/enabled') || $this->_getStoreConfig('postcodenl_api/advanced_config/admin_validation_enabled')))
396
+ return array('message' => $this->__('Postcode.nl API not enabled.'));
397
 
398
  if ($this->_getServiceUrl() === '' || $this->_getKey() === '' || $this->_getSecret() === '')
399
  return array('message' => $this->__('Postcode.nl API not configured.'), 'info' => array($this->__('Configure your `API key` and `API secret`.')));
400
 
 
 
 
 
 
 
401
  return $this->_checkCapabilities();
402
  }
403
 
410
  return false;
411
  }
412
 
 
 
 
 
 
 
413
  protected function _callApiUrlGet($url)
414
  {
415
  $ch = curl_init();
419
  curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
420
  curl_setopt($ch, CURLOPT_USERPWD, $this->_getKey() .':'. $this->_getSecret());
421
  curl_setopt($ch, CURLOPT_USERAGENT, $this->_getUserAgent());
 
 
 
 
 
 
422
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
423
  $this->_httpResponseRaw = curl_exec($ch);
424
  $this->_httpResponseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
425
  $this->_httpResponseCodeClass = (int)floor($this->_httpResponseCode / 100) * 100;
426
  $this->_httpClientError = curl_errno($ch) ? sprintf('cURL error %s: %s', curl_errno($ch), curl_error($ch)) : null;
427
+
428
  curl_close($ch);
429
 
430
  return json_decode($this->_httpResponseRaw, true);
app/code/community/PostcodeNl/Api/Model/Observer.php CHANGED
@@ -1,32 +1,6 @@
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
-
30
  public function adminConfigurationChanged(Varien_Event_Observer $observer)
31
  {
32
  $helper = Mage::helper('postcodenl_api');
1
  <?php
2
  class PostcodeNl_Api_Model_Observer
3
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  public function adminConfigurationChanged(Varien_Event_Observer $observer)
5
  {
6
  $helper = Mage::helper('postcodenl_api');
app/code/community/PostcodeNl/Api/controllers/Adminhtml/PcnlController.php CHANGED
@@ -3,6 +3,7 @@ class PostcodeNl_Api_Adminhtml_PcnlController extends Mage_Adminhtml_Controller_
3
  {
4
  public function lookupAction()
5
  {
 
6
  $helper = Mage::helper('postcodenl_api');
7
 
8
  if ($this->getRequest()->getParam('et'))
3
  {
4
  public function lookupAction()
5
  {
6
+ /* @var $helper PostcodeNl_Api_Helper_Data */
7
  $helper = Mage::helper('postcodenl_api');
8
 
9
  if ($this->getRequest()->getParam('et'))
app/code/community/PostcodeNl/Api/controllers/JsonController.php CHANGED
@@ -3,6 +3,7 @@ class PostcodeNl_Api_JsonController extends Mage_Core_Controller_Front_Action
3
  {
4
  public function lookupAction()
5
  {
 
6
  $helper = Mage::helper('postcodenl_api');
7
 
8
  if ($this->getRequest()->getParam('et'))
3
  {
4
  public function lookupAction()
5
  {
6
+ /* @var $helper PostcodeNl_Api_Helper_Data */
7
  $helper = Mage::helper('postcodenl_api');
8
 
9
  if ($this->getRequest()->getParam('et'))
app/code/community/PostcodeNl/Api/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <PostcodeNl_Api>
5
- <version>1.2.4.0</version>
6
  </PostcodeNl_Api>
7
  </modules>
8
  <frontend>
@@ -61,17 +61,6 @@
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>
@@ -100,7 +89,7 @@
100
  </postcodenl_admin_change>
101
  </observers>
102
  </admin_system_config_changed_section_postcodenl_api>
103
- </events>
104
  </adminhtml>
105
  <default>
106
  <postcodenl_api>
@@ -108,15 +97,13 @@
108
  <enabled>1</enabled>
109
  <api_key></api_key>
110
  <api_secret></api_secret>
111
- <enabled_address_api>1</enabled_address_api>
112
- <enabled_signal_api>0</enabled_signal_api>
113
  </config>
114
  <advanced_config>
115
  <use_street2_as_housenumber>0</use_street2_as_housenumber>
116
  <use_street3_as_housenumber_addition>0</use_street3_as_housenumber_addition>
117
  <block_postofficeboxaddresses>0</block_postofficeboxaddresses>
118
  <never_hide_country>0</never_hide_country>
119
- <admin_validation_disabled>0</admin_validation_disabled>
120
  </advanced_config>
121
  <development_config>
122
  <api_url>https://api.postcode.nl</api_url>
2
  <config>
3
  <modules>
4
  <PostcodeNl_Api>
5
+ <version>1.2.5.0</version>
6
  </PostcodeNl_Api>
7
  </modules>
8
  <frontend>
61
  </setup>
62
  </postcodenl_api_setup>
63
  </resources>
 
 
 
 
 
 
 
 
 
 
 
64
  </global>
65
  <adminhtml>
66
  <layout>
89
  </postcodenl_admin_change>
90
  </observers>
91
  </admin_system_config_changed_section_postcodenl_api>
92
+ </events>
93
  </adminhtml>
94
  <default>
95
  <postcodenl_api>
97
  <enabled>1</enabled>
98
  <api_key></api_key>
99
  <api_secret></api_secret>
 
 
100
  </config>
101
  <advanced_config>
102
  <use_street2_as_housenumber>0</use_street2_as_housenumber>
103
  <use_street3_as_housenumber_addition>0</use_street3_as_housenumber_addition>
104
  <block_postofficeboxaddresses>0</block_postofficeboxaddresses>
105
  <never_hide_country>0</never_hide_country>
106
+ <admin_validation_enabled>1</admin_validation_enabled>
107
  </advanced_config>
108
  <development_config>
109
  <api_url>https://api.postcode.nl</api_url>
app/code/community/PostcodeNl/Api/etc/system.xml CHANGED
@@ -20,7 +20,7 @@
20
  <expanded>1</expanded>
21
  <fields>
22
  <enabled translate="label">
23
- <label>Enabled?</label>
24
  <frontend_type>select</frontend_type>
25
  <source_model>adminhtml/system_config_source_yesno</source_model>
26
  <sort_order>10</sort_order>
@@ -45,28 +45,8 @@
45
  <show_in_website>1</show_in_website>
46
  <show_in_store>1</show_in_store>
47
  <validate>validate-length minimum-length-10</validate>
48
- <comment><![CDATA[To get your Postcode.nl API key and secret, please register at <a href='https://api.postcode.nl' target='_blank'>Postcode.nl API</a>.]]></comment>
49
  </api_secret>
50
- <enabled_address_api translate="label">
51
- <label>Address API Enabled?</label>
52
- <frontend_type>select</frontend_type>
53
- <source_model>adminhtml/system_config_source_yesno</source_model>
54
- <sort_order>50</sort_order>
55
- <show_in_default>1</show_in_default>
56
- <show_in_website>1</show_in_website>
57
- <show_in_store>1</show_in_store>
58
- <comment><![CDATA[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.]]></comment>
59
- </enabled_address_api>
60
- <enabled_signal_api translate="label">
61
- <label>Signal API Enabled?</label>
62
- <frontend_type>select</frontend_type>
63
- <source_model>adminhtml/system_config_source_yesno</source_model>
64
- <sort_order>60</sort_order>
65
- <show_in_default>1</show_in_default>
66
- <show_in_website>1</show_in_website>
67
- <show_in_store>1</show_in_store>
68
- <comment><![CDATA[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.]]></comment>
69
- </enabled_signal_api>
70
  </fields>
71
  </config>
72
  <advanced_config translate="label">
@@ -118,28 +98,18 @@
118
  <show_in_store>1</show_in_store>
119
  <comment><![CDATA[For webshops with a more international audience, always show the country selection box.<br /><b>Developer Note</b>: If there are other fields next to the country selector, they will be disabled.]]></comment>
120
  </never_hide_country>
121
- <admin_validation_disabled translate="label">
122
- <label>Disable validation in admin</label>
123
  <frontend_type>select</frontend_type>
124
  <source_model>adminhtml/system_config_source_yesno</source_model>
125
  <sort_order>50</sort_order>
126
  <show_in_default>1</show_in_default>
127
  <show_in_website>1</show_in_website>
128
  <show_in_store>1</show_in_store>
129
- <comment><![CDATA[You can use this option if you encounter problems in the admin address validation, or want to allow all addresses in the admin.]]></comment>
130
- </admin_validation_disabled>
131
  </fields>
132
  </advanced_config>
133
- <advanced_config_signal translate="label">
134
- <label>Advanced Signal API configuration</label>
135
- <frontend_type>text</frontend_type>
136
- <sort_order>30</sort_order>
137
- <show_in_default>1</show_in_default>
138
- <show_in_website>1</show_in_website>
139
- <show_in_store>1</show_in_store>
140
- <fields>
141
- </fields>
142
- </advanced_config_signal>
143
  <development_config translate="label">
144
  <label>Development configuration</label>
145
  <frontend_type>text</frontend_type>
@@ -175,7 +145,7 @@
175
  <show_in_default>1</show_in_default>
176
  <show_in_website>1</show_in_website>
177
  <show_in_store>1</show_in_store>
178
- <comment><![CDATA[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 /><em>(this is not recommended in production environments!)</em>]]></comment>
179
  </api_debug>
180
  </fields>
181
  </development_config>
20
  <expanded>1</expanded>
21
  <fields>
22
  <enabled translate="label">
23
+ <label>Enabled in frontend</label>
24
  <frontend_type>select</frontend_type>
25
  <source_model>adminhtml/system_config_source_yesno</source_model>
26
  <sort_order>10</sort_order>
45
  <show_in_website>1</show_in_website>
46
  <show_in_store>1</show_in_store>
47
  <validate>validate-length minimum-length-10</validate>
48
+ <comment><![CDATA[To get your Postcode.nl API key and secret, please register at <a href='https://services.postcode.nl/adresdata/adres-validatie' target='_blank'>Postcode.nl API</a>.]]></comment>
49
  </api_secret>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  </fields>
51
  </config>
52
  <advanced_config translate="label">
98
  <show_in_store>1</show_in_store>
99
  <comment><![CDATA[For webshops with a more international audience, always show the country selection box.<br /><b>Developer Note</b>: If there are other fields next to the country selector, they will be disabled.]]></comment>
100
  </never_hide_country>
101
+ <admin_validation_enabled translate="label">
102
+ <label>Enabled in admin</label>
103
  <frontend_type>select</frontend_type>
104
  <source_model>adminhtml/system_config_source_yesno</source_model>
105
  <sort_order>50</sort_order>
106
  <show_in_default>1</show_in_default>
107
  <show_in_website>1</show_in_website>
108
  <show_in_store>1</show_in_store>
109
+ <comment><![CDATA[You can disable this option if you encounter problems in the admin address validation, or want to allow all addresses in the admin.]]></comment>
110
+ </admin_validation_enabled>
111
  </fields>
112
  </advanced_config>
 
 
 
 
 
 
 
 
 
 
113
  <development_config translate="label">
114
  <label>Development configuration</label>
115
  <frontend_type>text</frontend_type>
145
  <show_in_default>1</show_in_default>
146
  <show_in_website>1</show_in_website>
147
  <show_in_store>1</show_in_store>
148
+ <comment><![CDATA[Additional debug information used for trouble-shooting will be sent by the Postcode.nl API extension.<br /><em>(this is not recommended in production environments!)</em>]]></comment>
149
  </api_debug>
150
  </fields>
151
  </development_config>
app/design/adminhtml/default/default/layout/postcodenl/api/lookup.xml CHANGED
@@ -2,8 +2,8 @@
2
  <layout version="0.1.0">
3
  <adminhtml_sales_order_address>
4
  <reference name="head">
5
- <action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
6
- <action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
7
  </reference>
8
  <reference name="content">
9
  <block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
@@ -11,8 +11,8 @@
11
  </adminhtml_sales_order_address>
12
  <adminhtml_sales_order_create_index>
13
  <reference name="head">
14
- <action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
15
- <action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
16
  </reference>
17
  <reference name="js">
18
  <block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
@@ -20,8 +20,8 @@
20
  </adminhtml_sales_order_create_index>
21
  <adminhtml_sales_order_edit_index>
22
  <reference name="head">
23
- <action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
24
- <action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
25
  </reference>
26
  <reference name="js">
27
  <block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
@@ -29,8 +29,8 @@
29
  </adminhtml_sales_order_edit_index>
30
  <adminhtml_customer_edit>
31
  <reference name="head">
32
- <action method="addCss" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/css/lookup.css</script></action>
33
- <action method="addJs" ifconfig="postcodenl_api/config/enabled"><script>postcodenl/api/lookup.js</script></action>
34
  </reference>
35
  <reference name="js">
36
  <block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
2
  <layout version="0.1.0">
3
  <adminhtml_sales_order_address>
4
  <reference name="head">
5
+ <action method="addCss" ifconfig="postcodenl_api/advanced_config/admin_validation_enabled"><script>postcodenl/api/css/lookup.css</script></action>
6
+ <action method="addJs" ifconfig="postcodenl_api/advanced_config/admin_validation_enabled"><script>postcodenl/api/lookup.js</script></action>
7
  </reference>
8
  <reference name="content">
9
  <block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
11
  </adminhtml_sales_order_address>
12
  <adminhtml_sales_order_create_index>
13
  <reference name="head">
14
+ <action method="addCss" ifconfig="postcodenl_api/advanced_config/admin_validation_enabled"><script>postcodenl/api/css/lookup.css</script></action>
15
+ <action method="addJs" ifconfig="postcodenl_api/advanced_config/admin_validation_enabled"><script>postcodenl/api/lookup.js</script></action>
16
  </reference>
17
  <reference name="js">
18
  <block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
20
  </adminhtml_sales_order_create_index>
21
  <adminhtml_sales_order_edit_index>
22
  <reference name="head">
23
+ <action method="addCss" ifconfig="postcodenl_api/advanced_config/admin_validation_enabled"><script>postcodenl/api/css/lookup.css</script></action>
24
+ <action method="addJs" ifconfig="postcodenl_api/advanced_config/admin_validation_enabled"><script>postcodenl/api/lookup.js</script></action>
25
  </reference>
26
  <reference name="js">
27
  <block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
29
  </adminhtml_sales_order_edit_index>
30
  <adminhtml_customer_edit>
31
  <reference name="head">
32
+ <action method="addCss" ifconfig="postcodenl_api/advanced_config/admin_validation_enabled"><script>postcodenl/api/css/lookup.css</script></action>
33
+ <action method="addJs" ifconfig="postcodenl_api/advanced_config/admin_validation_enabled"><script>postcodenl/api/lookup.js</script></action>
34
  </reference>
35
  <reference name="js">
36
  <block type="postcodenl_api/jsinit" name="postcodenl.jsinit" template="postcodenl/api/jsinit.phtml" />
app/locale/en_US/PostcodeNl_Api.csv CHANGED
@@ -20,19 +20,13 @@
20
  "Postcode.nl API not enabled.","Postcode.nl API not enabled."
21
  "- disabled -","- disabled -"
22
  "Address validation","Address validation"
23
- "Fill out your postcode and housenumber to auto-complete your address. You can also manually set your address information.","Fill out your postcode and housenumber to auto-complete your address. You can also manually set your address information."
24
  "Manual input","Manual input"
25
  "Fill out address information manually","Fill out address information manually"
26
  "Validated address","Validated address"
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."
36
  "A test connection could not be successfully completed.","The test connection could not be successfully completed."
37
  "A test connection to the API was successfully completed.","A test connection to the API was successfully completed."
38
  "Your server could not connect to the Postcode.nl server.","Your server could not connect to the Postcode.nl server."
@@ -52,21 +46,15 @@
52
  "Access is denied.","Access is denied."
53
  "Service reported an error.","Service reported an error."
54
  "Postcode.nl service message:","Postcode.nl service message:"
55
- "Address API service has no problems, but the Signal API service reported an error.","Address API service has no problems, but the Signal API service reported an error."\
56
- "The Signal service might be temporarily unavailable, if problems persist, please contact <a href=\"mailto:info@postcode.nl\">info@postcode.nl</a>.","The Signal service might be temporarily unavailable, if problems persist, please contact <a href=\"mailto:info@postcode.nl\">info@postcode.nl</a>."
57
  "Postcode.nl API Test: ","Postcode.nl API Test: "
58
  "Postcode.nl API Test Troubleshooting: ","Postcode.nl API Test Troubleshooting: "
59
  "Configure your `API key` and `API secret`.","Configure your `API key` and `API secret`."
60
  "Technical reason: Received JSON data did not contain expected data.","Technical reason: Received JSON data did not contain expected data."
61
  "Configuration","Configuration"
62
- "Enabled?","Enabled?"
63
  "API key","API key"
64
  "API secret","API secret"
65
- "To get your Postcode.nl API key and secret, please register at <a href='https://api.postcode.nl' target='_blank'>Postcode.nl API</a>.","To get your Postcode.nl API key and secret, please register at <a href='https://api.postcode.nl' target='_blank'>Postcode.nl API</a>."
66
- "Address API Enabled?","Address API Enabled?"
67
- "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.","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."
68
- "Signal API Enabled?","Signal API Enabled?"
69
- "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.","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."
70
  "Advanced Address API configuration","Advanced Address API configuration"
71
  "Separate housenumber","Separate housenumber"
72
  "If you use the second 'street' field as a separate house-number field, enable this option.","If you use the second 'street' field as a separate house-number field, enable this option."
@@ -76,12 +64,11 @@
76
  "This will consider 'post office box' (postbus) addresses invalid for all validated address fields.<br /><em>(though still allowed if address is added with 'manual' checkbox)</em>","This will consider 'post office box' (postbus) addresses invalid for all validated address fields.<br /><em>(though still allowed if address is added with 'manual' checkbox)</em>"
77
  "Always show country selector","Always show country selector"
78
  "For webshops with a more international audience, always show the country selection box.<br /><b>Developer Note</b>: If there are other fields next to the country selector, they will be disabled.","For webshops with a more international audience, always show the country selection box.<br /><b>Developer Note</b>: If there are other fields next to the country selector, they will be disabled."
79
- "Disable validation in admin","Disable validation in admin"
80
- "You can use this option if you encounter problems in the admin address validation, or want to allow all addresses in the admin.","You can use this option if you encounter problems in the admin address validation, or want to allow all addresses in the admin."
81
- "Advanced Signal API configuration","Advanced Signal API configuration"
82
  "Development configuration","Development configuration"
83
  "API URL","API URL"
84
  "Enable API Showcase","Enable API Showcase"
85
  "By enabling this option, you will see what additional information the Postcode.nl API has to offer, every time your information is enriched.<br /><em>(this is not recommended in production environments!)</em>","By enabling this option, you will see what additional information the Postcode.nl API has to offer, every time your information is enriched.<br /><em>(this is not recommended in production environments!)</em>"
86
  "Show API Debug info","Show API Debug info"
87
- "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 /><em>(this is not recommended in production environments!)</em>","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 /><em>(this is not recommended in production environments!)</em>"
 
 
20
  "Postcode.nl API not enabled.","Postcode.nl API not enabled."
21
  "- disabled -","- disabled -"
22
  "Address validation","Address validation"
23
+ "Fill out your postcode and housenumber to auto-complete your address.","Fill out your postcode and housenumber to auto-complete your address."
24
  "Manual input","Manual input"
25
  "Fill out address information manually","Fill out address information manually"
26
  "Validated address","Validated address"
27
  "API Showcase","API Showcase"
28
  "API Debug Info","API Debug Info"
29
  "Post office box not allowed.","Post office box not allowed."
 
 
 
 
 
 
30
  "A test connection could not be successfully completed.","The test connection could not be successfully completed."
31
  "A test connection to the API was successfully completed.","A test connection to the API was successfully completed."
32
  "Your server could not connect to the Postcode.nl server.","Your server could not connect to the Postcode.nl server."
46
  "Access is denied.","Access is denied."
47
  "Service reported an error.","Service reported an error."
48
  "Postcode.nl service message:","Postcode.nl service message:"
 
 
49
  "Postcode.nl API Test: ","Postcode.nl API Test: "
50
  "Postcode.nl API Test Troubleshooting: ","Postcode.nl API Test Troubleshooting: "
51
  "Configure your `API key` and `API secret`.","Configure your `API key` and `API secret`."
52
  "Technical reason: Received JSON data did not contain expected data.","Technical reason: Received JSON data did not contain expected data."
53
  "Configuration","Configuration"
54
+ "Enabled in frontend","Enabled in frontend"
55
  "API key","API key"
56
  "API secret","API secret"
57
+ "To get your Postcode.nl API key and secret, please register at <a href='https://services.postcode.nl/adresdata/adres-validatie' target='_blank'>Postcode.nl API</a>.","To get your Postcode.nl API key and secret, please register at <a href='https://services.postcode.nl/adresdata/adres-validatie' target='_blank'>Postcode.nl API</a>."
 
 
 
 
58
  "Advanced Address API configuration","Advanced Address API configuration"
59
  "Separate housenumber","Separate housenumber"
60
  "If you use the second 'street' field as a separate house-number field, enable this option.","If you use the second 'street' field as a separate house-number field, enable this option."
64
  "This will consider 'post office box' (postbus) addresses invalid for all validated address fields.<br /><em>(though still allowed if address is added with 'manual' checkbox)</em>","This will consider 'post office box' (postbus) addresses invalid for all validated address fields.<br /><em>(though still allowed if address is added with 'manual' checkbox)</em>"
65
  "Always show country selector","Always show country selector"
66
  "For webshops with a more international audience, always show the country selection box.<br /><b>Developer Note</b>: If there are other fields next to the country selector, they will be disabled.","For webshops with a more international audience, always show the country selection box.<br /><b>Developer Note</b>: If there are other fields next to the country selector, they will be disabled."
 
 
 
67
  "Development configuration","Development configuration"
68
  "API URL","API URL"
69
  "Enable API Showcase","Enable API Showcase"
70
  "By enabling this option, you will see what additional information the Postcode.nl API has to offer, every time your information is enriched.<br /><em>(this is not recommended in production environments!)</em>","By enabling this option, you will see what additional information the Postcode.nl API has to offer, every time your information is enriched.<br /><em>(this is not recommended in production environments!)</em>"
71
  "Show API Debug info","Show API Debug info"
72
+ "Additional debug information used for trouble-shooting will be sent by the Postcode.nl API extension.<br /><em>(this is not recommended in production environments!)</em>","Additional debug information used for trouble-shooting will be sent by the Postcode.nl API extension.<br /><em>(this is not recommended in production environments!)</em>"
73
+ "Enabled in admin","Enabled in admin"
74
+ "You can disable this option if you encounter problems in the admin address validation, or want to allow all addresses in the admin.","You can disable this option if you encounter problems in the admin address validation, or want to allow all addresses in the admin."
app/locale/nl_NL/PostcodeNl_Api.csv CHANGED
@@ -20,19 +20,13 @@
20
  "Postcode.nl API not enabled.","Postcode.nl API niet ingeschakeld."
21
  "- disabled -","- uitgeschakeld -"
22
  "Address validation","Adresvalidatie"
23
- "Fill out your postcode and housenumber to auto-complete your address. You can also manually set your address information.","Vul uw postcode en huisnummer in en uw adres wordt automatisch en foutloos aangevuld. Handmatig invullen kan natuurlijk ook."
24
  "Manual input","Handmatige invoer"
25
  "Fill out address information manually","Handmatig adres invullen"
26
  "Validated address","Gevalideerd adres"
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."
36
  "A test connection could not be successfully completed.","Een test connectie kon niet succesvol uitgevoerd worden."
37
  "A test connection to the API was successfully completed.","Een test connectie naar de API is succesvol tot stand gekomen."
38
  "Your server could not connect to the Postcode.nl server.","Er kon geen connectie tot stand worden gebracht met de Postcode.nl server."
@@ -52,21 +46,15 @@
52
  "Access is denied.","Toegang geweigerd."
53
  "Service reported an error.","De dienst geeft een foutmelding."
54
  "Postcode.nl service message:","Postcode.nl foutmelding:"
55
- "Address API service has no problems, but the Signal API service reported an error.","De Adres API dienst heeft geen problemen, maar de Signaal API dienst geeft een foutmelding."
56
- "The Signal service might be temporarily unavailable, if problems persist, please contact <a href='mailto:info@postcode.nl'>info@postcode.nl</a>.","De Signaal dienst kan tijdelijk onbereikbaar zijn, als het probleem zich blijft voordoen, neem dan contact op met <a href='mailto:info@postcode.nl'>info@postcode.nl</a>."
57
  "Postcode.nl API Test: ","Postcode.nl API Test: "
58
  "Postcode.nl API Test Troubleshooting: ","Postcode.nl API Test probleem informatie: "
59
  "Configure your `API key` and `API secret`.","Configureer de `API key` en `API secret`."
60
  "Technical reason: Received JSON data did not contain expected data.","Technische reden: Ontvangen JSON data bevatte niet verwachtte data."
61
  "Configuration","Configuratie"
62
- "Enabled?","Ingeschakeld?"
63
  "API key","API key"
64
  "API secret","API secret"
65
- "To get your Postcode.nl API key and secret, please register at <a href='https://api.postcode.nl' target='_blank'>Postcode.nl API</a>.","Om uw Postcode.nl API key en secret te verkrijgen, registreer een account bij <a href='https://api.postcode.nl' target='_blank'>de Postcode.nl API</a>."
66
- "Address API Enabled?","Adres API Ingeschakeld?"
67
- "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.","De Nederlandse adres validatie via de <a href='https://api.postcode.nl/documentation/address-api-description' target='_blank'>Postcode.nl Adres API</a> is automatisch beschikbaar bij een account."
68
- "Signal API Enabled?","Signaal API Ingeschakeld?"
69
- "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.","Om de <a href='https://api.postcode.nl/documentation/signal-api-description' target='_blank'>Postcode.nl Signaal API</a> te gebruiken, vink de dienst aan tijdens registratie, of in je <a href='https://api.postcode.nl'>Postcode.nl API dashboard</a>."
70
  "Advanced Address API configuration","Geavanceerde Adres API configuratie"
71
  "Separate housenumber","Los huisnummer"
72
  "If you use the second 'street' field as a separate house-number field, enable this option.","Als je het tweede 'straat' veld wilt gebruiken voor opslag van het huisnummer, gebruik deze optie."
@@ -76,12 +64,11 @@
76
  "This will consider 'post office box' (postbus) addresses invalid for all validated address fields.<br /><em>(though still allowed if address is added with 'manual' checkbox)</em>","Dit zorgt ervoor dat postbus addressen niet als valide worden gezien voor adresvelden.<br /><em>(dit is nog steeds toegestaan met de 'handmatige invoer' vink)</em>"
77
  "Always show country selector","Toon altijd het land-selectie veld"
78
  "For webshops with a more international audience, always show the country selection box.<br /><b>Developer Note</b>: If there are other fields next to the country selector, they will be disabled.","Voor webshops met een internationaal publiek.<br /><b>Ontwikkelaars notitie</b>: Als er een ander veld naast het land veld staat, is deze uitgeschakeld."
79
- "Disable validation in admin","Schakel adres validatie uit in de admin"
80
- "You can use this option if you encounter problems in the admin address validation, or want to allow all addresses in the admin.","Je kan deze optie gebruiken om problemen in de admin te voorkomen, of om alle adressen toe te staan."
81
- "Advanced Signal API configuration","Geavanceerde Signaal API configuratie"
82
  "Development configuration","Ontwikkelaars configuratie"
83
  "API URL","API URL"
84
  "Enable API Showcase","Schakel API Showcase in"
85
  "By enabling this option, you will see what additional information the Postcode.nl API has to offer, every time your information is enriched.<br /><em>(this is not recommended in production environments!)</em>","Deze optie laat tijdens checkout een uitgebreide lijst van adres informatie zien.<br /><em>(deze optie is niet aan te raden voor een live webshop!)</em>"
86
  "Show API Debug info","Toon API debug info"
87
- "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 /><em>(this is not recommended in production environments!)</em>","Extra debug informatie wordt getoond. De Signaal API schrijft logs weg in 'var/log/postcodenl-signal.log'.<br /><em>(deze optie is niet aan te raden voor een live webshop!)</em>"
 
 
20
  "Postcode.nl API not enabled.","Postcode.nl API niet ingeschakeld."
21
  "- disabled -","- uitgeschakeld -"
22
  "Address validation","Adresvalidatie"
23
+ "Fill out your postcode and housenumber to auto-complete your address.","Vul uw postcode en huisnummer in en uw adres wordt automatisch en foutloos aangevuld."
24
  "Manual input","Handmatige invoer"
25
  "Fill out address information manually","Handmatig adres invullen"
26
  "Validated address","Gevalideerd adres"
27
  "API Showcase","API Showcase"
28
  "API Debug Info","API Debug Info"
29
  "Post office box not allowed.","Postbus niet toegestaan."
 
 
 
 
 
 
30
  "A test connection could not be successfully completed.","Een test connectie kon niet succesvol uitgevoerd worden."
31
  "A test connection to the API was successfully completed.","Een test connectie naar de API is succesvol tot stand gekomen."
32
  "Your server could not connect to the Postcode.nl server.","Er kon geen connectie tot stand worden gebracht met de Postcode.nl server."
46
  "Access is denied.","Toegang geweigerd."
47
  "Service reported an error.","De dienst geeft een foutmelding."
48
  "Postcode.nl service message:","Postcode.nl foutmelding:"
 
 
49
  "Postcode.nl API Test: ","Postcode.nl API Test: "
50
  "Postcode.nl API Test Troubleshooting: ","Postcode.nl API Test probleem informatie: "
51
  "Configure your `API key` and `API secret`.","Configureer de `API key` en `API secret`."
52
  "Technical reason: Received JSON data did not contain expected data.","Technische reden: Ontvangen JSON data bevatte niet verwachtte data."
53
  "Configuration","Configuratie"
54
+ "Enabled in frontend","Ingeschakeld in frontend"
55
  "API key","API key"
56
  "API secret","API secret"
57
+ "To get your Postcode.nl API key and secret, please register at <a href='https://services.postcode.nl/adresdata/adres-validatie' target='_blank'>Postcode.nl API</a>.","Om uw Postcode.nl API key en secret te verkrijgen, registreer een account bij <a href='https://services.postcode.nl/adresdata/adres-validatie' target='_blank'>de Postcode.nl API</a>."
 
 
 
 
58
  "Advanced Address API configuration","Geavanceerde Adres API configuratie"
59
  "Separate housenumber","Los huisnummer"
60
  "If you use the second 'street' field as a separate house-number field, enable this option.","Als je het tweede 'straat' veld wilt gebruiken voor opslag van het huisnummer, gebruik deze optie."
64
  "This will consider 'post office box' (postbus) addresses invalid for all validated address fields.<br /><em>(though still allowed if address is added with 'manual' checkbox)</em>","Dit zorgt ervoor dat postbus addressen niet als valide worden gezien voor adresvelden.<br /><em>(dit is nog steeds toegestaan met de 'handmatige invoer' vink)</em>"
65
  "Always show country selector","Toon altijd het land-selectie veld"
66
  "For webshops with a more international audience, always show the country selection box.<br /><b>Developer Note</b>: If there are other fields next to the country selector, they will be disabled.","Voor webshops met een internationaal publiek.<br /><b>Ontwikkelaars notitie</b>: Als er een ander veld naast het land veld staat, is deze uitgeschakeld."
 
 
 
67
  "Development configuration","Ontwikkelaars configuratie"
68
  "API URL","API URL"
69
  "Enable API Showcase","Schakel API Showcase in"
70
  "By enabling this option, you will see what additional information the Postcode.nl API has to offer, every time your information is enriched.<br /><em>(this is not recommended in production environments!)</em>","Deze optie laat tijdens checkout een uitgebreide lijst van adres informatie zien.<br /><em>(deze optie is niet aan te raden voor een live webshop!)</em>"
71
  "Show API Debug info","Toon API debug info"
72
+ "Additional debug information used for trouble-shooting will be sent by the Postcode.nl API extension.<br /><em>(this is not recommended in production environments!)</em>","Extra debug informatie wordt getoond.<br /><em>(deze optie is niet aan te raden voor een live webshop!)</em>"
73
+ "Enabled in admin","Ingeschakeld in admin"
74
+ "You can disable this option if you encounter problems in the admin address validation, or want to allow all addresses in the admin.","Schakel uit als u problemen ervaart in de admin, of geen validatie wenst in de backend."
package.xml CHANGED
@@ -1,30 +1,30 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>PostcodeNl_Api</name>
4
- <version>1.2.4.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.&#xD;
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.&#xD;
12
  &#xD;
13
  &#x2022; Reduce address errors&#xD;
14
  &#x2022; Reduce costs from undelivered mail and packages&#xD;
15
  &#x2022; Offer extra service for your customers with easy address entry&#xD;
16
  &#x2022; Improve sale conversion&#xD;
17
- &#x2022; Get warnings for potential incorrect order data&#xD;
18
- &#x2022; Check against the Dutch authorities' fraud warning database&#xD;
19
  &#xD;
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>Fixes:&#xD;
22
- - Fix for admin access issue related to SUPEE-6285 patch&#xD;
 
 
 
23
  </notes>
24
  <authors><author><name>Postcode.nl Technical Support</name><user>TechPostcodeNl</user><email>tech@postcode.nl</email></author></authors>
25
- <date>2015-07-08</date>
26
- <time>11:44:00</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="820d2fed4cbc0d1dbd8f197a78e549f1"/></dir><dir name="Model"><file name="Observer.php" hash="d394877fb8340673dbb78751008cae5f"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="PcnlController.php" hash="5ee32195d2f53a1b5b98caec9174f416"/></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="169658dbcaec550a4c11820e0d620ecf"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="5d518aeaeae028b6299c7cf3d6e54f60"/><file name="config.xml" hash="43b708f1c951f3c32a029c2c7133f31e"/><file name="system.xml" hash="429eb397ed1fc622b970de3378ba4d77"/></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="d2408958337c27b6fe9a33630e2d1714"/></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="f70ab07d4fbee85d3de8d15decff77d2"/></dir><dir name="nl_NL"><file name="PostcodeNl_Api.csv" hash="1f14faf448152ce546215f14cb4d66f8"/></dir></target><target name="mageweb"><dir name="js"><dir name="postcodenl"><dir name="api"><file name="lookup.js" hash="eff8624d36a501f8deb6416e06dc2c54"/></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="ea6b231d66e2ebfb2f9f1431abac0382"/></dir><dir name="images"><file name="postcode-logo.png" hash="da02bc29be1057a0201e63f81ee4bd02"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="PostcodeNl_Api.xml" hash="feeaf95128ffe4ad109ed8b0b8bc85ab"/></dir></target></contents>
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.5.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.</summary>
10
+ <description>Complement and validate Dutch addresses at Checkout with the postcode Magento plugin from Postcode.nl.&#xD;
 
11
  &#xD;
12
  &#x2022; Reduce address errors&#xD;
13
  &#x2022; Reduce costs from undelivered mail and packages&#xD;
14
  &#x2022; Offer extra service for your customers with easy address entry&#xD;
15
  &#x2022; Improve sale conversion&#xD;
 
 
16
  &#xD;
17
+ The use of the Postcode.nl Magento plugin is subject to our Terms and Conditions.</description>
18
  <notes>Fixes:&#xD;
19
+ - Marked compatible with PHP7&#xD;
20
+ - Simpler config for enabling addon in frontend and backend&#xD;
21
+ - Updated readme texts and links&#xD;
22
+ - Removed signal api&#xD;
23
  </notes>
24
  <authors><author><name>Postcode.nl Technical Support</name><user>TechPostcodeNl</user><email>tech@postcode.nl</email></author></authors>
25
+ <date>2016-07-18</date>
26
+ <time>09:33:29</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="dcbf45568451bbfec496b4a09745af15"/></dir><dir name="Model"><file name="Observer.php" hash="a3e9394931c993fea90a35ce6c83b014"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="PcnlController.php" hash="ca302f7d30e0e1e9e63563e2122888c5"/></dir><file name="JsonController.php" hash="40b87bc78b843b5faa742cb9d4ab0938"/></dir><dir name="data"><dir name="postcodenl_api_setup"><file name="data-upgrade-1.0.8.0-1.1.0.0.php" hash="169658dbcaec550a4c11820e0d620ecf"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="5d518aeaeae028b6299c7cf3d6e54f60"/><file name="config.xml" hash="f2df408011e8f08aa0e850274d1bd45a"/><file name="system.xml" hash="b3c86cb3e78b614f0a542762ec734973"/></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="95c19834f5160de233ec2a4b26d3e0e6"/></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="d2408958337c27b6fe9a33630e2d1714"/></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="38802fe32da59f0fa1e86cef36d74a38"/></dir><dir name="nl_NL"><file name="PostcodeNl_Api.csv" hash="c8644404614701ff8440cad5689a7317"/></dir></target><target name="mageweb"><dir name="js"><dir name="postcodenl"><dir name="api"><file name="lookup.js" hash="eff8624d36a501f8deb6416e06dc2c54"/></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="ea6b231d66e2ebfb2f9f1431abac0382"/></dir><dir name="images"><file name="postcode-logo.png" hash="da02bc29be1057a0201e63f81ee4bd02"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="PostcodeNl_Api.xml" hash="feeaf95128ffe4ad109ed8b0b8bc85ab"/></dir></target></contents>
28
  <compatible/>
29
+ <dependencies><required><php><min>5.3.3</min><max>9.99.0</max></php><extension><name>curl</name><min>7.10.5</min><max>7.99.0</max></extension></required></dependencies>
30
  </package>