Błędy adresu wysyłki Paypal

12

Próbuję przetestować mój sklep za pomocą PayPal Sandbox . Otrzymuję 2 różne błędy w 2 różnych sytuacjach.
1. Wszystko działa dobrze, aż do sfinalizowania zamówienia w PayPal. Następnie otrzymaj wiadomość:

Przepraszamy, PayPal nie zezwala mieszkańcom Stanów Zjednoczonych na wysyłanie zakupów do (nigdzie)

2. Druga sytuacja to zmiana adresu wysyłki kupującego na US. Na pierwszej stronie w paypal pojawia się następujący błąd:

Nie można przetworzyć płatności. Skontaktuj się ze sprzedawcą, ponieważ podany przez niego adres wysyłki jest nieprawidłowy, a sprzedawca zażądał, aby Twoje zamówienie zostało wysłane na ten adres.

Dowiedziałem się tutaj , że dla wielu to problem. Od tutaj okazało się, że jest coś zrobić z address_override metody i tu proponuje, aby go wyłączyć.
Czy istnieje sposób, aby to wyłączyć w Magento? Czy można to bezpiecznie wyłączyć? Dlaczego w ogóle istnieje? lub jakie są inne rozwiązania? :

Znalazłem metodę adres_przekonania w magento pod adresem

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

Zmieniono na „0” i teraz działa piaskownica paypal. Żadnych błędów. Ale jak mogę to zrobić bez zmiany plików rdzenia Magento? i czy to jest bezpieczne?

ruuter
źródło
1
Chciałbym wskazać coś jeszcze innym cierpiącym z powodu testów Paypal. Uruchomiłem go po wyłączeniu nadpisywania adresu, ale potem utknąłem na statusie „Przeglądu płatności” w systemie PayPal. Okazuje się, że musisz mieć tę samą walutę w ustawieniach Magento, jak na koncie piaskownicy Paypal. W przeciwnym razie paypal nigdy nie zwolni IPN w celu zrealizowania zamówienia.
ruuter

Odpowiedzi:

7

Jeśli nie chcesz zmieniać podstawowych plików, możesz wykonać następujące czynności:

  1. Utwórz foldery Mage/Paypal/Model/Apipod/app/code/local/
  2. Skopiuj plik Standard.phpz/app/code/core/Mage/Paypal/Model/Api
  3. Wklej plik Standard.phpdo/app/code/local/Mage/Paypal/Model/Api
  4. Zmień linię 238 z
$ request ['address_override'] = 1;

do

$ request ['address_override'] = 0;
Omar Faruk Sharif
źródło
7

Ten address_overrideparametr służy do ustawienia adresu wysyłki wysyłanego przez sklep Magento do Paypal jako adresu wysyłki zamiast adresu wysyłki klienta zapisanego po stronie Paypal.

Jeśli address_overrideustawione na 1, co ma miejsce w Magento, Paypal zweryfikuje adres wysyłki. Jeśli parametr jest ustawiony na 0, prawdopodobnie nie. Upewnij się więc, że wysyłasz prawidłowy i dobrze sformatowany adres do Paypal.

Natrafiłem na ten problem z powodu braku wartości „stanu”. Paypal akceptuje tylko skróty stanowe, takie jak „CA” dla „California”. W innych krajach stany mogą być domyślnie niedostępne w instalacji Magento, np. W Meksyku.

Czy w kasie dostosowałeś jakieś pola adresu wysyłki?

mecze
źródło
2

Sprawdź odpowiedzi na przepełnienie stosu:
/programming/5978153
/programming/11281543

Zasadniczo szybkim i brudnym sposobem jest skopiowanie całego pliku do swojego app/code/local/Mageświata, ale byłoby jeszcze lepiej w przypadku aktualizacji, gdybyś mógł przeciążyć tylko jedną samotną funkcję.

Jeśli nie, skorzystaj z Github do kontroli wersji. Uratowało mnie to nie raz! Możesz łatwo śledzić wszystkie zmiany, nawet jeśli jesteś zły i edytujesz podstawowe pliki.

Chris K.
źródło
Dziwię się, że nie ma lepszego sposobu na zrobienie tego, nie wspominając już o dziwności tego problemu istniejącego w Magento. Powinna istnieć opcja zaplecza, jeśli takie błędy wydają się być powszechne od pewnego czasu. Myślę, że użyję brudnego lokalnego podejścia do plików, bo piszę nowy moduł, bo wydaje się na razie trochę za dużo :) Wrócę głębiej ... i tak w ogóle!
ruuter
Nie jestem już zaskoczony niczym, co robi Magento.
Chris K
1
to nie brzmi obiecująco: /
ruuter