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

如何使用PHP结合PayPal API实现转账功能?

用PHP结合PayPal最新API实现转账操作

你提到的旧Stack回答里的PHP REST SDK早已被PayPal弃用,当前官方推荐使用Payouts API(适用于单笔/批量转账到其他PayPal账户),以下是完整实现步骤:

一、前期准备

  • 必须拥有PayPal商家账户(个人账户无法调用Payouts API)
  • 登录PayPal开发者平台,创建应用并获取对应环境的Client ID和Secret(沙箱用于测试,生产环境用于正式转账)
  • 确保服务器支持PHP 7.3+,并安装Composer

二、安装官方SDK

执行Composer命令安装Payouts专用SDK:

composer require paypal/payouts-sdk

三、实现转账代码

1. 初始化API客户端

创建配置文件paypal_config.php:

<?php
require __DIR__ . '/vendor/autoload.php';

use PayPal\Payouts\Api\Payout;
use PayPal\Payouts\Api\PayoutItem;
use PayPal\Payouts\Api\PayoutSenderBatchHeader;
use PayPal\Core\PayPalHttpClient;
use PayPal\Core\SandboxEnvironment;
use PayPal\Core\ProductionEnvironment;

// 替换为你的Client ID和Secret
$clientId = "你的Client ID";
$clientSecret = "你的Client Secret";

// 切换沙箱/生产环境
$environment = new SandboxEnvironment($clientId, $clientSecret);
// $environment = new ProductionEnvironment($clientId, $clientSecret);

$client = new PayPalHttpClient($environment);
?>

2. 构造并发送转账请求

创建转账脚本send_payout.php:

<?php
require 'paypal_config.php';

try {
    // 构造转账批次头部信息
    $senderBatchHeader = new PayoutSenderBatchHeader();
    $senderBatchHeader->setSenderBatchId(uniqid()) // 唯一批次ID,用于后续查询
                      ->setEmailSubject("来自你的转账");

    // 构造单笔转账项(支持添加多个PayoutItem实现批量转账)
    $payoutItem = new PayoutItem();
    $payoutItem->setRecipientType("EMAIL") // 收款方类型:EMAIL/PAYPAL_ID
               ->setReceiver("收款方的PayPal邮箱")
               ->setNote("转账测试")
               ->setSenderItemId(uniqid())
               ->setAmount([
                   "value" => "10.00",
                   "currency" => "USD"
               ]);

    // 组装Payout对象
    $payout = new Payout();
    $payout->setSenderBatchHeader($senderBatchHeader)
           ->setItems([$payoutItem]);

    // 发送请求
    $request = new \PayPal\Payouts\Api\PayoutsPostRequest();
    $request->body = $payout;
    $response = $client->execute($request);

    // 处理成功响应
    echo "转账批次已创建,批次ID:" . $response->result->batch_header->payout_batch_id;
    echo "<br>转账状态:" . $response->result->batch_header->batch_status;

} catch (\PayPal\Core\Http\HttpException $ex) {
    // 捕获API错误
    echo "请求失败:" . $ex->getMessage();
    if (!empty($ex->getData())) {
        echo "<br>错误详情:" . json_encode($ex->getData());
    }
}
?>

四、关键注意事项

  • 权限验证:确保你的PayPal应用已开启Payouts权限,若未开启需在开发者平台申请
  • 限额限制:PayPal会根据账户等级设置转账限额,正式使用前需确认限额范围
  • 收款方要求:收款方必须是已验证的PayPal账户,否则可能无法接收转账
  • 沙箱测试:先使用沙箱账户完成测试,确认流程无误后再切换到生产环境

你提到的旧Stack问题:

  • 《使用PayPal PHP REST SDK转账》:该SDK已被弃用,官方不再维护,无法兼容当前PayPal API规范
  • 《能否用PayPal API给其他PayPal账户转账?如果可以怎么做?》:旧方案依赖的API接口已下线,当前唯一合规的方式是使用Payouts API

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:31:20