如何使用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
相关产品推荐
相关产品推荐

