POST/api/public/access-request/paypal/capture-order
Capture (finalise) une commande précédemment créée et approuvée par l'acheteur dans le checkout PayPal. Autoritatif côté serveur — le client ne peut influencer aucun montant.
`POST /api/public/access-request/paypal/capture-order` finalise une commande PayPal qui a déjà été créée puis approuvée par l’acheteur dans le checkout PayPal. Cette étape ne sert pas à calculer le montant. Le serveur reste la source autoritative pour le prix, le forfait et les éventuels frais de configuration. Le client ne doit jamais envoyer un montant libre destiné à remplacer les valeurs enregistrées côté serveur. La route est publique et ne nécessite pas de session de tableau de bord. Elle n’est pas idempotente, car une capture réussie produit un effet de paiement définitif. Le bouton de confirmation doit être désactivé pendant le traitement afin d’éviter plusieurs appels concurrents. Une nouvelle tentative automatique après une réponse inconnue est risquée : le client doit d’abord vérifier l’état de la commande ou utiliser le mécanisme prévu par le flux PayPal avant de relancer une capture. Le corps de la requête doit contenir l’identifiant de la commande créée lors de l’étape précédente et les informations exigées par le flux d’accès. L’identifiant doit provenir du serveur, pas d’une valeur construite par le navigateur. Une commande non approuvée, inconnue, déjà capturée ou associée à un autre contexte doit être rejetée. Les erreurs PayPal externes doivent être présentées comme des échecs de paiement, distincts des erreurs locales de validation. Un déroulement réaliste est le suivant : le client charge la configuration PayPal publique, crée une commande avec l’endpoint dédié, redirige ou ouvre le checkout PayPal, attend l’approbation de l’acheteur puis appelle `capture-order`. Après une capture réussie, l’application poursuit le traitement du dossier d’accès selon le forfait sélectionné. Une configuration Individuell peut toujours nécessiter une vérification manuelle par Zentor même si le paiement a été accepté. Les identifiants PayPal, réponses complètes du fournisseur et données personnelles ne doivent pas être enregistrés dans des journaux publics. L’interface doit conserver uniquement les informations nécessaires au suivi et afficher un état clair : paiement réussi, refusé, annulé ou encore en attente. Cette route n’est pas destinée à une utilisation générale en dehors du parcours d’accès documenté.
Authentification et sécurité
Aucune authentification requise
strictLimiter (10 Req/15min, lié à l’IP).
Idempotent: Non
Paramètres
order_id(body, string, requis)— L'identifiant de commande PayPal renvoyé par paypal/create-orderExemple de requête
{"order_id":"<PAYPAL_ORDER_ID>"}Exemple de réponse
{"ok":false,"error":"UNKNOWN_ORDER","message":"Unbekannte Bestellung."}Codes d'erreur
400 ORDER_ID_REQUIRED — order_id manquant.404 UNKNOWN_ORDER — order_id ne correspond à aucune commande connue créée au préalable.409 CAPTURE_NOT_COMPLETED — Le paiement n'a pas encore été approuvé par l'acheteur.502 PAYPAL_CAPTURE_FAILED — Erreur de communication avec PayPal.Preuve de test en direct
Les deux cas négatifs sans configuration PayPal ont été vérifiés en direct (400 ORDER_ID_REQUIRED, 404 UNKNOWN_ORDER). Un cas de succès réel nécessiterait une véritable transaction de paiement PayPal en sandbox avec approbation de l'acheteur, ce qui était exclu par la consigne de test (aucun appel réel à un prestataire de paiement).