Problem mit PayPal Zahlungen aus Übersee

Hallo! SW 3.5.4 und SW 3.5.5: Kunden aus Japan können nicht mit PayPal bezahlen. Beim Checkout steigt Shopware aus und bring folgende Fehlermeldung (gekürzt): [quote]Shipping Address State Empty The field Shipping Address State is required in Shopware/Plugins/Default/Frontend/Paypal/Paypal.php on line 43 Stack trace: #0 Enlight/Controller/Action.php(70): Shopware_Controllers_Frontend_Paypal->errorApiAction() #1 Enlight/Controller/Dispatcher/DispatcherDefault.php(329): Enlight_Controller_Action->dispatch(‘errorApiAction’) #2 Enlight/Controller/Front.php(99): Enlight_Controller_Dispatcher_DispatcherDefault->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp)) #3 Shopware/Bootstrap.php(33): Enlight_Controller_Front->dispatch() #4 Enlight/Application.php(86): Shopware_Bootstrap->run() #5 shopware.php(6): Enlight_Application->run() #6 {main} [/quote] PayPal Express im Warenkorb ist nicht aktiviert! Sonstige Änderungen an den Schnittstellen wurden nicht vorgenommen. Hat jemand das gleiche Problem und eine Lösung dazu?

PayPal schreibt mir zu dem Problem: [quote]Um Ihr Problem zu lösen würde ich Ihnen raten die paymentrequest_0_shiptostate im SetExpressCheckout mit zu übergeben und Ihren Kunden die Möglichkeit zu geben ein Bundesland/Region einzugeben. Sollten sie einen Drittanbieter Shop oder Drittanbieter Software verwenden so würde ich Ihnen hier empfehlen Ihren Anbieter zu kontaktieren und dort nachzufragen wie genau sie ein Bundesland an paypal senden können. [/quote] Das Feld Bundesland (State) ist bei Shopware in der Rechnungs- oder Lieferadresse gar nicht vorgesehen. Kann das sein? Habe ich da was übersehen oder hat da Shopware was übersehen?

Das Problem ist auch schon mehrmals im Shopware Trac mit hoher Priorität eingegeben, aber auch nach Wochen ist noch nicht einmal ein Verantwortlicher seitens Shopware definiert. M.E. handelt es sich dabei um Basics, um die man sich mit Priorität kümmern sollte. :thumbdown:

Wir haben den Fehler auch heute endeckt.

Als Basics würde ich das nicht bezeichnen. Das ist schon sehr speziell - zumal man generell sicher viel mehr Punkte, auch rechtlicher Natur, beachten muss. Man kann ja mal nicht eben in die USA liefern nur weil der Shop das ggf. kann. :wink: Du müsstest generell im ersten Step die Registrierung anpassen und dort dann ein neues Feld erstellen. Das muss dann auch bei Paypal integriert und übermittelt werden… Dabei sind dann die Anforderungen im Detail zu prüfen. PS: nur weil du dafür ein Ticket gemacht hast heißt das ja nicht, dass man derartige neue Funktionen direkt umsetzt, oder? 99% aller Shopbetreiber benötigen das auch sicher nicht. Daher ist dort die Prio nur bei dir so hoch :-), was ich aber auch nachvollziehen kann. Vielleicht schafft Shopware das ja mit bei der 4er Version zu berücksichtigen.

Hallo Harald, das sehe ich anders. Ich habe einen Shop erworben mit einer PayPal-Schnittsstelle und einer voreingestellten Länderliste, mit dem ich auch internationale Kunden erreichen kann und will. Einen Hinweis, dass bestimmte Länder nicht über PayPal abgewickelt werden können, habe ich nicht gefunden. Da erwarte ich, dass das auch funktioniert. Und wenn es nicht funktioniert, dass seitens Shopware :shopware: für Abhilfe gesorgt wird oder zumindest ein Feedback gegeben wird. Zu dem Thema sind Tickets im System - zum Teil mehrerer Monate alt - zu denen es keinen Response gibt, oder habe ich den übersehen? Dafür habe ich kein Verständnis.

Hi Robert, die Tickets liegen im Ticketsystem ja vor. Die müssten auch vom Status bereits geändert sein, aber ggf. wurde das nicht in Public-Trac synchronisiert. Das können wir aber prüfen. Generell ist das aber schon ein spezieller Fall, da du zusätzlich auch des Staat abfragen musst in der Registrierung, was in unserem Bereich nicht gerade üblich ist. Des Weiteren haben die Länder in Shopware noch nichts mit der Kompatibilität zu jeder Zahlungsschnittstelle zu tun. Im Standard wird auch nur „Deutschland“ als aktives Land ausgeliefert! Das muss bei jeder Schnittstelle, auch anderen externen Schnittstellen, geprüft werden. Es gibt einige, die grundsätzlich nur in Deutschland funktionieren. Ich habe hier aber nun mal ein paar Änderungen zusammengefasst, die das Problem bereits lösen sollten. Vielleicht möchte das einer einmal testen - Gerne auch Feedback an dieser Stelle Template-Änderungen: Wir nutzen das Feld „text1“ (Freitext Feld1 der Registrierung) für die Abfrage des Staates Anlegen von templates/_local/frontend/register/billing_fieldset.tpl Inhalt: [code] {extends file=„templates/_default/frontend/register/billing_fieldset.tpl“} {block name=‚frontend_register_billing_fieldset_input_zip_and_city‘ prepend}

{se name=‚RegisterBillingLabelState‘}State: (CA = California){/se}
{/block} [/code] Anlegen von templates/_local/frontend/register/shipping_fieldset.tpl Inhalt: {extends file="templates/\_default/frontend/register/shipping\_fieldset.tpl"} {block name='frontend\_register\_shipping\_fieldset\_input\_zip\_and\_city' prepend} <label for="state">{se name='RegisterShippingLabelState'}State: (CA = California){/se}</label><input name="register[shipping][text1]" type="text" id="text1" value="{$form_data.text1}" maxlength="10" class="text required text"> {/block} Editieren der Datei: engine/connectors/paypalexpress/doPaymentSUser.php Unter $params['SHIPTOZIP'] = $userData['shippingaddress']['zipcode']; das einfügen: $params['SHIPTOSTATE'] = $userData['shippingaddress']['text1']; Diese Änderungen sind für den normalen Bezahlprozess mit vorheriger Registrierung. In der Registrierung befindet sich danach ein neues Feld „State“, welches z.B. mit „CA“ für Kalifornien befüllt werden kann. Durch die Anpassung im regulären Paypal-Modul wird das Feld dann zusätzlich übermittelt. In der Datei „DoExpressCheckoutPayment.php“ kann die Anpassung analog dazu erfolgen. BITTE VORHER TESTEN - AM BESTEN IN EINER TESTUMGEBUNG! Alternativ könnte man im Template auch ein Pulldown-Menü einbauen, statt des Input-Feldes. Dort könnte man die Bezeichnungen vorgeben, die erwartet werden: https://cms.paypal.com/us/cgi-bin/?cmd= … vinceCodes Kurzes Beispiel für ein Pulldown: {extends file="templates/\_default/frontend/register/billing\_fieldset.tpl"} {block name='frontend\_register\_billing\_fieldset\_input\_zip\_and\_city' prepend} <label for="state">{se name='RegisterBillingLabelState'}State:{/se}</label><select name="text1" id="text1" class="normal"> <option value="">keine Auswahl</option> <option value="AB" selected>Alberta</option> <option value="BC" selected>British Columbia</option> <option value="CA" selected>California</option> </select> {/block}

1 „Gefällt mir“

Bei mir text1 wird nicht gespeichert.

solange sich die mitgelieferten zahlungsplugins nicht an die eigenen vorgaben ([url=http://wiki.shopware.de/Zahlungsplugins-entwickeln_detail_679_444.html]http://wiki.shopware.de/Zahlungsplugins ... 9_444.html[/url]) halten wird das ein ziemlich unsauberes gefrickel. wenn überhaupt :( mal exemplarisch: ./engine/connectors/saferpay/doPayment.php ./engine/core/class/paymentmeans/saferpay.php ./engine/core/class/sAdmin.php::sValidateStep3() was hat das mit Zend/Enlight bzw. mit der vorgabe zu tun?

Hi, die Antwort ist einfach: das sind Schnittstellen auf der alten Shopware 3.0.x Basis die du nennst. Die neue API gibt es erst seit Shopware 3.5.4, wie im aufgeführten Artikel genannt, und wird somit bei allen neuen Schnittstellen genutzt bzw. bei Schnittstellen die umgestellt werden. Hier gibt es seitens der shopware AG z.B. die Schnittstellen BillSAFE oder EOS (Clickpay) auf neuer Basis, welche natürlich auch als Vorlage für neue und eigene Zahlungsschnittstellen genutzt werden können. Damit das zukünftig sauber und einheitlich gestaltet und insgesamt vereinfacht wird wurde diese API inkl. Doku erstellt :wink:

Hallo, bei uns tritt ein ähnliches Problem auf. Für unseren Kunden erstellen wir einen Webshop, welcher ausschließlich innerhalb der USA, Ware vertreibt. Das Problem hierbei ist, dass eine Zahlung per PayPal nicht möglich ist. Die PayPal-API bricht mit dem Fehler: 10729 ab: ACK: Failure VERSION: 53.0 BUILD: 2271164 L\_ERRORCODE0: 10729 L\_SHORTMESSAGE0: Shipping Address State Empty L\_LONGMESSAGE0: The field Shipping Address State is required L\_SEVERITYCODE0: Error] Also hab ich die oben genannten Änderungen vorgenommen. Leider speichert es, wie bei technikexpert, die Eingaben vom Bundesstaat, in der Datenbank nicht. So hab ich vorrübergehend den Bundesstaat, in der DB manuell eingetragen. Durch diese Änderung wird der Zahlungsprozess mit PayPal ausgeführt. Jedoch wird ein Fehler ausgelöst, wenn man vom PayPal zum Shop wieder zurück geleitet wird: Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "string:" on line 48 " {if $additional.payment.name == \"debit \"} " - Unexpected "\", expected one of: "{" , "$" , "identifier" , LDELIF , LDELFOR , LDELFOREACH , "closing tag" , INTEGER , "+" , "-" , "(" , "(!,not)" , TYPECAST , HEX , "." , SINGLEQUOTESTRING , "#" , "[" , """' in /XXX/shopware/engine /Enlight/Vendor/Smarty/libs/sysplugins/smarty\_internal\_templatecompilerbase.php:404 Stack trace: #0 /XXX/html/shopware/engine/Enlight/Vendor/Smarty/libs/sysplugins /smarty\_internal\_templateparser.php(2699): Smarty\_Internal\_TemplateCompilerBase-\>trigger\_template\_error() #1 /XXX/shopware/engine /Enlight/Vendor/Smarty/libs/sysplugins/smarty\_internal\_templateparser.php(2764): Smarty\_Internal\_Templateparser-\>yy\_syntax\_error(10, '\') #2 /XXX/html/shopware/engine /Enlight/Vendor/Smarty/libs/sysplugins/smarty\_internal\_smartytemplatecompiler.php(51): Smarty\_Internal\_Template in /XXX/html/shopware/engine/Enlight/Vendor/Smarty /libs/sysplugins/smarty\_internal\_templatecompilerbase.php on line 404 Wie kann man diesen Fehler fixen? Für Hilfe wäre ich echt dankbar. Viele Grüße shopfan

Hast du magic_quotes aktiv? Zusätzlich ist die eMail-Vorlage sORDER defekt. Das kann du an folgendem Auszug der Fehlermeldung erkennen: — Unexpected “” — Da sind Backslashes in der eMail-Vorlage Die Meldung deutet darauf hin und steht nicht im Zusammenhang mit Paypal bzw. deinen anderen Änderungen.

1 „Gefällt mir“

Vielen Dank, hatte vergessen auf dem Testserver die magic_quotes auszuschalten, wie peinlich :smiley: Jetzt funktioniert der Checkout über PayPal. Bleibt nur noch das Problem mit der Speicherung des Bundesstaates. Bei der Registrierung wird der Bundesstaat-Code nicht in der DB gespeichert. Wenn der Kunde jedoch nachträglich seine Daten ändert, wird der Bundesstaat in der DB gespeichert. Ich vermute mal das es an dem Viewport liegt, welcher die POST-Daten speichert (falls ich es richtig verstanden hab :slight_smile: ).Jedoch finde ich die Viewport-Datei „s_register2.php“ oder „s_registerFC.php“. Oder gibt es noch eine andere Möglichkeit? Viele Grüße shopfan

Das mit der Speicherung kann ich bestätigen. der State wird nicht gepeichert bei der Registrierung. Trägt man den Wert aber im Kundenkonto nach, so geht es…

Ich kann das Freitext-Feld in der Registrierung direkt problemlos mit abspeichern. Habt ihr vielleicht schon ein angepasstes/abgeleitetes Template oder Plugins, die dort bereits ansetzen? PS: Für die Freitext-Felder und Telefon/Geburtsdatum Pflichtfeld/anzeigen etc. kommt jetzt in Kürze auch ein Plugin. Dann kann man das updatesicher und bequem über das Backend steuern.

1 „Gefällt mir“

Hi Sebastian, nein, sonst ist an dem Templates nichts geändert. Kann es an der SW Version liegen? Ich habe hier noch 3.5.4 Danke

mmm. eine 3.5.4 habe ich nicht mehr :wink: In 3.5.5 klappte das auf jeden Fall - Das habe ich gerade auch noch einmal getestet. Da viele Kunden aber die Freitext-Felder nutzen sollte das auch in der Vorgängerversion so möglich sein. Bisher habe ich, außer hier, nicht anderes gehört oder festgestellt.

mhhh, komisch. Darf ich dir mal den Link des Shops schicken?

Hey Sebastian, ich habe es eben in meinem Testshop unter 3.5.5 versucht. Aber auch mit dem gleichen Problem. Bei der Neuregistrierung wird das text1 Feld (state) nicht übernommen. Mache ich es im Kundenmenü, so geht es. http://ottscho.testshop.de Sicher das es bei dir geht :wink:

Morgen Sebastian, kannst du dies bitte noch mal prüfen? Wie schauts bei den anderen aus. Geht es bei euch?