Development #39491
lingo: request.body semble vide sur un POST x-www-urlencoded
0%
Description
Voir #39489, on a les logs nginx suivants :
194.4.7.132 - - [03/Feb/2020:14:35:14 +0100] "POST /lingo/pay HTTP/1.1" 302 0 "https://moncompte.cutm-ea-dev-publik.nfrance.com/tableau-de-bord/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36" "moncompte.cutm-ea-dev-publik.nfrance.com" [0.612 ms] 145.242.11.3 - - [03/Feb/2020:14:40:06 +0100] "POST /lingo/callback-payment-backend/5/ HTTP/1.1" 200 0 "-" "Jakarta Commons-HttpClient/3.1" "moncompte.cutm-ea-dev-publik.nfrance.com" [0.260 ms] 194.4.7.132 - - [03/Feb/2020:14:40:23 +0100] "POST /lingo/return-payment-backend/5/Mjc3.1iybsf.9bNfHzZmV6H0FXufYoRcDSVCwt8/?idop=06bc8230-468a-11ea-81d6-0213ad91a103 HTTP/1.1" 302 0 "https://www.tipi.budget.gouv.fr/tpa/retourwl.web?templatename=paiementwsredirect" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36" "moncompte.cutm-ea-dev-publik.nfrance.com" [0.362 ms] 194.4.7.132 - - [03/Feb/2020:14:40:24 +0100] "GET /lingo/payment-status?transaction-id=Mjc3.1iybxf.K9SOrQ3JRtFFpm6AH07yCLCw0oE HTTP/1.1" 200 2554 "https://www.tipi.budget.gouv.fr/tpa/retourwl.web?templatename=paiementwsredirect" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36" "moncompte.cutm-ea-dev-publik.nfrance.com" [0.145 ms]
qui donnent les logs combo suivants :
Feb 3 14:40:06 cutm-ea-dev-publik uwsgi[6055]: combo INFO moncompte.cutm-ea-dev-publik.nfrance.com 145.242.11.3 - r:7FF096279FD0 received payment response: 'idop=06bc8230-468a-11ea-81d6-0213ad91a103' Feb 3 14:40:06 cutm-ea-dev-publik uwsgi[6055]: combo INFO moncompte.cutm-ea-dev-publik.nfrance.com 145.242.11.3 b52f22c7aa2b49d49678ee6a66c51a r:7FF096279FD0 received known payment response with id 06bc8230-468a-11ea-81d6-0213ad91a103 Feb 3 14:40:23 cutm-ea-dev-publik uwsgi[6055]: combo INFO moncompte.cutm-ea-dev-publik.nfrance.com 194.4.7.132 b52f22c7aa2b49d49678ee6a66c51a r:7FF0962A4588 received payment response: ''
On dirait que sur un appel à return, la query string est bien récupérée, par contre sur le POST asynchrone, c'est force_text(request.body)
qui est passé à self.handle_callback() est c'est vide.
Fichiers
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
Je dis une connerie en fait le POST est bon mais la réponse redirect et reçue en POST aussi :/
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
- Fichier 0001-lingo-use-query-string-when-request-body-is-empty-39.patch 0001-lingo-use-query-string-when-request-body-is-empty-39.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
J'ai posé cette modification à la main sur la machine de dév Toulouse j'attends confirmation que ça corrige le souci.
Mis à jour par Benjamin Dauvergne il y a environ 4 ans
C'est validé par Cyril de Toulouse, maintenant on peut réfléchir si ça impacterait un autre backend mais je ne pense pas, si le POST est vide pour les autres backends c'est que quelque chose ne va pas.
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Solution proposée à Solution validée
Ok, un jour peut-être il y aura un jour un fournisseur qui compte à la fois sur le contenu du POST et de la query string, et il faudra faire évoluer la signature de backend.response() pour accepter les deux; mais en attendant, ça va passer ainsi.
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
Patch poussé pour me permettre de tagguer.
commit 5412f0a58c1b782191af2dc0b6a7ab1ab92bdf93 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Mon Feb 3 15:32:03 2020 +0100 lingo: use query string when request body is empty (#39491) Some backends (PayFiP WS) put the response in the query string of a POST.
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
lingo: use query string when request body is empty (#39491)
Some backends (PayFiP WS) put the response in the query string of a
POST.