Erros de endereço de entrega Paypal


12

Estou tentando testar minha loja com o PayPal Sandbox . Eu recebo 2 erros diferentes em 2 situações diferentes.
1. Tudo funciona bem até a ordem de acabamento no PayPal. Então receba a mensagem:

Lamentamos, mas o PayPal não permite que residentes nos Estados Unidos enviem compras para (em qualquer lugar)

2. A segunda situação é quando altero o endereço de entrega do comprador para os EUA. Recebo o seguinte erro, na primeira página do paypal:

Não foi possível processar o pagamento. Entre em contato com o comerciante, pois o endereço de entrega fornecido é inválido e o comerciante solicitou que seu pedido fosse enviado para esse endereço.

Eu descobri aqui , que isso parece ser um problema para muitos. A partir daqui , descobri que há algo a ver com o método address_override e aqui é sugerido desativá-lo.
Existe uma maneira de desativá-lo no Magento? É seguro desligá-lo? Por que está lá em primeiro lugar? ou que outras soluções existem por aí? :

Encontrei o método address_override no magento em

\ app \ code \ core \ Mage \ Paypal \ Model \ Api \ Standard.php line: 238 $ request ['address_override'] = 1;

Alterou para '0' e agora o sandbox paypal funciona. Não há mais erros. Mas como posso fazer isso sem alterar os arquivos principais do magento? e é seguro?


1
Eu gostaria de destacar algo mais para os outros que sofrem com os testes do Paypal. Consegui funcionar depois de desativar o address_override, mas fiquei preso no status 'Revisão de pagamento' no paypal. Acontece que você precisa ter a mesma moeda nas configurações do Magento e na conta da sandbox do Paypal. Caso contrário, o paypal nunca aciona o IPN para concluir o pedido.
ruuter

Respostas:


7

Você pode fazer o seguinte se não quiser alterar os arquivos principais:

  1. Crie pastas Mage/Paypal/Model/Apiem/app/code/local/
  2. Copie o arquivo Standard.phpde/app/code/core/Mage/Paypal/Model/Api
  3. Cole o arquivo Standard.phpem/app/code/local/Mage/Paypal/Model/Api
  4. Mude a linha 238 de
$ request ['address_override'] = 1;

para

$ request ['address_override'] = 0;

7

O address_overrideparâmetro está lá para definir o endereço de entrega que sua loja Magento está enviando para o Paypal como endereço de entrega, em vez do endereço de entrega do cliente salvo no lado do Paypal.

Se address_overrideestiver definido como 1, como é o caso do Magento, o Paypal validará o endereço de entrega. Se o parâmetro estiver definido como 0, supostamente não. Portanto, verifique se você está enviando um endereço válido e bem formatado para o Paypal.

Eu encontrei esse problema por causa de um valor "estado" ausente. O Paypal aceita apenas abreviações de estado como "CA" para "Califórnia". Para outros países, os estados podem não estar disponíveis na instalação do Magento por padrão, por exemplo, no México.

Você personalizou algum campo de endereço de entrega no checkout?


2

Verifique estas respostas do Stack Overflow:
/programming/5978153
/programming/11281543

Basicamente, uma maneira rápida e suja é copiar o arquivo inteiro para o seu app/code/local/Magemundo, mas seria ainda melhor para atualizações se você pudesse sobrecarregar apenas a única função.

Além disso, se ainda não estiver, use o Github para controle de versão. Ele me salvou mais de uma vez! Você pode rastrear todas as alterações facilmente, mesmo se estiver com problemas e editando arquivos principais.


Estou surpreso por não haver melhor maneira de fazer isso, sem mencionar a estranheza desse problema existente no Magento em primeiro lugar. Deve haver opção no back-end se esses erros parecerem comuns há algum tempo. Eu acho que vou usar a abordagem suja de arquivos locais, porque escrever um novo módulo parece um pouco demais por enquanto :) vou aprofundar mais ... tnx de qualquer maneira!
ruuter

Não sou mais surpreendido por nada que o Magento faça.
Chris K

1
que não parece promissor: /
ruuter
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.