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

实现PayPal Sandbox退款时收到HTTP响应码400的问题求助

实现Laravel 5.6中PayPal Sandbox退款功能(基于paypal/rest-api-sdk-php)

看起来你已经顺利跑通了PayPal Sandbox的支付流程,现在要搞定退款功能对吧?从你贴的支付成功响应来看,咱们需要的核心标识已经在里面了,直接跟着下面的步骤来就行:

核心前提:拿到正确的交易ID

从你给出的支付响应里,要重点提取**transactions[0].related_resources[0].sale.id**这个值(也就是你例子里的0KH341752J2209342),退款操作是针对这个具体的sale交易,而不是最外层的支付id(PAY-94141048LX592642PLLYUVMA),这一点一定要注意!

具体实现步骤

1. 确认SDK配置

因为支付功能已经正常运行,这一步你应该已经搞定了,但还是再核对下:确保你的.env文件里配置了正确的PayPal Sandbox密钥和模式:

PAYPAL_CLIENT_ID=你的Sandbox客户端ID
PAYPAL_CLIENT_SECRET=你的Sandbox客户端密钥
PAYPAL_MODE=sandbox

2. 编写退款逻辑代码

可以在你的支付相关控制器里新增一个退款方法,比如:

首先引入必要的PayPal SDK类:

use PayPal\Api\Sale;
use PayPal\Api\Refund;
use PayPal\Api\Amount;
use PayPal\Rest\ApiContext;
use PayPal\Auth\OAuthTokenCredential;

然后初始化API上下文(如果项目里已经有全局的ApiContext实例,直接复用就行):

$apiContext = new ApiContext(
    new OAuthTokenCredential(
        env('PAYPAL_CLIENT_ID'),
        env('PAYPAL_CLIENT_SECRET')
    )
);
$apiContext->setConfig([
    'mode' => env('PAYPAL_MODE', 'sandbox'),
]);

接下来执行退款操作:

// 从支付成功的响应中获取到的sale_id
$saleId = '0KH341752J2209342';

// 实例化Sale对象
$sale = new Sale();
$sale->setId($saleId);

// 定义退款金额(支持全额或部分退款,货币要和原支付一致)
$amount = new Amount();
$amount->setCurrency('USD') // 比如原支付用的是USD,这里必须一致
       ->setTotal('10.00'); // 这里填你要退款的金额

// 创建退款对象
$refund = new Refund();
$refund->setAmount($amount);

// 发起退款请求
try {
    $refundResult = $sale->refund($refund, $apiContext);
    
    // 退款成功后的逻辑:比如更新订单状态、记录退款日志
    // 可以打印$refundResult查看详细的退款响应
    dd($refundResult);
} catch (\PayPal\Exception\PayPalConnectionException $ex) {
    // 处理PayPal API连接/请求错误,比如参数错误、权限问题
    echo $ex->getMessage();
    // 解析错误详情
    dd(json_decode($ex->getData()));
} catch (\Exception $ex) {
    // 处理其他异常,比如服务器内部错误
    echo $ex->getMessage();
}

关键注意事项

  • 退款货币必须和原交易的货币完全一致,否则会直接报错。
  • 部分退款的金额不能超过原交易的总金额,否则PayPal会拒绝请求。
  • 测试时可以用PayPal Sandbox的测试买家账号支付,然后用商家账号发起退款,退款状态会在Sandbox后台实时更新。
  • 建议把退款的结果(比如退款ID、状态、金额)保存到你的订单数据库表中,方便后续查询和对账。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:09:03