PHP调用Braintree创建计划报500错误及未定义create方法问题
Braintree沙箱创建定期支付计划报错问题
问题详情
在Braintree沙箱环境中尝试创建1天周期的定期支付计划用于测试,触发500内部服务器错误,具体报错:
Call to undefined method Braintree\Plan::create()
使用的代码如下:
Braintree_Configuration::environment(BRAINTREE_ENVIRONMENT); // 生产环境需修改 Braintree_Configuration::merchantId(BRAINTREE_MERCHANT_ID); Braintree_Configuration::publicKey(BRAINTREE_PUBLIC_KEY); Braintree_Configuration::privateKey(BRAINTREE_PRIVATE_KEY); try{ $plan = Braintree_Plan::create([ 'name' => 'My Example', 'price' => '10.00', 'billingDayOfMonth' => 1, 'billingFrequency' => 1, 'numberOfBillingCycles' => 12, // 账单循环次数,设为0表示无限循环 'trialDuration' => 0, 'trialDurationUnit' => Braintree\Subscription::TRIAL_DURATION_UNIT_DAY ]); echo '<pre>';print_r($plan);die; }catch(Braintree_Exception $e){ echo 'Some error: ' . $e->getMessage(); }
问题原因
Braintree的PHP SDK中不存在Braintree_Plan::create()方法,支付计划无法通过API创建,必须在Braintree的控制面板(沙箱或生产环境)手动配置。
解决方法
手动创建支付计划
登录Braintree沙箱控制面板,创建符合需求的支付计划:- 设置计划名称、金额(10.00)
- 账单频率设为1天,循环次数设为12次
- 关闭试用周期(对应代码中的
trialDuration=0)
创建完成后记录该计划的ID。
修改代码创建订阅
用获取到的计划ID创建订阅,替代原有的创建计划逻辑,示例代码:
// 保持原有配置代码不变 Braintree_Configuration::environment(BRAINTREE_ENVIRONMENT); Braintree_Configuration::merchantId(BRAINTREE_MERCHANT_ID); Braintree_Configuration::publicKey(BRAINTREE_PUBLIC_KEY); Braintree_Configuration::privateKey(BRAINTREE_PRIVATE_KEY); try{ // 替换成你在控制面板创建的计划ID $subscription = Braintree_Subscription::create([ 'paymentMethodToken' => '用户支付方式令牌', // 需提前获取用户支付方式令牌 'planId' => 'your-sandbox-plan-id' ]); echo '<pre>';print_r($subscription);die; }catch(Braintree_Exception $e){ echo '错误信息: ' . $e->getMessage(); }
- 统一SDK风格
代码中混合使用了旧版下划线命名(Braintree_Configuration)和新版命名空间(Braintree\Subscription),建议统一为一种风格,避免潜在问题。
内容的提问来源于stack exchange,提问作者Rahul Gupta
相关产品推荐
相关产品推荐

