我跟着Laravel docs来实施收银台,但我无法让它工作。
简而言之:
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
$customer = $this->asBraintreeCustomer();
public function asBraintreeCustomer()
{
return BraintreeCustomer::find($this->braintree_id);
}
谢谢!
更新
我在dd($this)
方法中做了asBraintreeCustomer()
并得到了我的用户。但braintree_id
属性为null
。
我如何填充这些?
我应该手动完成吗?
答案 0 :(得分:1)
这是Billable特征中的一个错误。已于7月15日修复,您可以阅读有关错误和修复的信息:https://github.com/laravel/cashier-braintree/commit/f0c133860d175a30676eedbab8d2345a59432910
你妨碍了:问题是braintree_id
属性为null
时调用$this->paymentMethod()
。
只需在项目中启动composer update
即可。