我在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
和卡信息,但没有添加订阅,它只会偶尔发生一次。有谁有这个问题?不确定如何调试,因为它不会一直失败。
答案 0 :(得分:0)
来自Laravel Docs:
如果您希望在未预先收集用户付款方式信息的情况下提供试用期,则可以将用户记录中的trial_ends_at列设置为所需的试用结束日期。
收银员将此类试用称为"通用试用",,因为它未附加到任何现有订阅。
我已经加入了我认为适用于你情况的相关部分。看来,如果您希望显示订阅,则不得设置trial_ends_at
,并且必须预先收集卡详细信息。