Laravel 5.3,收银员 - Braintree - 单次收费

时间:2017-02-03 15:46:39

标签: laravel-5.3 braintree laravel-cashier

我跟着Laravel docs来实施收银台,但我无法让它工作。

简而言之:

  • 制作和迁移迁移
  • 将Billable添加到我的User.php模型
  • 为我的.env添加了密钥,在我的config/services.php中引用了这些密钥,并将SDK调用添加到我的AppServiceProvider.php

如果需要,我可以粘贴代码,但它与文档中的相同(我检查过但你永远不知道)。

现在,如果我尝试运行

$user = User::find(2);
$response = $user->charge(15);
dd($response);

在我的控制器中我收到错误:

InvalidArgumentException in CustomerGateway.php line 567:
    expected customer id to be set

---

in CustomerGateway.php line 567
at CustomerGateway->_validateId(null) in CustomerGateway.php line 198
at CustomerGateway->find(null) in Customer.php line 106
at Customer::find(null) in Billable.php line 440
at User->asBraintreeCustomer() in Billable.php line 29
at User->charge('15') in MyController.php line 787 

在我看来,错误就在这里:

at Customer::find(null) in Billable.php line 440

null提供CustomerGateway。所以这是在Billable.php

的第29行调用的代码
$customer = $this->asBraintreeCustomer();
public function asBraintreeCustomer()
{
    return BraintreeCustomer::find($this->braintree_id);
}

谢谢!

更新

我在dd($this)方法中做了asBraintreeCustomer()并得到了我的用户。但braintree_id属性为null。 我如何填充这些? 我应该手动完成吗?

1 个答案:

答案 0 :(得分:1)

这是Billable特征中的一个错误。已于7月15日修复,您可以阅读有关错误和修复的信息:https://github.com/laravel/cashier-braintree/commit/f0c133860d175a30676eedbab8d2345a59432910

你妨碍了:问题是braintree_id属性为null时调用$this->paymentMethod()

只需在项目中启动composer update即可。