繁体   English   中英

如何在条带结帐前检查优惠券是否对客户有效 api

[英]How to check if Coupon is valid for customer before checkout in stripe api

我有一个用例,在使用 Stripe 进行付款之前,我需要确定应用的代码是否对特定客户有效。 假设在 Stripe 中创建了一个优惠券代码为“50%off”,并且只能被客户使用一次。 会有两种情况:

  1. 如果客户是第一次使用它,他们将应用折扣,这很好。
  2. 如果客户第二次使用它,我不想在应用程序级别向他们展示折扣价。 而在 Stripe 级别,也不会提供折扣。

我没有在我的应用程序级别管理优惠券代码,而是使用以下代码来检索优惠券代码数据:

\Stripe\Stripe::setApiKey($this->config->item('stripe_secret_key'));
$couponData = \Stripe\Coupon::retrieve($coupon);

上面的代码与我分享下面的细节

[body] => {
  "id": "50%off",
  "object": "coupon",
  "amount_off": 600,
  "created": 1494427220,
  "currency": "usd",
  "duration": "once",
  "duration_in_months": null,
  "livemode": false,
  "max_redemptions": null,
  "metadata": {
  },
  "name": null,
  "percent_off": null,
  "percent_off_precise": null,
  "redeem_by": null,
  "times_redeemed": 4,
  "valid": true
}

但我无法弄清楚客户是否已经使用过此优惠券代码。 我尝试传递客户 ID 以及以下内容:

\Stripe\Stripe::setApiKey($this->config->item('stripe_secret_key'));
$couponData = \Stripe\Coupon::retrieve($coupon, ['customer' => $stripe_customer_id]);

但它有相同的反应。

谁能帮我解决这个问题,谢谢!

Stripe 不会告诉您优惠券是否已经被客户使用过。 每次客户兑换优惠券时,您都需要在自己的数据库中跟踪这一点。

正如@koopajah提到的有关客户兑换的详细信息,如在Active Redemptions下的 Stripe 优惠券仪表板中所见,无法通过 API 获得。

来自条纹邮件列表

这不是我们目前通过 API 支持的内容。 如果您想获得已领取优惠券的客户名单和数量,则需要在您这边跟踪优惠券兑换情况。 您可以通过网络钩子跟踪兑换情况。

这将适用于一次性优惠券,但可以通过 Stripe 客户和订阅对象的折扣属性获得循环优惠券:

折扣 object包含正在使用的优惠券或促销代码的详细信息。

因此应该可以解析 Stripe 客户或他们订阅的任何应用优惠券。

如果使用促销代码,可以应用一些限制,Stripe 会检查这些限制以阻止再次使用优惠券代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM