根据 Stripe 文档,您似乎可以将优惠券作为一个整体应用于客户,但您也可以将优惠券应用于他们的订阅。在创建订阅后,我正在尝试将优惠券应用于客户的订阅。我正在使用 Laravel Cashier 4.2。
这是我尝试过的:
$company = Auth::user()->company;
$customer = $company->subscription()->getStripeCustomer(); // returns a StripeGateway object
$customer->subscription->applyCoupon($input['coupon_code']);
这是错误消息:
"Call to undefined method Stripe_Subscription::updateSubscription()"
我可以将该applyCoupon()
方法作为一个整体用于客户,但不能用于实际订阅......感谢您的想法。
Stripe 文档仅显示如何从订阅中删除折扣: 折扣对象。我能在他们的文档中找到的唯一其他信息是:
优惠券和折扣
如果您想为某些客户提供折扣,您可以在仪表板中创建优惠券代码。优惠券有折扣百分比和期限,因此您可以创建优惠券,例如 10% 的终身折扣或一个月 50% 的折扣等。优惠券还可以附加到期日期,在此之后无法使用。下面是为用户订阅添加折扣的示例。在本例中,我们已经创建了一个名为 50OFF1MONTH 的优惠券:
curl https://api.stripe.com/v1/customers/cus_4fdAW5ftNQow1a \ -u sk_test_4LOIhlh19aUz8yFBLwMIxnBY: \ -d coupon=50OFF1MONTH
但是,这不是很有帮助。再一次,Laravel 的文档有点优雅,并且缺少有关该主题的任何信息。
我想知道我是否只需要完全使用新优惠券重新创建订阅对象......但这并不理想,因为您需要一个卡片令牌。
更新 1
我可以确认这确实将优惠券应用于订阅本身
$user->subscription('monthly')
->withCoupon('code')
->create($creditCardToken);
然而,问题再次是如何在事后添加优惠券。