【问题标题】:How to get transaction id after successful subscription订阅成功后如何获取交易id
【发布时间】:2019-03-02 05:06:03
【问题描述】:

我正在开发一个提供服务的平台。创建新订阅时,会为第一次计费创建新事务。如何访问交易 ID?

我有一个带有 Braintree 的 Drop-in UI 的表单,我的后端目前看起来像这样:

if (!auth()->user()->subscribed('main')) {
     $subscription = auth()->user()->newSubscription('main', 'membership-monthly')->create($request->payment_method_nonce, []);
     dd($subscription);
}

这成功创建了一个新订阅!

现在我想访问此订阅的第一个计费交易的 ID。 我怎样才能做到这一点?

【问题讨论】:

  • $subscription->id 呢??
  • 这不是我需要的 id。这是我本地数据库中订阅的 ID。我需要的是不同的交易ID。
  • 你找到解决办法了吗?
  • 我目前正在使用 create() 返回的 stripe_id,它可用于在条带仪表板中进行搜索,这足以作为条带系统中记录的参考

标签: laravel braintree laravel-cashier


【解决方案1】:

如果您在订阅和交易之间存在关联,则需要访问权限:

foreach($subscription->transactions() as $transaction){
   //here you access yo transactions id
   dd($transaction);
}

希望能帮到你

【讨论】:

  • 遗憾的是没有 transactions() 方法。尝试 $subscription->transactions 也会返回一个空数组。
【解决方案2】:

可能,您应该提供第二个参数来创建函数, 试试这个:

if (!auth()->user()->subscribed('main')) {
    $payload = array();
    $subscription = auth()
         ->user()
         ->newSubscription('main', 'membership-monthly')
         ->create($request->payment_method_nonce, $payload);
    dd($subscription);
    dd($payload);

}

【讨论】:

    【解决方案3】:

    来自 Laravel Cashier documentation 的数据库架构如下所示:

    Schema::create('subscriptions', function ($table) {
        $table->increments('id');
        $table->unsignedInteger('user_id');
        $table->string('name');
        $table->string('braintree_id');
        $table->string('braintree_plan');
        $table->integer('quantity');
        $table->timestamp('trial_ends_at')->nullable();
        $table->timestamp('ends_at')->nullable();
        $table->timestamps();
    });
    

    我假设在您的情况下获得订阅类似于$subscription->braintree_id

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 2015-11-27
      • 2012-08-17
      • 2016-02-15
      • 1970-01-01
      相关资源
      最近更新 更多