Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
paypal_plus [2017/06/08 18:26] – [Oxid] gerald | paypal_plus [2024/02/29 13:36] (aktuell) – Externe Bearbeitung 127.0.0.1 |
---|
| |
Mein Verdacht lt. metadata.php (PayPal): 'payment' => 'payp/paypalplus/controllers/payppaypalpluspayment', | Mein Verdacht lt. metadata.php (PayPal): 'payment' => 'payp/paypalplus/controllers/payppaypalpluspayment', |
| |
| OK, der Ajax-Request hat offenbar nicht (nur) Sicherheitsaspekte. Die überlagernde Mathode validatePayment() in der 'payp/paypalplus/controllers/payppaypalpluspayment.php' updated anscheinend das PayPal-Payment.Offenbar wird die Methode nicht ausgeführt, wenn mein Modul geladen ist. |
| |
| OK, das ist es auch nicht. /payppaypalpluspayment.php wird ausgeführt. Bei der Funktion _updatePayment() (ca. Z. 374) fibt es eine IF-Abfrage: |
| <code> |
| $oShop = paypPayPalPlusShop::getShop(); |
| if ($oShop->getValidator()->isPaymentCreated() and $oShop->getRequestParameter('ajax')) { |
| </code> |
| Der 1. Teil der Abfrage (isPaymentCreated()) ist nicht 1. Daher gibt es einen Fehler. Bin ein Stück weiter. |
| |
| Jetzt weiter: im File core/payppaypalplusvalidator.php die Methode isPaymentCreated($oPayment = null) (ca. Z. 135). Der Aufruf '$mPayment = $this->getShop()->getPayPalPlusSession()->getPayment();' fibt ein (bool)false zurück, obwohl $this->getShop()->getPayPalPlusSession() bis dahin ein Objekt ist. Dann geht das folgende if ($mPayment instanceof PayPal\Api\Payment) { schief. |
| |
| Hängt es vielleicht doch damit zusammen, dass ich vor die Bestellnummer stets noch ein 'NB' setze??? Nachrecherchiert: ne, ich ändere die Bestellnummer nicht intern, sondern nur in der Repräsentation. Kann es also auch nicht sein. Versuche, bei PayPal noch ein NB davorzisetzen, wenn nötig, scheitern auch. |
| |
| Also: in der _updatePayment() kommt die InvoiceNumer MIT NB an. Wenn ich $oShop->getValidator()->isPaymentCreated("ajax") im IF unschädlich mache, gibt es Fehlermeldung, weil das Update $oPayPalPaymentHandler->update($oPayPalSession->getApiContext()); kein Objekt übergeben bekommt. ABER: Wenn ich $this->_ajaxResponseSuccess(); nach oben setze, dann kommt der korrekte Token so wie er soll und und die ganze Chose funktioniert! |
| Es liegt also tatsächlich daran, dass $oShop->getValidator()->isPaymentCreated() false ist. Offenbar kann er die (PayPal)Session nicht korrekt auslesen ($mPayment = $this->getShop()->getPayPalPlusSession()->getPayment(); in ...validator.php) . Oh. Oder die Session wird gar nicht korrekt gespeichert. |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |