Comment forcer la redirection vers une autre page que le success_url dans Stripe Checkout?


Le programmeur

QUESTION:

J'utilise actuellement un webhook: à la checkout.session.completedréception de l' événement, l'utilisateur est redirigé vers la success_url par défaut même si j'essaye de le rediriger vers une autre page avec res.redirect ("/ page") (Node.js). N'y a-t-il vraiment aucun moyen de le rediriger vers une autre page en cas d'échec de mon code d'exécution? (Autrement dit: le paiement réussit, mais le code d'exécution échoue, donc la redirection vers success_url n'est pas appropriée)


RÉFÉRENCE:

https://stripe.com/docs/payments/checkout/one-time

https://stripe.com/docs/payments/checkout/fulfillment#webhooks

"Le webhook checkout.session.completed est envoyé à votre serveur avant que votre client ne soit redirigé. Votre accusé de réception de webhook (tout code d'état 2xx) déclenchera la redirection du client vers success_url"


CE QUE J'AI ESSAYÉ:

Chaînage du statut res.status (401) d'Express.js 4 vers une redirection

Donc, si je devais envoyer un code de statut 4xx, cela ne devrait-il pas empêcher la redirection success_url? C'est bien ce que j'observe.

Mais je n'arrive pas à rediriger vers une autre page. J'ai essayé: 

res.status(401).location('/submit/wait/').end();
res.redirect(401, '/submit/wait/');
res.set('Content-Type', 'text/html');
res.status(401).send('<!DOCTYPE html><html><head><meta http-equiv="refresh" content="0; url=/submit/wait"></head></html>`);Is there really no way to then just redirect to another page ?  

CODE

router.post('/webhook', bodyParser.raw({type: 'application/json'}), (req, res) => {

    const sig = req.headers['stripe-signature'];
    let event;

    try {
        event = stripe.webhooks.constructEvent(req.rawBody, sig, endpointSecret);
    } catch (err) {
        return res.status(400).send(`Webhook Error: ${err.message}`);
    }

    if (event.type === 'checkout.session.completed') {

        const session = event.data.object;

        (async () => {

            try {
                //FULFIL ORDER CODE

            } catch(e) {
                console.log("ERROR FULFILLING ORDER: "+e);


                res.status(401).location('/submit/wait/').end();

            }
        })();
    }
    else {
        console.log("DEFAULT RESPONSE");

        // Return a response to acknowledge receipt of the event
        res.json({received: true});
    }

});
Justin Michael

L' checkout.session.completedévénement envoyé à votre point de terminaison webhook n'est là que pour vous informer que la session de paiement est terminée. Vous ne pouvez pas utiliser la notification d'événement pour modifier la session de paiement de quelque manière que ce soit au-delà d'une réponse par succès ou échec.

La raison pour laquelle la redirection du client est retardée jusqu'à ce que vous répondiez à l' checkout.session.completedévénement est de vous permettre d'effectuer des tâches d'exécution sur votre serveur avant que l'utilisateur ne soit redirigé vers le success_url(comme la mise à jour de votre base de données, la réalisation d'autres appels d'API, etc.). Cela garantit que le client arrive sur une page qui reflète son achat réussi.

Le success_urllui-même ne peut pas être modifié à ce stade du processus, mais vous pouvez configurer une page sur votre serveur qui redirigera l'utilisateur vers la page de votre choix en fonction de l'ID de session de paiement et le définira success_urlsur cette page. Vous pouvez inclure l'ID de session de paiement dans votre en success_urlutilisant l' {CHECKOUT_SESSION_ID}espace réservé .

Articles connexes


Redirection vers une autre page dans Django

Luis Rodriguez Je travaille dans un projet à Django où quelqu'un essaie de remplir les informations de certains patients et après avoir appuyé sur le bouton d'envoi, je voudrais le rediriger vers une page avec la liste de tous les patients existants, j'essaie

Redirection vers une autre page à la condition `if`

HDS Ici, après avoir inséré avec succès les données dans la base de données, je veux que l'utilisateur soit redirigé vers la page de connexion, mais je ne suis pas sûr de la if(condition) ici. $stmt = "INSERT INTO users (username,first_name,last_name,email,pas

Redirection vers une autre page dans le framework ionique v3

Varuni NR Je suis nouveau dans le cadre ionique. J'essaie de rediriger vers une autre page en cliquant sur le bouton dans la version 3 du framework ionique. J'ai essayé location()et go()fonctionne mais cela n'a pas fonctionné. Voici mon code dans newpage.html: