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

Django跳转Paystack支付网关checkout页面出现KeyError如何解决

Django集成Paystack触发authorization_url KeyError的解决方法

核心错误原因

从你给出的Paystack返回结构可以看到,authorization_url是嵌套在data字段下的二级字段,你直接从响应根层级取response_data["authorization_url"],路径不对就会触发KeyError。同时你写的Django视图没有return redirect对象,就算字段取对也不会完成跳转。

具体排查修复步骤

  • 先校验API请求是否成功
    拿到响应后优先判断HTTP状态码和返回的业务状态,避免请求本身失败的情况下强行取字段:
    res = requests.post(url, data=json.dumps(data), headers=headers)
    response_data = res.json()
    # 先打印完整响应内容,方便排查所有错误
    print("Paystack完整返回:", response_data)
    
    # 校验请求是否成功
    if res.status_code != 200 or not response_data.get("status"):
        return HttpResponse(f"支付初始化失败:{response_data.get('message', '未知错误')}")
    
  • 修正字段访问路径和视图返回逻辑
    按照返回结构取二级字段,同时给redirect加上return:
    auth_url = response_data["data"]["authorization_url"]
    print(auth_url)
    return redirect(auth_url)
    
  • 核对请求参数合法性
    1. 不要填反公钥和密钥,Authorization头里的SECRET_KEY要和Paystack后台配置一致
    2. 确认参数名符合Paystack接口要求,比如回调地址的参数名通常是callback_url而非你写的callback
    3. 金额单位为分,如果你要收1元,要传100,不需要补多余的前导0
  • 本地测试适配
    本地用127.0.0.1作为回调地址会被Paystack拦截,测试时可以用内网穿透工具把本地服务暴露到公网,换成公网可访问的回调地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:54:05