跳到主要内容
版本:Next

PayPal

PayPal Transaction Search 数据源连接器。

描述

使用第一方 OAuth 客户端凭据,通过 GET /v1/reporting/transactions 读取一个账户的有界交易报表。仅支持 BATCH,不是 CDC、支付接口或余额对账服务。

主要功能

  • 批处理
  • 流处理
  • Exactly-once

并行度必须为 1。恢复时重新读取整个配置窗口,不保存分页偏移量。任务失败前可能已向非事务型下游写入部分记录。

前提条件

REST 应用必须获得其所属账户的 Transaction Search 权限。请启用应用的交易查询权限并确认报表访问;获取 OAuth token 成功不代表具有报表权限。权限变更可能需要重新获取 token。不支持第三方账户或合作伙伴授权流程。

生产地址为 https://api-m.paypal.com,沙箱地址为 https://api-m.sandbox.paypal.com。沙箱凭据和报表可用性独立于生产环境。模拟测试不证明沙箱或生产权限、数据可用性或完整性。本连接器不声称已通过真实账户验证。

参考 官方 OpenAPI交易查询REST 认证

报表约定

必须指定带秒和时区偏移的绝对 RFC3339 start_dateend_date。开始早于结束,跨度不超过 31 天。时间统一转换为 UTC,不使用主机时区。PayPal 提供最近三年的历史数据,交易最多可能延迟三小时才出现在报表中。

固定请求 fields=allbalance_affecting_records_only=N,保留影响余额及不影响余额的所有返回记录。交易 ID 在报表系统中不唯一,不建立主键、不按 ID 去重,下游也应保留此区别。

每页必须包含账户、时间范围、页码、总数及交易数组。返回时间范围经 UTC 归一化后必须与请求完全一致。PayPal 的 end_date 也可能表示当前可提供数据的最后时间:若返回范围缩短,任务失败,不会静默修改请求。请等待报表可用,或显式缩小窗口后重跑。

遇到格式错误、HTTP 200 中的业务错误、分页数量不一致、账户或总数变化及可检测的截断时失败。RESULTSET_TOO_LARGE 提示缩小日期窗口。连接器限制为最多 10,000 条;恰好 10,000 条且所有分页及总数校验通过时可读取,超过限制则失败。不截断、不自动拆分窗口。调整窗口时须明确核对边界和重放影响。

总数稳定、时间范围匹配只能检测部分问题,不代表远端不可变快照。同数量的记录变化、延迟更新或遗漏可能无法检测。不保证快照一致性、无损时间切分或完整历史。

输出结构

固定结构,不支持自定义 schema

字段类型可空含义
account_numberSTRING响应中的报表账户
transaction_idSTRING非唯一交易 ID
transaction_event_codeSTRING事件代码
transaction_statusSTRING状态
transaction_initiation_dateSTRINGUTC RFC3339 创建时间
transaction_updated_dateSTRINGUTC RFC3339 更新时间
transaction_amountDECIMAL(38,9)原币单位总金额
transaction_currencySTRING总金额币种
fee_amountDECIMAL(38,9)原币单位手续费
fee_currencySTRING手续费币种,与总金额币种独立
contentSTRING完整交易对象 JSON,包含引用及额外字段

可选字段缺失或为 null 均保留为空。存在的金额对象必须含字符串金额和三字母币种;支持零位及三位小数币种。金额须能精确表示为 DECIMAL(38,9),超出精度或小数位时失败而非舍入。其他金额字段保留在原始 JSON 中,不进行浮点转换。原始记录可能包含个人或财务数据,请使用受控下游并避免记录到日志。

配置项

名称类型必填默认值说明
client_idSTRING-第一方 REST 应用 ID
client_secretSTRING-客户端密钥,使用原生配置日志脱敏
start_dateSTRING-带秒和偏移的绝对开始时间
end_dateSTRING-绝对结束时间,窗口不超过 31 天
api_base_urlSTRINGhttps://api-m.paypal.com精确生产或沙箱源地址,不带末尾斜线
page_sizeINT1001 到 500
max_retriesINT3额外瞬时故障重试,0 到 5
retry_delay_msINT10001 到 60000 毫秒
request_timeout_msINT30000连接、读取及请求中止期限,1 到 120000 毫秒
max_response_bytesINT8388608每次响应解压后字节上限,1024 到 16777216
mock_modeBOOLEANfalse测试自定义源地址,凭据必须严格为 mock-client / mock-secret

通过真实 token 接口获取 OAuth token,到期或每页首次 HTTP 401 后刷新。仅对 HTTP 429/500/502/503/504 及传输错误进行有界重试。遵守最多 60 秒的数字 Retry-After;更长或不支持的值直接失败,请稍后重跑。不跟随重定向。关闭时中止活动请求并唤醒重试等待。

请求期限不能中断 JVM DNS 解析或阻塞的下游 collect,因此不是无条件的任务总耗时保证。分页数、响应大小、请求次数和等待时间均受限。请关闭 HTTP wire/header 日志;密钥不得写入 URL、点分配置名或诊断信息。使用环境变量或认可的密钥提供方式。模拟模式不是官方 PayPal 模拟器,不得使用真实凭据。

示例

env {
parallelism = 1
job.mode = "BATCH"
}
source {
PayPal {
plugin_output = "transactions"
client_id = ${PAYPAL_CLIENT_ID}
client_secret = ${PAYPAL_CLIENT_SECRET}
start_date = "2026-01-01T00:00:00Z"
end_date = "2026-01-02T00:00:00Z"
page_size = 100
}
}
sink {
LocalFile {
plugin_input = "transactions"
path = "/data/paypal"
file_format_type = "json"
}
}

变更日志

Changelog

Next version

  • Add bounded PayPal Transaction Search source with OAuth authentication.