2016-07-26 56 views
0

在测试模式下运行条纹。 (直接施加到条带的仪表板)条纹测试订阅流明5.1

我已经创建用于100GBP量每年计费计划,用7天的试用

然而,以测试网络挂接我已经硬编码的trial_end:

$trialEnd = new DateTime(); 
    $trialEnd->setTimestamp(time()+120); 

    $user = Users::find($this->user()['user_id']); 
    $user->subscription($stripe_plan['stripe_plan'])->trialFor($trialEnd)->create($data['stripeToken'], [ 
     'email' => $this->user()['email'] 
    ]); 
    $user->save(); 

基本上一切顺利,但条形仪表板显示0英镑的第一张发票,一分钟后我收到订阅将在一分钟内结束。毕竟,订阅变成活动(来自测试)状态。

所有的webhooks,甚至第一次订阅添加响应我得到试用结束期而不是订阅结束。

如何获取subscription_ends_at时间戳?

所有网络挂接请求都具有以下时间戳:

{ 
    "id": "evt_18baRrIzJLF7fe6PMDPYD0NM", 
    "object": "event", 
    "api_version": "2016-07-06", 
    "created": 1469558315, 
    "data": { 
    "object": { 
     "id": "sub_8tNBbqy0AmSk8p", 
     "object": "subscription", 
     "application_fee_percent": null, 
     "cancel_at_period_end": false, 
     "canceled_at": null, 
     "created": 1469558268, 
     "current_period_end": 1469558384, 
     "current_period_start": 1469558268, 
     "customer": "cus_8tNB1tWYw3Jw7L", 
     "discount": null, 
     "ended_at": null, 
     "livemode": false, 
     "metadata": { 
     }, 
     "plan": { 
     "id": "yearly_200", 
     "object": "plan", 
     "amount": 20000, 
     "created": 1469545724, 
     "currency": "gbp", 
     "interval": "year", 
     "interval_count": 1, 
     "livemode": false, 
     "metadata": { 
     }, 
     "name": "Full Club Membership - Pay Anually", 
     "statement_descriptor": "FULL MEMBERSHIP", 
     "trial_period_days": 7 
     }, 
     "quantity": 1, 
     "start": 1469558268, 
     "status": "trialing", 
     "tax_percent": null, 
     "trial_end": 1469558384, 
     "trial_start": 1469558268 
    } 
    }, 
    "livemode": false, 
    "pending_webhooks": 1, 
    "request": null, 
    "type": "customer.subscription.trial_will_end" 
}

所以,如果你看一下trial_start和trial_end一样的是current_period_start和current_period_end。

我虽然最初认为,如果这是当前时期..罚款,但试用期满后,本期不应该试一试。

有什么方法可以从Stripe api获取subscription_ends_at字段?而且,在试用期结束后,不应该用实际金额发送发票?

此外,我创建了一个没有试用期的订阅计划。客户订阅后的这个计划,我得到了正确的时间戳。

提前致谢!

回答

0

哦,现在我明白了..我会解释也许会帮助某人:D。

基本上,如果订阅在订阅时获得试用期,您将获得0的发票。然后,即使您将试用设置为在2分钟内与请求一起过期,第一笔付款将在大约10分钟内发生: (如果你设置了webhook url),你会得到一个“type”:“customer.subscription.updated”event,它将包含所有你想要的信息。没有等待10分钟,看看新的发票是否会触发..并创建 - >删除 - >重新创建 - >删除等4小时不同的测试

1

它看起来像你搞清楚了。基本上,延迟来自这样一个事实,即当时间戳过期以便您的试用期满时,您在该结算周期创建新发票的请求将被添加到队列中。通常情况下,队列会立即创建新发票,但在触发前有时可能会持续几分钟。

第一张发票将总是有current_period_*的时间戳,它们映射到trial_period_*。而第二个发票(与invoice.created -event一起显示)将具有计费期间的准确时间戳。