2

我按照Laravel 文档实现了 Cashier,但我无法让它工作。

简而言之:

  • 进行和迁移的迁移
  • 将 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

这给出nullCustomerGateway. 所以这是在第 29 行调用的代码Billable.php

$customer = $this->asBraintreeCustomer();
public function asBraintreeCustomer()
{
    return BraintreeCustomer::find($this->braintree_id);
}

谢谢!

更新

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

4

1 回答 1

1

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

你挡路了:问题出braintree_idnull调用$this->paymentMethod().

只需composer update在您的项目上启动一个。

于 2017-07-24T07:40:10.877 回答