Stripe 仪表板允许将优惠券/促销与产品(以及延伸价格)关联起来。这是有道理的,您经常希望将 50% 优惠券之类的东西与特定产品相关联(例如,仅限年度订阅)。
如何从 API 获取此关联?
用例是用户在结帐 UI 中输入优惠券代码(我们称之为
50OFFANNUAL
)。我需要检查该优惠券代码是否存在,然后检查其所有限制(一次性使用?、时间限制?使用限制?等),并确保客户尝试购买与其链接的产品/订阅。
我可以通过以下方式获取优惠券代码:
$stripeCouponList = $stripe->promotionCodes->all([
'limit' => 1,
'code' => $upperCode,
'active' => true,
]);
但是响应中没有
products
或 prices
对象。尝试 expand
会返回错误(没有这样的可扩展属性)。
同样,我尝试从产品或价格出发,没有可用的
promotion_code
或 promotion_codes
属性。
那么如何从API中获取关联的代码/产品呢?
https://docs.stripe.com/api/promotion_codes/object#promotion_code_object-coupon-applies_to是字段。
获取方式:
https://docs.stripe.com/expand#lists + https://docs.stripe.com/expand#includable-properties 因为默认情况下不包含
applies_to
。
$promoCodes = $stripe->promotionCodes->all([
'code' => $upperCode,
'active' => true,
'expand' => ["data.coupon.applies_to"]
]);
foreach ($promoCodes->autoPagingIterator() as $promoCode) {
print_r($promoCode->coupon->applies_to);
}