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

如何通过PayPal API获取用户当前有效的定期付款数据?

可以通过PayPal API获取用户有效定期付款(订阅)数据

你当前的代码仅完成了OAuth2授权流程的第一步——生成用户授权URL,还需完成后续令牌获取和订阅数据查询步骤,具体操作如下:

1. 确认权限范围

你的SCOPES配置方向正确,若仅需读取数据,建议使用更严格的只读权限,避免不必要的权限风险:

SCOPES = 'openid profile email https://uri.paypal.com/services/subscriptions/read'

2. 处理授权回调,获取访问令牌

用户访问授权URL完成授权后,PayPal会将授权码(code参数)回调到你配置的REDIRECT_URL。需新增Lambda函数处理该回调,用授权码换取访问令牌:

import json
import base64
import requests

def lambda_callback_handler(event, context):
    CLIENT_ID = '*********'
    CLIENT_SECRET = '*********'  # 需从PayPal开发者平台获取客户端密钥
    REDIRECT_URL = '....'
    
    # 从回调请求中提取授权码
    code = event['queryStringParameters']['code']
    
    # 构造令牌请求
    token_url = 'https://api-m.sandbox.paypal.com/v1/oauth2/token'
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Authorization': 'Basic ' + base64.b64encode(f"{CLIENT_ID}:{CLIENT_SECRET}".encode()).decode()
    }
    data = {
        'grant_type': 'authorization_code',
        'code': code,
        'redirect_uri': REDIRECT_URL
    }
    
    response = requests.post(token_url, headers=headers, data=data)
    token_data = response.json()
    
    # 保存access_token和refresh_token(建议存入数据库或缓存)
    access_token = token_data['access_token']
    refresh_token = token_data['refresh_token']
    
    # 调用订阅查询接口(见下一步)
    active_subs = get_active_subscriptions(access_token)
    return {
        'statusCode': 200,
        'body': json.dumps(active_subs)
    }

3. 查询用户有效订阅数据

拿到access_token后,调用PayPal Subscriptions API的列表接口,筛选状态为ACTIVE的有效订阅:

def get_active_subscriptions(access_token):
    subscriptions_url = 'https://api-m.sandbox.paypal.com/v1/billing/subscriptions'
    headers = {
        'Authorization': f'Bearer {access_token}',
        'Content-Type': 'application/json'
    }
    params = {
        'status': 'ACTIVE'  # 可选值还包括INACTIVE、CANCELLED等,按需筛选
    }
    
    response = requests.get(subscriptions_url, headers=headers, params=params)
    return response.json()

返回结果包含有效订阅的详细信息,比如订阅ID、计费周期、金额、创建时间等。

关键注意事项

  • REDIRECT_URL必须与PayPal开发者平台中应用配置的回调地址完全一致,否则授权会失败。
  • 沙箱环境(sandbox.paypal.com)和生产环境(paypal.com)的API URL要严格区分,不可混用。
  • 访问令牌(access_token)有效期为8小时,过期后可使用refresh_token重新获取,无需用户再次授权。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:22:50