【发布时间】: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 字段?而且,试用期结束后,不应该发送真实金额的发票吗?
另外,我创建了一个没有试用期的订阅计划。客户订阅后的那个计划,我得到了正确的时间戳。
提前致谢!
【问题讨论】:
标签: stripe-payments lumen