Hallo zusammen,
hatte einer von euch auch ein Problem mit dem Paypal Express Checkout („Direkt zu Paypal“) und der gesetzten Eigenschaft das die Telefonnummer bei Registrierung / Kauf ein Pflichtfeld sein soll. Wenn ja, wie war dort eure Lösung / Erfahrung?
Meine Situation ist im Moment wie folgt:
Ich richte ein Shopware 6 (Version 6.3.0.1) Shop ein. Dort soll die Angabe der Telefonnummer bei der Registrierung / Kauf ein Pflichtfeld sein. Dies ist auch über Einstellungen > Login / Registrierung möglich.
Problem ist aber das beim nutzen des Paypal Express Checkouts Button (welches durch das Shopware Paypal Plugin in der Storefront angezeigt wird), nicht wie erwartet auf die Abschlussseite der Bestellung gelangt, sondern auf die Registrierungsseite. Dort sollen nochmal alle Kundendaten angeben werden.
In den Shopware Log File finde ich dazu:
request.ERROR: Uncaught PHP Exception Shopware\Core\Framework\Validation\Exception\ConstraintViolationException: "Caught 1 violation errors." at /html/shopware/vendor/shopware/core/Checkout/Customer/SalesChannel/RegisterRoute.php line 253 {"exception":"[object] (Shopware\\Core\\Framework\\Validation\\Exception\\ConstraintViolationException(code: 0): Caught 1 violation errors. at /html/shopware/vendor/shopware/core/Checkout/Customer/SalesChannel/RegisterRoute.php:253)"} []
Lasse ich mir diese Exception ausgeben, erhalte ich folgende Werte:
object(Symfony\Component\Validator\ConstraintViolationList)#1402 (1) {
["violations":"Symfony\Component\Validator\ConstraintViolationList":private]=>
array(1) {
[0]=>
object(Symfony\Component\Validator\ConstraintViolation)#2367 (10) {
["message":"Symfony\Component\Validator\ConstraintViolation":private]=>
string(35) "Dieser Wert sollte nicht leer sein."
["messageTemplate":"Symfony\Component\Validator\ConstraintViolation":private]=>
string(31) "This value should not be blank."
["parameters":"Symfony\Component\Validator\ConstraintViolation":private]=>
array(1) {
["{{ value }}"]=>
string(4) "null"
}
["plural":"Symfony\Component\Validator\ConstraintViolation":private]=>
NULL
["root":"Symfony\Component\Validator\ConstraintViolation":private]=>
NULL
["propertyPath":"Symfony\Component\Validator\ConstraintViolation":private]=>
string(27) "/billingAddress/phoneNumber"
["invalidValue":"Symfony\Component\Validator\ConstraintViolation":private]=>
NULL
["constraint":"Symfony\Component\Validator\ConstraintViolation":private]=>
object(Symfony\Component\Validator\Constraints\NotBlank)#1398 (5) {
["message"]=>
string(31) "This value should not be blank."
["allowNull"]=>
bool(false)
["normalizer"]=>
NULL
["payload"]=>
NULL
["groups"]=>
array(1) {
[0]=>
string(7) "Default"
}
}
["code":"Symfony\Component\Validator\ConstraintViolation":private]=>
string(36) "c1051bb4-d103-4f74-8988-acbcafc7fdc3"
["cause":"Symfony\Component\Validator\ConstraintViolation":private]=>
NULL
}
}
}
Nach meine ersten Recherchen kann man beim Paypal Händlerkonto, die Übertragung der Telefonnummer aktivieren. Dies habe ich darauf bei dem Betroffenden Händlerkonto gemacht. Darauf sehe ich nun aber im Logfile des Paypal Plugins, das von Paypal die Telefonnummer des Kunden übermittelt wird. Trotzdem wird beim Verarbeiten der Anfrage die Exeception geworfen.
Nun stellt sich mir die Frage, wie man am elegantesten das Problem lösen kann und welcher der eleganteste Weg ist.
Gruß
laurentius