如何在PayPal订阅中配置商家分账并添加Merchant ID?
解决方案
一、Merchant ID/商家邮箱的配置位置
- 你当前使用的
Basic $headerForBasicAuth是通过PayPal的Client ID和Secret生成的身份凭证,这组凭证已经关联了你的主商家账户(对应你的Merchant ID)。 - 如果需要给其他商家分账,直接在分账规则的配置中指定对方的Merchant ID或注册邮箱即可,无需在基础API请求头中额外添加。
二、分账规则的具体配置
PayPal订阅分账需通过payment_instruction字段实现,支持固定金额或按比例分配(比例需先计算为固定金额)。推荐在创建订阅时直接配置,也可在创建Plan时全局预设。
方法1:创建订阅时添加分账规则(灵活适配不同场景)
修改你创建Subscription的代码,在请求体中加入payment_instruction字段,示例如下:
//create subscription $subPrice = $data['price'] == 1 ? $subscription->monthly_fee : $subscription->annual_fee; $body = [ 'plan_id' => $plan->id, 'application_context' => [ 'cancel_url' => 'http://laravel-paypal-example.test', 'return_url' => 'http://laravel-paypal-example.test', 'shipping_preference' => 'NO_SHIPPING', ], // 新增分账配置 'payment_instruction' => [ 'platform_fees' => [ [ 'amount' => [ 'value' => bcdiv($subPrice, 2, 2), // 取订阅金额的一半,保留两位小数 'currency_code' => 'USD' ], 'payee' => [ // 二选一:指定接收分账的商家ID 'merchant_id' => 'RECEIVER_MERCHANT_ID', // 或者指定商家邮箱 // 'email_address' => 'merchant_receiver@example.com' ] ] ] ] ]; $response = $http->post($this->paypalModel->getBasePath().'/v1/billing/subscriptions', $body)->body(); $sub = json_decode($response);
方法2:创建Plan时预设分账规则(所有订阅自动生效)
如果所有基于该Plan的订阅都需要分账,可在创建Plan的请求体中添加相同的payment_instruction字段:
//create plan $body = [ 'billing_cycles' => [/* 原有周期配置 */], 'name' => "example plan", 'payment_preferences' => [/* 原有支付偏好配置 */], 'product_id' => $product->id, // 新增全局分账配置 'payment_instruction' => [ 'platform_fees' => [ [ 'amount' => [ 'value' => bcdiv($subPrice, 2, 2), 'currency_code' => 'USD' ], 'payee' => [ 'merchant_id' => 'RECEIVER_MERCHANT_ID' ] ] ] ] ];
注意事项
- 确保你的PayPal账户已开启分账权限(需在商家后台申请对应的功能,如Partner Program或Advanced Payments)。
- 分账金额需符合PayPal的最小金额限制(比如USD需≥0.01)。
- 接收分账的商家账户需完成PayPal的身份验证,否则可能无法收款。
内容的提问来源于stack exchange,提问作者Roland Ritli
相关产品推荐
相关产品推荐

