【问题标题】:Laravel Cashier saving to stripe but not DBLaravel Cashier 保存到条带而不是 DB
【发布时间】:2014-05-22 01:53:06
【问题描述】:

创建用户后,Laravel Cashier 不会将条带数据保存到我的数据库中。

当我创建一个新用户,然后尝试为该用户(或任何其他用户)分配一个订阅()时,数据正在适当地发送到 Stripe,因为我可以看到客户 ID、选择的计划、等等...但是我的数据库用户条带列没有在我的数据库中更新。

当我删除创建()用户的代码并仅订阅用户时,数据会像应有的那样持久保存到数据库中。只有在我创建了一个新用户之后它才不起作用然后尝试订阅任何用户。

我正在使用 Jeffrey Way 的模型验证包。

$user = $this->userModel->create($input);

if ($user->hasErrors()) {
    throw new \Exception($user->getErrors());
}

$this->createStripeSubscription($user->id, $input['creditCardToken']);

private function createStripeSubscription($user_id, $token) {
    //$this->userModel->find(1)->subscription('monthly')->create($token); // Doesn't work either
    $this->userModel->find($user_id)->subscription('monthly')->create($token);
}

【问题讨论】:

  • 在创建 Stripe 订阅之前执行 $user->save() 是否有效?
  • 这就是我最初所做的,但它没有:(

标签: php laravel laravel-4 stripe-payments


【解决方案1】:

我在 Confide 中使用 Ardent 验证时遇到了类似的问题。

在用户模型中覆盖 BillableTrait 的保存方法解决了这个问题。

class User extends ConfideUser implements BillableInterface {

    use BillableTrait;

    public function saveBillableInstance()
    {                            
        $this->forceSave();        
    }
}

【讨论】:

  • 我正在使用 Ardent 进行验证,这对我来说非常有效。
【解决方案2】:

问题是与 Jeffrey Way 的验证模型包发生冲突。或者至少是我在使用 Cashier 时尝试实现它的方式。我决定在它自己的类中抽象出我的 Validation 并删除 Validation Model 包。一切都很好。

【讨论】:

    猜你喜欢
    • 2020-04-09
    • 2020-01-12
    • 2019-08-31
    • 2018-07-26
    • 1970-01-01
    • 2020-04-05
    • 2020-01-16
    • 2021-12-28
    • 2021-04-02
    相关资源
    最近更新 更多