首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在订阅创建后使用Laravel收银机将优惠券添加到*Stripe订阅*

如何在订阅创建后使用Laravel收银机将优惠券添加到*Stripe订阅*
EN

Stack Overflow用户
提问于 2015-12-05 23:06:39
回答 5查看 4.9K关注 0票数 4

根据Stripe文档,似乎您实际上可以将优惠券应用于整个客户,但也可以将优惠券应用于他们的订阅。在订阅已经创建之后,我正在尝试将优惠券应用于客户的订阅。我用的是Laravel收银机4.2。

以下是我尝试过的:

代码语言:javascript
复制
 $company = Auth::user()->company;
 $customer = $company->subscription()->getStripeCustomer(); // returns a StripeGateway object
 $customer->subscription->applyCoupon($input['coupon_code']);

以下是错误消息:

代码语言:javascript
复制
"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

我可以确认,这实际上将优惠券应用于订阅本身。

代码语言:javascript
复制
$user->subscription('monthly')
 ->withCoupon('code')
 ->create($creditCardToken);

然而,再一次的问题是,如何在事实之后添加优惠券。

EN

回答 5

Stack Overflow用户

发布于 2020-10-06 13:31:12

从收银员v11.*开始,有新的方便方法来更新底层的Stripe订阅对象。若要将优惠券应用于用户的订阅模型而不是客户模型,请在控制器中尝试以下操作:

代码语言:javascript
复制
$user->subscription('default')->updateStripeSubscription(['coupon' => $couponCode]);

若要从订阅中删除优惠券,请发送更新请求并传递空优惠券字符串。正如在另一个问题下面所描述的,将优惠券设置为空字符串将移除它,而传递null将被忽略。

代码语言:javascript
复制
$user->subscription('default')->updateStripeSubscription(['coupon' => '']);
票数 5
EN

Stack Overflow用户

发布于 2015-12-08 19:16:04

看来我想做的事是不可能的,所以我找到了另一种方法。我所做的就是将用户现有的计划交换为当前的计划,并使用withCoupon方法。这似乎适用于订阅优惠券,似乎没有向用户收费或改变他们的记帐期,但我可能错了.

代码语言:javascript
复制
$company->subscription($company->stripe_plan)
        ->withCoupon($input['coupon_code'])
        ->swap(); 
票数 3
EN

Stack Overflow用户

发布于 2018-06-26 08:17:05

向现有订阅添加优惠券。还可以使用收银机方法,如下所示:

代码语言:javascript
复制
try {
$user->applyCoupon('coupon_code');
return redirect()->back()->withMessage('Coupon Applied');  
} catch (Exception $e) {
return back()->withError($e->getMessage());
}

在应用优惠券时,最好将其包装在try / catch块中,因为如果用户输入无效的优惠券,Stripe将返回一个异常,说明失败的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34111995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档