Laravel平台Stripe收款后向厂商付款方案咨询
基于Laravel实现向厂商付款的方案(Stripe及替代方案)
一、Stripe官方解决方案:Stripe Connect
1. 核心流程
- 先引导厂商注册Stripe Connect账户(你作为平台方需先在Stripe后台创建Connect平台)
- 客户付款资金暂存至你的Stripe账户,待服务完成后,通过Stripe Transfer API将对应金额转到厂商的Connect账户
- 可直接在转账时设置平台手续费,自动从转出金额中扣除
2. Laravel中实现的关键代码
先安装Stripe SDK:
composer require stripe/stripe-php
服务完成后触发转账的逻辑代码:
use Stripe\Stripe; use Stripe\Transfer; Stripe::setApiKey(env('STRIPE_SECRET_KEY')); // 发起向厂商Connect账户的转账 $transfer = Transfer::create([ 'amount' => 9000, // 单位为分,示例为90美元 'currency' => 'usd', 'destination' => 'acct_xxxxxx', // 厂商的Stripe Connect账户ID 'transfer_group' => 'order_12345', // 关联订单ID,方便后续对账 ]);
3. 注意事项
- 需在Stripe后台配置Connect平台的转账规则,比如延迟转账周期、手续费比例
- 厂商必须完成Stripe Connect的身份验证流程,否则无法接收转账
二、替代方案:PayPal Payouts
若偏好PayPal生态,其Payouts功能可支持单笔/批量向厂商付款:
1. 核心流程
- 厂商提供个人/企业PayPal邮箱
- 客户付款至你的PayPal企业账户,服务完成后调用Payouts API完成转账
2. Laravel中实现要点
安装PayPal官方SDK:
composer require paypal/rest-api-sdk-php
转账代码示例:
use PayPal\Api\Payout; use PayPal\Api\PayoutItem; use PayPal\Api\Currency; $payouts = new Payout(); $senderBatchHeader = new \PayPal\Api\PayoutSenderBatchHeader(); $senderBatchHeader->setSenderBatchId(uniqid()) ->setEmailSubject('服务费用结算'); $payoutItem = new PayoutItem(); $payoutItem->setRecipientType('EMAIL') ->setReceiver('vendor@example.com') ->setAmount(new Currency(['value' => '90.00', 'currency' => 'USD'])); $payouts->setSenderBatchHeader($senderBatchHeader) ->addItem($payoutItem); // 执行转账操作 $output = $payouts->create(null, $apiContext);
三、Laravel生态工具简化开发
可使用Laravel Cashier的Stripe Connect扩展,封装了Connect账户创建、转账等常用操作,减少重复代码:
composer require laravel/cashier-stripe
内容的提问来源于stack exchange,提问作者youcef
相关产品推荐
相关产品推荐

