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

什么是API的callback url?在Python中何时以及如何配置使用?

什么是Callback URL

Callback URL(回调地址)本质上是你自己的服务端暴露的、可被第三方API平台公网访问的HTTP接口地址。当第三方平台处理完异步任务(比如支付结果通知、用户授权结果、大文件异步处理结果)之后,会主动向这个地址发送HTTP请求,把处理结果推送给你,不需要你反复轮询调用平台接口查询结果。

Python开发场景下的使用时机
  • 第三方授权登录场景:比如微信、GitHub OAuth授权,用户在授权页完成操作后,平台会把授权code推送到你填写的callback URL,你拿到code才能兑换access token完成登录流程
  • 支付/交易类场景:支付平台处理完用户付款后,会主动把支付成功/失败的结果通知到你的callback URL,你再执行后续的订单状态更新、发货等逻辑
  • 异步处理类场景:比如调用AI大模型生成长文本、云平台的音视频转码任务,这类任务处理时间长不会同步返回结果,平台处理完成后就会往你的callback URL推送最终结果
具体配置操作步骤

第一步:开发回调接口

你可以用任意Python Web框架(Flask、FastAPI、Django等)编写符合第三方平台要求的回调接口,核心要包含验签逻辑,避免收到伪造的恶意通知,以下是Flask框架的简单示例:

from flask import Flask, request, jsonify
import hashlib
import hmac

app = Flask(__name__)
# 替换为API平台给你的专属签名密钥,不要泄露
PLATFORM_SECRET = b"your_platform_secret_here"

@app.route("/api/callback", methods=["POST"])
def platform_callback():
    # 1. 取平台请求的原始内容和请求头里的平台签名
    raw_data = request.get_data()
    platform_sign = request.headers.get("X-Platform-Signature", "")
    
    # 2. 按照平台文档的规则验签,拦截伪造请求
    calculated_sign = hmac.new(PLATFORM_SECRET, raw_data, hashlib.sha256).hexdigest()
    if not hmac.compare_digest(calculated_sign, platform_sign):
        return jsonify({"code": 403, "msg": "签名错误"}), 403
    
    # 3. 解析业务数据,执行你的业务逻辑,比如更新订单状态
    callback_data = request.get_json()
    order_id = callback_data.get("order_id")
    order_status = callback_data.get("status")
    # 此处写你的业务处理逻辑:比如查询数据库更新对应订单状态
    
    # 4. 返回平台要求的固定响应格式,否则平台会判定通知失败反复重试
    return jsonify({"code": 0, "msg": "接收成功"})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

第二步:获取公网可访问的回调地址

本地开发阶段可以用内网穿透工具(ngrok、frp等)把本地启动的服务端口映射到公网,拿到临时公网地址,比如用ngrok映射本地8000端口后拿到的公网地址是https://xxx-xx-xx-xx.ngrok.io,对应的callback URL就是https://xxx-xx-xx-xx.ngrok.io/api/callback。
生产环境直接使用你的服务绑定的域名+回调接口路径即可,注意必须使用HTTPS协议,绝大多数第三方平台不接受HTTP协议的回调地址。

第三步:在API平台配置回调地址

把完整的回调URL填写到API平台对应的配置项即可,部分平台支持调用接口动态配置回调地址,按照平台文档要求传参即可。

注意事项

  • 回调接口要保证幂等:同一个通知可能因为网络波动被平台多次推送,要做好重复通知的判断逻辑,避免重复执行业务操作(比如重复给用户加余额、重复发货)
  • 不要在回调接口里执行耗时逻辑:收到通知后建议先把数据存入数据库,用异步任务处理后续逻辑,避免接口超时导致平台判定通知失败发起重复推送。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:09:01