Node集成Mollie支付:无法在redirect/webhook URL获取paymentId
Mollie支付重定向后获取paymentId返回undefined的解决方案
核心问题分析
Mollie完成支付后会通过GET请求跳转至你配置的redirectUrl,并将支付ID以查询参数id的形式传递。你遇到的问题主要是代码错误+配置验证不到位导致的。
具体修复步骤
先验证Mollie的重定向链接格式
调用customerPayments.create后,打印返回的customerPayment对象,重点查看_links.redirect.href字段。正常情况下这个链接应该包含id参数,比如:https://1137-43-251-72-102.ngrok-free.app/payment/redirect?id=tr_7UhSN1zuXS如果链接里没有
id,说明支付请求创建时存在配置问题,需要检查Mollie客户端初始化或参数是否正确。修复重定向路由的错误代码
原代码里的req.body.id完全错误(GET请求没有请求体),而且解构写法逻辑混乱。替换为正确的查询参数获取代码:paymentRoute.get("/redirect", (req, res) => { // 直接从GET查询参数中获取Mollie传递的支付ID const paymentId = req.query.id; console.log("payment id:", paymentId); // 可选:调用Mollie API查询支付状态 // const paymentStatus = await mollieClient.payments.get(paymentId); // 处理后续业务逻辑,比如更新订单状态等 res.send(`Payment redirect received, ID: ${paymentId}`); });确认服务器接收查询参数的能力
手动访问测试链接:https://1137-43-251-72-102.ngrok-free.app/payment/redirect?id=test_123,如果控制台能打印出test_123,说明路由本身没问题;如果还是undefined,检查Express中间件配置(比如是否错误地给GET请求配置了body-parser,或者有其他修改query的中间件)。验证ngrok地址有效性
ngrok每次重启都会生成新的地址,确保代码里的redirectUrl和当前ngrok运行的地址完全一致,否则Mollie无法正确跳转。
内容的提问来源于stack exchange,提问作者Nishang Raiyani
相关产品推荐
相关产品推荐

