Laravel Cashier - 如何修改收银员以在用户数据库中存储其他参数

时间:2018-03-24 12:31:35

标签: laravel laravel-5 laravel-5.3 stripe-payments laravel-cashier

我正在使用Laravel Cashier和Stripe来管理订阅。用户在注册和订阅计划时会提供他们的信用卡信息,但我也希望他们在订阅特定计划时将一些信用额存入他们的帐户。

例如,如果用户订阅Bronze包,我希望在订阅成功完成后将300 credits(假设)放入其帐户。 我怎样才能做到这一点??任何建议。

到目前为止,我的订阅代码就像这样

订阅控制器

// create the users subscription
        // grab the credit card token
        $ccToken = $request->input('cc_token');
        $plan = $request->input('plan');

        // create the subscription
        try {
            $user->newSubscription('main', 'plan_CWtS4yCNvo5vAj')->create($ccToken, [
                'email' => $user->email
            ]);
        } catch (\Exception $e) {
            return back()->withErrors(['message' => 'Error creating subscription.'.$e->getMessage()]);
        }

        return redirect()->back()->with('success','Successfully subscribed');

由于用户数据库在完成订阅后由laravel cashier填充,我不知道如何改变。任何帮助表示赞赏。感谢。

1 个答案:

答案 0 :(得分:2)

create()方法返回创建的行的Cashier Subscribtion模型的实例,因此您可以从($ subscribtion)变量中的create()收集返回的值,然后在此实例上保存您想要的任何内容:

$subscribtion = $user->newSubscription('main', 'plan_CWtS4yCNvo5vAj')
                     ->create($ccToken, [
                         'email' => $user->email
                     ]);
$subscribtion->credits = 300;
//some other stuff
$subscribtion->save();