如何定义折扣本身?
AMOUNT_OFF 优惠券中未配置的币种不符合条件——该币种的订单会被拒绝,而不是悄悄按全价收费。请配置你销售的每一个币种。
持续周期按账单周期计数,因此只对订阅有影响;一次性支付无论如何都只消耗一次折扣。ONCE——仅一次支付,对同一折扣的第二次尝试会被拒绝。REPEATING——N 个周期,同时还要设置 Duration in Cycles。FOREVER——每个周期。
创建优惠券时还要填哪些内容?
折扣类型、折扣值和持续周期创建后不可更改——页面会在你提交前提示,之后只有 Name 和 Metadata 可编辑。Deactivate 停止后续核销,且可逆;Archive 不可逆,并同时停用该优惠券的促销码。两者都不影响已应用的折扣。列表显示的是生命周期标签而不是原始状态:已归档优先,其次是已过期(超过
redeemBy),再是优惠券自身的状态。
如何发放促销码?
批量创建是一个四步向导——选择优惠券、设置前缀和数量、设置限制条件,然后在提交前有一个预览,返回示例码和预计生成时间。生成的码是永久的,所以请先规划好前缀和数量。批量任务异步执行:Batch Tasks 列出 Task ID、优惠券、状态(
PENDING → PROCESSING → SUCCESS / FAILED)、成功数量和创建时间,并可跳转到该任务生成的码。码级别的有效期不能延长优惠券的有效期——优惠券自身的 redeemBy 仍会单独校验,因此两者中较早的一个决定核销截止。
为什么在收银台输入的码被拒绝了?
资格判断在金额计算之前,大致按以下顺序:- 你的账户已禁用优惠券,或尚不存在任何优惠券配置。
- 优惠券或码处于停用、已过期状态,或核销库存已耗尽;或该码不属于同一请求中传入的优惠券。
- 订单金额低于该码在该币种下的 Minimum Amount,或
AMOUNT_OFF未为订单币种配置金额。 - 适用按客户限制、每日限制或 First Time Only,但请求中没有客户标识——折扣会被拒绝,而不是不受限制地应用。
- First Time Only 且该客户已有一次已完成的核销——范围是你的整个账户,而不是这一张优惠券。
ONCE优惠券已被使用,或REPEATING优惠券已用完其周期数。
我在哪里能看到谁核销了什么?
优惠券详情页有 Overview、Promotion Codes 和 Redemption History 三个标签页。每条核销记录包含 Record ID、促销码、客户、来源类型和来源 ID、订单币种下的 Original / Discount / Final 金额、状态和创建时间。可按客户、来源 ID、状态和日期范围筛选,然后导出筛选后的视图。状态流转为CREATED(已预留,尚未最终确定)→ COMPLETED(已确认——分析只统计这一种状态),或 VOIDED(支付从未完成,预留已释放)/ REVERSED(退款后已回滚)。
Discount Analytics 是怎么计算的?
三个注意点决定了数字是否与你自己的对得上。它只统计已完成的核销,因此CREATED、VOIDED 和 REVERSED 被排除。金额跨币种直接相加、不做换算,这也是为什么卡片和表现表格显示的是不带币种符号的裸数字——需要按币种合计请使用核销记录导出。并且 Redemption Rate = 已完成核销数 ÷ 范围内优惠券的 Max Redemptions 之和,因此没有上限的优惠券对分母贡献为 0。
默认范围为最近 30 天。趋势图按每次核销的确认时间在你的 Portal 时区分桶,Daily / Weekly / Monthly 切换对同一数据重新分桶。Coupon Performance 按优惠券拆分该周期:Total Codes、Redemptions、Total Discount、Redemption Rate、Average Order Value。
账户级的优惠券设置有什么作用?
退款时折扣会怎样,订阅试用期间又如何?
在 Full Reversal 策略下,全额退款会回滚核销——记录变为REVERSED,名额同时归还给优惠券和促销码。部分退款则不会回滚:记录保持 COMPLETED,名额仍被占用。从未完成的支付则以 VOIDED 释放预留。回滚只归还实际消耗的部分,因此一个从未获得真实折扣的周期不会把计数器推成负数。
零金额的试用期会占用该周期在优惠券和促销码上的核销名额,但不会消耗折扣自身的生命周期计数。因此,带免费试用的订阅上的 ONCE 优惠券,其唯一一次真实折扣仍可用于首个付费周期。订阅之外,未实际应用折扣的零金额订单不消耗任何东西。
如何通过 API 应用折扣?
创建订单时携带一个promotionInfo 对象,包含两个互斥字段,各最长 64 个字符。promotionInfo.promotionCode 由你或 Waffo 托管的收银台页面使用——收银台的折扣输入框只接受促销码,因此客户永远无法输入优惠券 ID。promotionInfo.couponId 只归你使用,在创建订单时应用某张特定优惠券而不涉及任何码。二者只传其一,切勿同时传;如果码和优惠券 ID 同时到达,该码必须属于该优惠券。创建订单的字段级规则以及收银台页面自身的行为,见创建订单字段指南和收银台页面文档。
我能从 Marketing 页面导出什么?
Marketing 页面管理的一切都是 Portal 功能——创建、编辑、停用和归档优惠券;创建单个码和码批次;浏览核销记录和分析——其中任何一项都没有 API-key 签名的集成接口。唯一的 API 触点是上文创建订单时的promotionInfo。
四个列表有 Export 按钮:Coupons、Promotion Codes、Redemption History 和 Discount Analytics。每次导出作为一个任务运行,并给你一个名为 <type>-<task-id>.csv 的 CSV——前缀为 coupon、promotion-code、promotion-record 或 promotion-analytics。导出遵循屏幕上的筛选条件,最多覆盖 10,000 行。列表和导出中的时间戳按你的 Portal 时区渲染;Portal 会随请求发送其时区偏移。
数字对不上?请联系支持,并附上优惠券 ID、促销码或核销 Record ID。