SUPEE-8167 [New Patch for PayPal Instant Payment Notification (IPN) Changes.]

New Patch for PayPal Instant Payment Notification (IPN) Changes. Upgrade to 1.9.3.3 or SUPEE-8167 by June 30, 2017 to Avoid Service Disruptions

Avviso Magento SUPEE-8167

Questo è il messaggio comparso da ieri sul backend degli store Magento che ci segnala la necessità urgente di applicare la patch pena il malfunzionamento del sistema di notifiche automatiche di pagamento IPN da PayPal.

La buona notizia è che questa patch è relativamente semplice da applicare,
quella cattiva è che deve essere tassativamente applicata entro il 30 giugno 2017.

Panoramica sulla patch SUPEE 8167

Il file interessato dalla patch è solamente uno, questo semplifica notevolmente l’applicazione della patch.
app/code/core/Mage/Paypal/Model/Ipn.php

Dipendenze:

Al momento ci risulta che la patch SUPEE-8167 sia applicabile anche su store non aggiornati e senza le precedenti patch di sicurezza magento installate.

Come installare la patch SUPEE-8167:

a. Tramite SSH

Se si dispone di accesso SSH, questo è il metodo preferenziale per applicare la patch reperibile sul sito ufficiale magento.com/tech-resources/download e il nome del file è:
PATCH_SUPEE-8167_EE_1.14.1.0_1.14.3.2_v1-2017-05-08-02-42-22.sh

b. Tramite FTP

E’ possibile fare un diff manuale e caricare tramite FTP il file Ipn.php modificato.

Di seguito il diff del file Ipn.php, così come si trova all’interno della patch SUPEE-8167:

--- app/code/core/Mage/Paypal/Model/Ipn.php
+++ app/code/core/Mage/Paypal/Model/Ipn.php
@@ -37,6 +37,20 @@ class Mage_Paypal_Model_Ipn
     const DEFAULT_LOG_FILE = 'paypal_unknown_ipn.log';

     /**
+     * Default postback endpoint URL.
+     *
+     * @var string
+     */
+    const DEFAULT_POSTBACK_URL = 'https://ipnpb.paypal.com/cgi-bin/webscr';
+
+    /**
+     * Sandbox postback endpoint URL.
+     *
+     * @var string
+     */
+    const SANDBOX_POSTBACK_URL = 'https://ipnpb.sandbox.paypal.com/cgi-bin/webscr';
+
+    /**
      * Store order instance
      *
      * @var Mage_Sales_Model_Order
@@ -132,14 +146,15 @@ class Mage_Paypal_Model_Ipn
      */
     protected function _postBack(Zend_Http_Client_Adapter_Interface $httpAdapter)
     {
+        $url = $this->_getPostbackUrl();
+
         $postbackQuery = http_build_query($this->_request) . '&cmd=_notify-validate';
-        $postbackUrl = $this->_config->getPaypalUrl();
-        $this->_debugData['postback_to'] = $postbackUrl;
+        $this->_debugData['postback_to'] = $url;

         $httpAdapter->setConfig(array('verifypeer' => $this->_config->verifyPeer));
         $httpAdapter->write(
             Zend_Http_Client::POST,
-            $postbackUrl,
+            $url,
             '1.1',
             array('Connection: close'),
             $postbackQuery
@@ -176,6 +191,16 @@ class Mage_Paypal_Model_Ipn
     }

     /**
+     * Get postback endpoint URL.
+     *
+     * @return string
+     */
+    protected function _getPostbackUrl()
+    {
+        return $this->_config->sandboxFlag ? self::SANDBOX_POSTBACK_URL : self::DEFAULT_POSTBACK_URL;
+    }
+
+    /**
      * Load and validate order, instantiate proper configuration
      *
      *

Per chi non fosse pratico con la sintassi unified-diff Sintassi Diff ( link in inglese )

Considerazioni:

Differentemente da altre patch di sicurezza Magento, per le quali la complessità o l’eccessiva
personalizzazione dello store finiscono per farne rimandare l’applicazione, la patch SUPEE-8167 è indispensabile per continuare a processare i pagamenti PayPal dopo il 30 Giugno 2017 e vista anche la specificità e indipendenza rispetto alle precedenti, non abbiamo scuse per non installarla.

Potrebbero interessarti anche...