International do correio prioritário de USPS 1.9.1.1 quebrado

15

Se você selecionar Priority Mail International e fizer uma estimativa para o Canadá, a taxa de manuseio será exibida como uma opção para envio.

A solução alternativa é desmarcar "Priority Mail International"

Patrick
fonte

Respostas:

13

EDIT: Lembre-se de que o Magento resolveu esse problema com o patch SUPEE-6237 em 18 de junho de 2015. Provavelmente é apenas mais fácil instalar o patch neste momento para resolvê-lo.

Eu tive um problema em que a taxa estava aparecendo como US $ 0,00 sem o nome do método. O problema parece coincidir com a alteração da taxa do USPS em 31 de maio de 2015:

31 de maio de 2015 As USPS Web Tools implementarão modificações e recursos adicionais nas APIs do Serviço Postal dos EUA. As seguintes alterações podem afetar especialmente os sistemas de remessa:

  • CEP de origem necessário para o Priority Mail International no Canadá
  • Serviços especiais modificados
  • IDs de serviço modificados
  • Classes de correio disponíveis modificadas para Serviços de devolução de mercadorias

A primeira mensagem internacional de correio prioritário causada retorna o seguinte erro:

<ServiceErrors>
    <ServiceError>
        <Id>50050</Id>
        <Description>The Origin ZIP Code and the Destination Postal Code is required for Priority Mail International when mailing to Canada.</Description>
    </ServiceError>
</ServiceErrors>

A solução foi copiar o arquivo: app/code/core/Mage/Usa/Model/Shipping/Carrier/Usps.php paraapp/code/local/Mage/Usa/Model/Shipping/Carrier/Usps.php

Em seguida, inseri o seguinte código na linha 394:

if($r->getDestCountryId()=='CA'){
    $package->addChild('OriginZip', $r->getOrigPostal());
}

Isso corrigiu o problema para mim.

Editar: Isso só funcionará se você tiver inserido seu CEP de 5 dígitos na origem da remessa.

monosodiumgunnar
fonte
Eu não sabia que era uma exigência de representante, mas o OP tem uma pergunta de acompanhamento aqui que ele disse que não poderia colocar um comentário em sua resposta: magento.stackexchange.com/questions/69946/…
Mike
11
Para sua informação, ao editar o arquivo Usps.php, coloquei o código após "$ package-> addChild ('Girth', $ girth);" e antes do colchete de fechamento. Isso está na seção Internacional do "else".
Rob Mangiafico
+ Isso resolveu o problema para mim Magento 1.9.1
Jason McCreary
Posso obter ajuda sobre o correio USPS Media -> magento.stackexchange.com/q/227667/57334
zus
2

problema corrigido do patch SUPEE-6237 para mim. as alterações no SUPEE-6237 são:

app/code/core/Mage/Usa/Model/Shipping/Carrier/Abstract.php
@@ -442,6 +442,17 @@ abstract class Mage_Usa_Model_Shipping_Carrier_Abstract extends Mage_Shipping_Mo
     }

     /**
+     * Check is Canada
+     *
+     * @param string $countryId
+     * @return boolean
+     */
+    protected function _isCanada($countryId)
+    {
+        return $countryId == 'CA';
+    }
+
+    /**
      * Check whether girth is allowed for the carrier
      *
      * @param null|string $countyDest

e

app/code/core/Mage/Usa/Model/Shipping/Carrier/Usps.php
@@ -392,7 +392,10 @@ class Mage_Usa_Model_Shipping_Carrier_Usps
             $package->addChild('Height', $height);
             $package->addChild('Girth', $girth);

-
+            if ($this->_isCanada($r->getDestCountryId())) {
+                //only 5 chars available
+                $package->addChild('OriginZip', substr($r->getOrigPostal(), 0, 5));
+            }
             $api = 'IntlRateV2';
         }
         $request = $xml->asXML();
@@ -477,6 +480,9 @@ class Mage_Usa_Model_Shipping_Carrier_Usps
                      else {
                         if (is_object($xml->Package) && is_object($xml->Package->Service)) {
                             foreach ($xml->Package->Service as $service) {
+                                if ($service->ServiceErrors->count()) {
+                                    continue;
+                                }
                                 $serviceName = $this->_filterServiceName((string)$service->SvcDescription);
                                 $serviceCode = 'INT_' . (string)$service->attributes()->ID;
                                 $serviceCodeToActualNameMap[$serviceCode] = $serviceName;

espero que isso ajude alguém.

Sohan
fonte
0

Embora a postagem original fosse sobre o Magento v1.9, eu queria postar isso para outras pessoas que estão enfrentando o mesmo problema com o Magento v2, pois ele ainda existe.

A correção requer a adição das seguintes linhas antes da linha $api = 'IntlRateV2'; no arquivo vendor/magento/module-usps/Model/Carrier.php.

$package->addChild('OriginZip', $r->getOrigPostal());
$package->addChild('AcceptanceDateTime', date('c'));
$package->addChild('DestinationPostalCode', $r->getDestPostal());

Você pode ver a solicitação de recebimento sobre esse problema do magento2 aqui: https://github.com/magento/magento2/pull/8041

jaywilliams
fonte