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

通过PayPal REST API V2用交易ID获取捐赠者信息的技术疑问

解决方案:通过PayPal REST API V2用Transaction ID获取捐赠者信息

正确的API端点与调用方式

你需要使用V2交易报告API来通过Transaction ID精准查询交易详情,获取捐赠者的姓名和邮箱:

  1. 端点地址:

    • 沙箱环境:GET https://api-m.sandbox.paypal.com/v2/reporting/transactions
    • 生产环境:GET https://api-m.paypal.com/v2/reporting/transactions
  2. 必填请求参数:

    • transaction_id: 你从JS响应中获取的交易ID
    • 可选参数fields: 可以指定返回的字段,比如payer_email,payer_name,transaction_info,避免返回冗余数据
  3. 请求示例(Postman):
    在请求URL中拼接参数:

    https://api-m.sandbox.paypal.com/v2/reporting/transactions?transaction_id=你的交易ID&fields=payer_email,payer_name
    

    头部带上Authorization: Bearer 你的OAuth2令牌

为什么之前的尝试失败?

  • /checkout/orders端点仅用于查询订单资源,而捐赠按钮的即时交易属于「捕获(Capture)」类操作,Order ID和Transaction ID是完全不同的资源标识,所以用Transaction ID调用该端点会返回「资源不存在」。
  • V1的/payments/sale端点确实已被废弃,V2中没有直接对应的单一资源端点,但交易报告API完全可以实现按Transaction ID查询特定交易的需求。

更高效的替代方案

如果你的捐赠按钮是基于PayPal JS SDK实现的,其实可以在前端的onApprove回调中直接获取到Order ID,再通过/checkout/orders/{order_id}端点查询payer信息,无需后续二次调用:

paypal.Buttons({
  onApprove: function(data, actions) {
    // 获取orderID
    console.log(data.orderID);
    return actions.order.get().then(function(orderDetails) {
      // 直接提取捐赠者信息
      const payerName = `${orderDetails.payer.name.given_name} ${orderDetails.payer.name.surname}`;
      const payerEmail = orderDetails.payer.email_address;
      // 执行后续存储逻辑
    });
  }
}).render('#paypal-button-container');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:54:15