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

如何为django-payments集成Razorpay/Instamojo等印度支付网关?

我完全懂你这种痛点——印度本土支付网关手续费比Cybersource友好太多,而且django-payments默认支持的网关大多在印度不好使。下面给你一步步捋清楚怎么入手,从参考dummy实现到测试,再到贡献代码的方向:

第一步:先搞懂django-payments的网关扩展机制

django-payments的dummy网关是最适合入门的参考模板,你可以重点看这几个核心部分:

  • 找到克隆的django-payments包下的payments/dummy/目录,里面的结构是所有网关的标准范式:
    • __init__.py:定义网关类,必须继承BasePaymentProcessor,核心方法包括process_payment()(处理支付发起逻辑)、process_notification()(处理支付回调)、get_form()(生成支付表单,按需实现)
    • forms.py:如果网关需要前端表单跳转,这里定义对应的表单类
    • views.py:处理支付后的跳转、回调请求的视图
  • 重点看DummyProvider类的实现逻辑,它只是模拟了支付成功/失败的流程,你要做的就是把这些模拟逻辑替换成Razorpay/Instamojo的真实API调用。
第二步:实现你的本土网关

以Razorpay为例,按这个流程走:

  1. 先吃透Razorpay官方的支付流程:后端创建订单→前端唤起支付组件→Razorpay异步回调通知支付结果→后端验证回调签名并更新支付状态
  2. 在django-payments包内新建payments/razorpay/目录,仿照dummy的结构写代码:
    • 网关类:继承BasePaymentProcessor,在process_payment()里调用Razorpay的API创建订单,返回前端需要的支付参数;在process_notification()里验证Razorpay的回调签名,根据结果更新Payment模型的状态(成功/失败/待处理)
    • 配置项:在网关类里定义需要的配置字段,比如key_id、key_secret,参考其他网关的配置方式,让用户能在settings.py里配置这些参数
    • 视图:写一个视图处理Razorpay的异步回调请求,调用网关类的process_notification()方法完成状态更新
第三步:在Saleor里测试(不破坏原有代码)

不要直接修改Saleor的源码,用Django的扩展机制集成:

  • 在你的项目settings.py里,把新网关加到PAYMENT_PROCESSORS列表中:
    PAYMENT_PROCESSORS = [
        # 保留Saleor原有的网关
        "payments.dummy.DummyProvider",
        "payments.cybersource.CybersourceProvider",
        # 加入你的新网关
        "payments.razorpay.RazorpayProvider",
    ]
    
  • 用Razorpay的沙箱环境测试:生成沙箱密钥,在settings.py里配置好,然后在Saleor后台创建测试订单,选择你的Razorpay网关完成支付,检查订单状态和Payment模型的记录是否正确更新。
第四步:验证可行性的测试方法
  1. 单元测试:仿照tests/test_dummy.py的写法,为你的网关编写单元测试,覆盖订单创建、回调验证、状态更新等核心逻辑,确保代码的稳定性
  2. 手动测试:模拟真实用户的支付流程,用Razorpay沙箱提供的测试银行卡号完成支付,检查前端跳转、后端回调、订单状态同步是否都正常
  3. 边界测试:测试支付失败、超时、重复回调等场景,确保网关能正确处理这些异常情况
第五步:贡献代码到django-payments

虽然官方没有明确的贡献指南,但可以参考现有网关的PR流程:

  1. 先fork django-payments的官方仓库,在你的fork里创建一个专门的分支(比如feature/add-razorpay-gateway)
  2. 把你的网关代码提交到分支,确保代码符合PEP8规范,并且单元测试覆盖完整
  3. 写清晰的PR描述:说明你添加的网关名称、支持的功能、测试方式,以及参考的官方文档链接
  4. 提交PR前,先在django-payments的issues里提一个需求,说明你要添加印度本土网关,问问维护者有没有特殊的架构要求,避免走弯路
  5. 提交PR后,等待维护者审核,他们一般会关注代码质量、测试覆盖度和是否符合项目的整体架构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:16:51