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

PayPal API问题:使用Java如何从PayPal支付记录中获取sale_id?

Java环境获取PayPal交易sale_id方案

前置依赖

确保项目引入PayPal官方Java REST SDK,Maven依赖配置如下:

<dependency>
    <groupId>com.paypal.sdk</groupId>
    <artifactId>rest-api-sdk</artifactId>
    <version>1.14.0</version>
</dependency>

具体实现步骤

  • 初始化API调用上下文,替换为你自己的客户端凭证和环境参数
import com.paypal.api.payments.*;
import com.paypal.base.rest.APIContext;
import com.paypal.base.rest.PayPalRESTException;

// 初始化上下文,生产环境将第三个参数改为live
APIContext apiContext = new APIContext("你的ClientID", "你的ClientSecret", "sandbox");
  • 用你已有的PAYID开头的支付ID调用支付查询接口,获取完整支付资源
// 替换为你拿到的PAY开头的支付ID
String payId = "PAY-XXXXXXXXXXXXXX";
Payment payment = Payment.get(apiContext, payId);
  • 遍历支付资源提取sale_id
String saleId = null;
for (Transaction txn : payment.getTransactions()) {
    for (RelatedResources res : txn.getRelatedResources()) {
        Sale sale = res.getSale();
        if (sale != null) {
            saleId = sale.getId();
            break;
        }
    }
    if (saleId != null) break;
}
  • 拿到sale_id后即可执行退款操作,示例代码如下:
// 构造退款参数
Amount refundAmount = new Amount();
refundAmount.setCurrency("USD");
refundAmount.setTotal("9.99"); // 退款金额需与支付币种一致,支持部分退款

Refund refundRequest = new Refund();
refundRequest.setAmount(refundAmount);

// 执行退款
Sale sale = new Sale();
sale.setId(saleId);
Refund refundResult = sale.refund(apiContext, refundRequest);

补充说明

如果你使用的是PayPal v2版本的订单接口,支付成功后返回的是O开头的订单ID,不需要再查询sale_id:直接调用订单查询接口后,从purchase_units下的payments.captures数组中提取capture_id,使用该ID即可直接发起退款。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:42:03