Stripe 测试订阅 Lumen 5.1
Posted
技术标签:
【中文标题】Stripe 测试订阅 Lumen 5.1【英文标题】:Stripe testing subscription Lumen 5.1 【发布时间】:2016-11-30 14:25:32 【问题描述】:我在测试模式下运行 Stripe。
我创建了一个 100 英镑的年度计费计划,试用期为 7 天(直接在 Stripe 控制面板上。)
但是,为了测试 webhook,我对 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 英镑的发票,一分钟后我得到订阅将在一分钟事件中结束。毕竟,订阅变为 Active(来自 Trialing )状态。
所有的 webhook 甚至第一次订阅都会添加响应,我得到的是试用期结束而不是订阅结束。
如何获取 subscription_ends_at 时间戳?
所有 webhook 请求都具有以下时间戳:
“id”:“evt_18baRrIzJLF7fe6PMDPYD0NM”, “对象”:“事件”, "api_version": "2016-07-06", “创建”:1469558315, “数据”: “目的”: "id": "sub_8tNBbqy0AmSk8p", “对象”:“订阅”, “application_fee_percent”:空, “cancel_at_period_end”:假, “取消在”:空, “创建”:1469558268, “current_period_end”:1469558384, “current_period_start”:1469558268, “客户”:“cus_8tNB1tWYw3Jw7L”, “折扣”:空, “end_at”:空, “现场模式”:假, “元数据”: , “计划”: "id": "yearly_200", “对象”:“计划”, “金额”:20000, “创建”:1469545724, “货币”:“英镑”, “间隔”:“年份”, “间隔计数”:1, “现场模式”:假, “元数据”: , "name": "全俱乐部会员资格 - 年付", "statement_descriptor": "正式会员", “试用期_天”:7 , “数量”:1, “开始”:1469558268, “状态”:“试用”, “tax_percent”:空, “试用结束”:1469558384, “试用开始”:1469558268 , “现场模式”:假, “待定_webhook”:1, “请求”:空, “类型”:“customer.subscription.trial_will_end”因此,如果您查看 trial_start 和 trial_end 与 current_period_start 和 current_period_end 相同。
虽然我最初认为如果这是当前期限.. 很好,但试用期结束后当前期限不应该是试用期。
有什么方法可以从 Stripe api 获取 subscription_ends_at 字段?而且,试用期结束后,不应该发送真实金额的发票吗?
另外,我创建了一个没有试用期的订阅计划。客户订阅后的那个计划,我得到了正确的时间戳。
提前致谢!
【问题讨论】:
【参考方案1】:看来你已经明白了。基本上,延迟来自这样一个事实,即当您的试用到期的时间戳通过时,您在该计费周期创建新发票的请求被添加到队列中。通常,队列会立即创建新发票,但有时会在触发前等待几分钟。
第一张发票将始终具有映射到trial_period_*
的current_period_*
的时间戳。而第二张发票(与invoice.created
-事件一起显示)将具有计费周期的准确时间戳。
【讨论】:
【参考方案2】:哦,现在我明白了.. 我会解释一下,也许会对某人有所帮助:D。
基本上,如果订阅在您订阅时有试用期,您将收到 0 的发票。然后,即使您将试用设置为在 2 分钟内到期,第一次付款也会在大约 10 分钟内发生:D (通过该付款(如果您设置了 webhook url),您将获得一个 "type": "customer.subscription.updated" 事件,该事件将包含所有所需信息。届时您可以更新您的 subscription_ends_at 。
我没有等待 10 分钟来查看新发票是否会被触发.. 并创建 -> 删除 -> 重新创建 -> 删除等等 4 个小时,并进行了不同的测试。
【讨论】:
以上是关于Stripe 测试订阅 Lumen 5.1的主要内容,如果未能解决你的问题,请参考以下文章