我在PHP中使用StripeAPI,我不知道如何在特定日期停止客户订阅。
我知道有一个立即取消订阅的选项:
$subscription = \Stripe\Subscription::retrieve('sub_49ty4767H20z6a');
$subscription->cancel();
或者,对于在当前结算周期结束时(客户已支付的持续时间)取消订阅,请执行以下操作:
$subscription->cancel(['at_period_end' => true]);
使用此选项,将安排取消。
但是如何在特定日期取消订阅?在我的系统中,用户可以要求取消,但他必须等待特定日期(至少保留X个月作为订阅者)
你知道我怎么做的吗?谢谢!
Stripe刚刚将它添加到他们的API中,我碰巧偶然发现了它。他们有一个名为“cancel_at”的字段,可以设置为将来的日期。它们没有在文档中列出此属性,因为它是如此新颖。您可以在此处查看响应对象中的值:
https://stripe.com/docs/api/subscriptions/create?lang=php
我已经使用.NET对此进行了测试,并且可以确认它将订阅设置为以您提供的值到期。
没错。好问题。这是一个检查/执行示例:
$today = time();
$customer = \Stripe\Customer::retrieve('Their Customer ID');
$signUpDate = $customer->subscriptions->data[0]->created;
// This will define the date where you wish to cancel them on.
// The example here is 30 days from which they initially subscribed.
$cancelOnDate = strtotime('+30 day', $signUpDate);
// If today is passed or equal to the date you defined above, cancel them.
if ($today >= $cancelOnDate) {
$subscription = \Stripe\Subscription::retrieve('sub_49ty4767H20z6a');
$subscription->cancel();
}
这是一个在订阅时设置取消的示例:
$today = time();
// Cancel them 30 days from today
$cancelAt = strtotime('+30 day', $today);
$subscription = \Stripe\Subscription::create(array(
"customer" => 'Their Customer ID',
"plan" => 'xxxxxxxxx',
"cancel_at" => $cancelAt
));