支付成功后如何获取买家结账时应用的促销码?
获取支付完成后已应用的促销码
针对你遇到的checkout.session.completed webhook和Retrieve Checkout Session API仅显示折扣、不直接返回促销码的问题,可以通过以下方式获取买家使用的促销码:
通过Discount对象关联查询促销码
结账会话返回的discount字段中,若买家使用了促销码,会包含promotion_code(对应促销码资源的ID)。调用PromotionCode.retrieve()API,传入该ID即可获取完整的促销码信息,其中code字段就是买家结账时输入的促销码内容。示例代码(Python):
import stripe stripe.api_key = "你的API密钥" # 从结账会话数据中提取promotion_code ID promotion_code_id = checkout_session["discount"]["promotion_code"] # 检索促销码详情 promotion_code = stripe.PromotionCode.retrieve(promotion_code_id) # 输出买家使用的促销码 print(promotion_code.code)直接使用优惠券的情况处理
如果discount字段仅包含coupon(无promotion_code),说明买家直接使用了优惠券ID而非促销码。此时可直接取用优惠券的id或name字段作为优惠标识,具体根据你的业务设置逻辑判断。备选方案:自定义Metadata存储
若需要更直接的获取方式,可在创建Checkout Session时,将前端收集到的促销码写入会话的metadata字段。支付完成后,就能直接从结账会话的metadata中读取该促销码。这种方式需要前端配合传递促销码数据,但无需额外调用API查询。
内容的提问来源于stack exchange,提问作者Sandeep
相关产品推荐
相关产品推荐

