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

React集成RazorPay遇TypeError及Webpack5兼容问题求助

解决React集成RazorPay的两个常见错误

错误1:TypeError: window.Razorpay is not a constructor

这个问题是因为前端未加载RazorPay的客户端脚本,直接访问window.Razorpay自然找不到构造函数,以下是两种解决方法:

方案1:通过CDN加载脚本(推荐)

在项目的public/index.html中添加RazorPay的官方CDN脚本:

<script src="https://checkout.razorpay.com/v1/checkout.js"></script>

添加后无需导入npm包,保持代码里的// import Razorpay from 'razorpay';注释状态即可正常使用window.Razorpay。

方案2:动态加载脚本(适合按需加载场景)

如果不想页面初始化时就加载脚本,可以在paymentHandler函数内动态加载:

const paymentHandler = async (e) => {
  // 检查脚本是否已加载,未加载则动态注入
  if (!window.Razorpay) {
    const script = document.createElement('script');
    script.src = 'https://checkout.razorpay.com/v1/checkout.js';
    script.async = true;
    await new Promise((resolve) => {
      script.onload = resolve;
      document.body.appendChild(script);
    });
  }

  // 后续订单请求、创建Razorpay实例的代码保持不变
}

错误2:webpack 5的polyfill缺失报错

你取消注释import Razorpay from 'razorpay';后出现这个错误,核心原因是:这个npm包是给Node.js后端生成订单用的,并非前端集成支付组件的依赖。直接删掉或注释该导入语句,就能解决这个webpack报错。

额外注意点

代码中的amount参数要注意单位:Razorpay要求金额为货币 subunits,比如使用INR时,500元需写成50000(1元=100 paise),你当前代码里的amount = 500实际对应5元,需根据实际需求调整。

内容的提问来源于stack exchange,提问作者Anurag singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 09:48:11