我正在使用 php 制作自己的电子商务网站。我想向我过去的客户提供优惠券代码,而不向可能像野火一样四处传播的每个人发送通用的“10%OFF”。我希望每个代码都是唯一的,但映射到已知的折扣值。
是否有我可以使用的插件/框架/简单功能可以即时评估优惠券代码(字符串),而无需使用所有可能的组合为我的数据库播种?
我正在使用 php 制作自己的电子商务网站。我想向我过去的客户提供优惠券代码,而不向可能像野火一样四处传播的每个人发送通用的“10%OFF”。我希望每个代码都是唯一的,但映射到已知的折扣值。
是否有我可以使用的插件/框架/简单功能可以即时评估优惠券代码(字符串),而无需使用所有可能的组合为我的数据库播种?
试用Voucherify - 它是优惠券代码的 API。使用他们的网络应用程序,您将能够创建优惠券活动,即生成数千个映射到相同折扣的唯一代码:
然后您可以使用PHP SDK将其集成到您的电子商务网站中。要兑换优惠券:
$result = $voucherify->redeem("unique-voucher-code", "customer-id");
$result->voucher->discount->percent_off
如果给定的代码有效,结果将包括指定的折扣。
完全披露,我是 Voucherify 的开发人员。
您可以以某种方式构造优惠券代码,使您无需检查数据库即可确定优惠券的类型(或者您可以将它们存储在一个只包含优惠券类型的表中(见下文),这样您就不需要存储每个可能的组合),然后在末尾附加一个唯一编号,可用于检查优惠券之前是否已使用过。例如:
d8h7bb0778719945
->d8h7bb
是优惠券类型(与此类型的所有其他优惠券相同)并且0778719945
是唯一编号(所有优惠券不同,无论类型如何)。
检查优惠券类型是否对首先购买的商品有效。如果是,请检查0778719945
您的优惠券数据库以查看它是否已被认领。
对于我工作的公司,我们创建了一个“优惠券代码”生成器,它允许我们生成数百万个自我验证代码,而无需将它们加载到数据库中。
代码计算如下:
创建并存储 16 个字符或更多字符的盐。
将计数器从 0 循环到代码数 - 1。对于每个计数器:
一个。生成计数器和盐的哈希值,比如说md5(counter + salt)
湾。生成优惠券代码作为计数器加上哈希值
然后当收到优惠券代码时,我们提取计数器,并对计数器 + salt 进行哈希处理,并将其与代码中找到的哈希值进行比较。如果它们相同,我们就知道代码是有效的。
如果使用代码生成销售,我们将其使用记录在表中,因此不能再次使用。
对于印刷媒体,我们使用大写 base-32 值(2-9、AH、JN、PZ)生成优惠券代码。对于电子邮件和 URL,我们使用修改后的 base-64 值(请参阅urlsafe_b64encode())
不幸的是,我无法提供实际代码,因为它在 NDA 之下。祝你好运!
既然你是自己写的,这就是我的建议。
创建一个新的优惠券类型,在应用优惠券时,它会检查已登录用户的订单历史记录,以确保他们之前已经下过订单。
在您的优惠券表中,添加以下字段requireSignIn
和requirePastOrders
。创建一张设置了这些字段的优惠券。当客户尝试使用该优惠券时,请进行必要的检查以确保他们已登录并之前已下订单。如果这些测试失败,则显示适当的错误消息。