J'ai parcouru plusieurs articles à ce sujet, mais je n'arrive pas à identifier le problème. Je crée une page de don pour une organisation et j'en ai besoin pour vérifier si PayPal fonctionne même. C'est une erreur entre mon formulaire et app.post. L'erreur que j'obtiens est: Impossible de POST / chemin. Je ne peux pas utiliser / car c'est le chemin d'accès à mon formulaire de contact
<div class="container-contact100-form-btn"> <h2>Donación de 10 USD</h2> <form action="/done" method="post"> <button type="submit" class="btn btn-warning" value="Buy">Donación</button> </form> </div>
Forme:
app.get("/donate", (req, res) => res.sendFile(__dirname + "views/donate.html")); app.post("/done", (req, res) => { const create_payment_json = { intent: "sale", payer: { payment_method: "paypal", }, redirect_urls: { return_url: "https://asociacioncorazondiverso.org/donate.html", cancel_url: "https://asociacioncorazondiverso.org/donate.html", }, transactions: [ { item_list: { items: [ { name: "Donación", sku: "001", price: "10.00", currency: "USD", quantity: 1, }, ], }, amount: { currency: "USD", total: "10.00", }, description: "Donación", }, ], }; paypal.payment.create(create_payment_json, function (error, payment) { if (error) { throw error; } else { for (let i = 0; i < payment.links.length; i++) { if (payment.links[i].rel === "approval_url") { res.redirect(payment.links[i].href); } } } }); });
5 Réponses :
Votre code tel que vous avez publié sur GitHub et fourni dans les commentaires sur la question initiale montre une différence frappante entre ce que vous avez publié ici et ce avec quoi vous travaillez réellement.
Ci-dessus, le paramètre d' action
votre <form>
est clairement défini sur "/done"
(ce qui semble correct, car c'est le chemin que vous avez défini dans le code de votre serveur de réception).
Cependant, le code que vous semblez réellement travailler avec le référencement est /path
dans la même <form>
déclaration d'élément:
<form action="/done" method="post"> <button type="submit" class="btn btn-warning" value="Buy">Donación</button> </form>
Ajustez le paramètre d' action
pour qu'il corresponde à ce que vous avez dans votre question ci-dessus ( "/done"
) afin que votre document HTML POST
s au chemin / point final correct que vous avez défini.
<form action="/path" method="post"> <button type="submit" class="btn btn-warning" value="Buy">Donación</button> </form>
ils sont tous deux définis comme chemin maintenant, mais j'obtiens toujours cette erreur: Impossible de POST / chemin
Je reçois maintenant une variable de corps non résolue dans webstorm: let textBody = FROM: ${request.body.name} EMAIL: ${request.body.email} MESSAGE: ${request.body.message}
; J'ai app.use (express.json ()); app.use (express.urlencoded ({extended: false})); // il s'agit de gérer les données encodées en URL
J'ai vu une erreur de syntaxe dans votre fichier server.js sur votre lien github pour ce code
app.post("/", function(request, response) {
cette partie n'est pas fermée correctement, sinon votre code fonctionne si vous utilisez correctement les chemins.
J'ai fermé cela en obtenant toujours cette erreur lorsque je clique sur mon bouton de don: Impossible de POST / chemin
ses vues / chemin, pas seulement chemin. app.post ( views/path
, (req, res) => *
Je l'ai changé. Je dis toujours un chemin non défini dans mon fichier html. Lorsque j'ai fermé les balises, je reçois maintenant une variable de corps non résolue que j'ai publiée sur stackoverflow et j'ai chargé le middleware bodyparser: stackoverflow.com/questions/64785920/unresolved-body-variabl e
Correction de mon serveur ne pouvant pas POST de vues / chemin
Le dernier code envoyé à github vérifie donate.html et server.js: github.com/lebaneseblonde252/AsocicaionCorzonDiverso
J'ai apporté des modifications, veuillez vérifier ce lien
Essayez de conserver l'URL complète de l'API
<form action="http://localhost:3030/done" method="post"> <button type="submit" class="btn btn-warning" value="Buy">Donación</button> </form>
Bonsoir et si vous changez de code
app.post, app.get to const router = express.Router(); router.get('/done', (req, res) => { // do smth }); app.use('/', router); app.use(router);
Il devrait fonctionner pour vous. Essayez juste;)
Il y a un problème de crochets dans le fichier server.js que vous avez hébergé sur github. Les routes de publication sont définies dans la route / sendmail. Déplacez-les à l'extérieur et cela devrait fonctionner.
Recevez-vous la soumission du formulaire sur votre console?
Non, je ne reçois pas cela lorsque je soumets le formulaire
Pouvez-vous publier le code complet de l'extrait supérieur au lieu de publier la moitié d'un extrait?
J'en ai ajouté d'autres ne me laisse pas publier tout le code
@Sharkhan des suggestions
Code source @Shafkhan du tutoriel: github.com/gauti123456/PaypalNode.js/blob/master/index.js
J'ai exécuté votre application sur mon ordinateur et cela a fonctionné. Il redirige vers la page de paiement PayPal.
Ce n'est pas sur mon mien quel pourrait être le problème? J'ai également mes informations de formulaire de contact sur ce fichier server.js.
@Shafkhan Voici tout mon code: github.com/lebaneseblonde252/AsocicaionCorzonDiverso
Pouvez-vous créer une opération CRUD, la pousser vers github avec le fichier package.json et partager avec moi le lien s'il vous plaît?
Fait voici le lien: github.com/lebaneseblonde252/AsocicaionCorzonDiverso
@Shafkhan Voici le lien.
Dans votre serveur, vous avez
views/path
non/path
mais en html, vous avezpath
. Avez-vous vérifié cela?@esqew Aucune chance que ce soit le cas. Vous pouvez trouver mon code ici: github.com/lebaneseblonde252/AsocicaionCorzonDiverso
@ lebaneseblonde252 À l'avenir, veuillez noter qu'il est mal vu de ne pas inclure d' exemple minimal et reproductible dans le corps de votre question en établissant un lien vers des sources externes. Les liens externes ont tendance à se rompre et à supprimer la plupart de toute valeur pour les futurs visiteurs de votre question. Au lieu de cela, modifiez votre question pour inclure les parties pertinentes de votre code afin de mieux aider ceux qui essaient de vous aider. Voir aussi: Comment demander .
@SagarV J'ai déjà essayé cela ne change rien.
L'erreur "Cannot POST" signifie généralement que l'itinéraire n'est pas défini. C'est exactement le cas dans le code téléchargé sur GitHub. Cela ressemble à un désordre, et il définit la route
post "/"
à l'intérieur du gestionnaire de routepost "/sendmail"
.