【问题标题】:Laravel Cashier Return Subscription InformationLaravel Cashier 返回订阅信息
【发布时间】:2017-01-31 12:21:46
【问题描述】:

在实施 Laravel Cashier 时,我头疼不已,我已成功创建订阅、向卡收费、收到令牌并将所有所述信息存储在订阅表中。

我正在使用以下代码执行此操作,由于某种原因标准方法不起作用:

public function createSubscription(Request $request) {

    \Stripe\Stripe::setApiKey('sk_test_XXXXXXXXXXXXXXXXX');
      Auth::user('id')->newSubscription('monthly', 'basic')->trialDays(30)->create($request->stripeToken);
      Session::flash('message', 'Your subscription has been updated, thank you.');
            return view('pages.packages')->with('user', Auth::user());
}

尽管这与我们被告知要使用的标准代码不同,但它确实有效! 继续,所以当数据进入表格时,我应该可以打电话给下一个收银员来检查用户是否订阅了;

$user->subscribed();

当然,如果顺便说一句,我必须在此之前构建代码,我们最终会得到这样的结果;

Auth::user('id')->subscribed();

这不起作用,它没有出错,它只是每次都返回 false,所以为了避免视图和所有这些,我这样做了;

dd(Auth::user('id')->subscribed());

所有显示的都是假的,无论他们使用的是用户还是包!

我觉得我的 User.php 中可能缺少一些东西,这是我们将 Cashier 附加到 User 模型的一部分的地方!像这样;

namespace App;

 use Illuminate\Notifications\Notifiable;
 use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Cashier\Billable;



class User extends Authenticatable
{
use Billable;
use Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'password',
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $dates = [
    'trial_ends_at', 'subscription_ends_at',
];
}

现在我可能在这里犯了一个非常明显的错误,但是这个应用程序正在吞噬我的存在,所以任何帮助都将不胜感激!

谢谢

【问题讨论】:

  • “我正在使用以下代码执行此操作,由于某种原因,标准方法无法正常工作......” 你为什么不从那里开始呢?有哪些标准方法?他们为什么不工作?这样的事情说明了您的应用程序中应该解决的更大问题。
  • 坦率地说,标准方法包括我将 Auth 部分转换为 $user 的变量......所以这部分只有很小的区别。我已经在网上搜索了几个小时试图弄清楚这一点。\您有什么可以建议的吗?谢谢
  • 可以通过$request->user()访问当前用户,也可以使用契约和依赖注入做public function createSubscription(Request $request, \Illuminate\Contracts\Auth\Factory $user)自动使$user对你的函数可用。
  • 查看依赖注入和合同后,请尝试将subscribed('plan-name') 用于您的计划。
  • 根据您的新订阅代码,我很确定您想要 subscribed('monthly'),而不是 subscribed('basic')。

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


【解决方案1】:

非常感谢@ceejayoz,这个小问题的答案不是调用保存到条带的实际计划ID,而是调用('monthly')!

$user->subscribed('monthly');

【讨论】:

  • 这是什么愚蠢的设置???传递订阅名称而不是 id ???上帝啊,我花了 3 个小时试图弄清楚为什么我的模型上与订阅相关的所有内容都是空的。我发誓我不小心读到了你的答案,你可能为我节省了一天的工作时间。
猜你喜欢
  • 2022-01-03
  • 2020-07-25
  • 1970-01-01
  • 2015-05-01
  • 2021-04-02
  • 2018-01-15
  • 1970-01-01
  • 2022-01-26
  • 2017-04-06
相关资源
最近更新 更多