You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 16:05:11