Laravel Cashier没有订阅创建

时间:2018-02-27 04:22:42

标签: laravel

我在laravel应用程序中使用Laravel Cashier来创建订阅。它似乎在90%的时间都有效。有时它会将Stipe id,卡片类型和最后4个添加到Users表中,但不会向Subscriptions表添加订阅。我拿了卡并从Vue注册表格和Checkout.js(由条纹提供)中拨打订阅

signup.vue

created(){
 this.stripe = StripeCheckout.configure({

            key: window.OcularLogic.stripeKey,

            image: '',

            locale: 'auto',

            panelLabel: 'Subscribe For ',

            token:( token ) => {

              this.stripeToken = token.id;
              this.stripeEmail = token.email;

              window.axios.post('/subscribe', {
                stripeToken: this.stripeToken,
                planName: this.planName,
                planId: this.planId,
              }).then(response => {
                this.next();
              })
              .catch(error => {
                console.log(error)
              })

            }

          })
},

method:{
subscribe(id, name, cost, description){

            this.planId   = id;
            this.planName = name;

            this.stripe.open({
              name: name,
              description: description,
              zipCode: true,
              amount: cost,
              dataLabel: "Donate",
              email: this.newUser.email,
            })

          },
}

单击某个计划(为Checkout.js设置subscribe)时会调用id, name, cost, description方法

在我的控制器中

public function subscribe(Request $request)
{
    $user = Auth::user();

    $stripeToken  = $request->get('stripeToken');
    $planId       = $request->get('planId');

    //subscribe them
    $user->newSubscription('Athlete', $planId)->trialDays(120)->create($stripeToken);

    $user->trial_ends_at = Carbon::now()->addDays(120);

    $user->save();
}

我很困惑,因为添加了stripe_id和卡信息,但没有添加订阅,它只会偶尔发生一次。有谁有这个问题?不确定如何调试,因为它不会一直失败。

1 个答案:

答案 0 :(得分:0)

来自Laravel Docs

  

如果您希望在未预先收集用户付款方式信息的情况下提供试用期,则可以将用户记录中的trial_ends_at列设置为所需的试用结束日期。

     

收银员将此类试用称为"通用试用",,因为它未附加到任何现有订阅

我已经加入了我认为适用于你情况的相关部分。看来,如果您希望显示订阅,则不得设置trial_ends_at,并且必须预先收集卡详细信息。