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

如何为PayPal.me支付创建PayPal WebHook对接Flask服务器?

PayPal WebHook 问题解答

PayPal.me 支付对应的事件类型

PayPal.me 是简化的个人收款链接,支付完成后触发的核心事件是 PAYMENT.SALE.COMPLETED——当付款确认到账时就会触发这个事件。如果后续有退款操作,还会触发 PAYMENT.SALE.REFUNDED 这类关联事件。

个人账户能否创建接收直接支付的WebHook

可以,但普通个人账户不行,得先升级成高级账户(Premier Account)或者企业账户(Business Account)。升级后,去PayPal开发者后台创建WebHook,订阅收款相关的事件即可。

Flask 对接WebHook的关键注意点

  • 你的Flask端点必须是公网可访问的,本地调试可以用ngrok之类的工具转成公网地址,localhost没法被PayPal调用
  • 一定要验证WebHook签名,防止伪造请求,给你一段Flask示例代码:
from flask import Flask, request
import paypalrestsdk

app = Flask(__name__)

# 配置PayPal信息,生产环境把mode改成"live"
paypalrestsdk.configure({
  "mode": "sandbox",
  "client_id": "你的Client ID",
  "client_secret": "你的Client Secret"
})

@app.route('/paypal-webhook', methods=['POST'])
def handle_paypal_webhook():
    # 验证WebHook事件的合法性
    try:
        webhook_event = paypalrestsdk.WebhookEvent.verify(request.headers, request.data)
    except Exception as e:
        print(f"WebHook验证失败: {e}")
        return '', 400

    # 处理收款完成事件
    if webhook_event.event_type == 'PAYMENT.SALE.COMPLETED':
        sale_details = webhook_event.resource
        print(f"收到付款,交易ID: {sale_details.id},金额: {sale_details.amount.total}")
        # 这里可以加你自己的业务逻辑,比如更新订单状态、发通知等

    # 必须返回200,否则PayPal会重复发送请求
    return '', 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)
  • 记住给PayPal返回200 OK,不然它会不断重试发送WebHook请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:48:21