根据Stripe文档,似乎您实际上可以将优惠券应用于整个客户,但也可以将优惠券应用于他们的订阅。在订阅已经创建之后,我正在尝试将优惠券应用于客户的订阅。我用的是Laravel收银机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);然而,再一次的问题是,如何在事实之后添加优惠券。
发布于 2020-10-06 13:31:12
从收银员v11.*开始,有新的方便方法来更新底层的Stripe订阅对象。若要将优惠券应用于用户的订阅模型而不是客户模型,请在控制器中尝试以下操作:
$user->subscription('default')->updateStripeSubscription(['coupon' => $couponCode]);若要从订阅中删除优惠券,请发送更新请求并传递空优惠券字符串。正如在另一个问题下面所描述的,将优惠券设置为空字符串将移除它,而传递null将被忽略。
$user->subscription('default')->updateStripeSubscription(['coupon' => '']);发布于 2015-12-08 19:16:04
看来我想做的事是不可能的,所以我找到了另一种方法。我所做的就是将用户现有的计划交换为当前的计划,并使用withCoupon方法。这似乎适用于订阅优惠券,似乎没有向用户收费或改变他们的记帐期,但我可能错了.
$company->subscription($company->stripe_plan)
->withCoupon($input['coupon_code'])
->swap(); 发布于 2018-06-26 08:17:05
向现有订阅添加优惠券。还可以使用收银机方法,如下所示:
try {
$user->applyCoupon('coupon_code');
return redirect()->back()->withMessage('Coupon Applied');
} catch (Exception $e) {
return back()->withError($e->getMessage());
}在应用优惠券时,最好将其包装在try / catch块中,因为如果用户输入无效的优惠券,Stripe将返回一个异常,说明失败的原因。
https://stackoverflow.com/questions/34111995
复制相似问题