1

我目前正在从事一个项目并面临任务问题。我正在尝试随机生成一个 6 位数的优惠券号码并通过那里的 API 将其发布到收费帐户。如果优惠券创建成功,我希望通过电子邮件将相同的优惠券代码发送给客户。

根据 chargify 文档,这就是我应该如何将所有详细信息从我的应用程序发送到 chargify :

{"subscription":{
      "product_handle":"[@product.handle]",
      "customer_attributes":{
        "first_name":"Joe",
        "last_name":"Blow",
        "email":"joe@example.com"
      },
      "credit_card_attributes":{
        "full_number":"1",
        "expiration_month":"10",
        "expiration_year":"2020"
      },
      "coupon_code":"6 digit random code"
    }}
    """

https://[@subdomain].chargify.com/subscriptions.json。

我可以通过这种方法创建一个 6 位随机数字代码:

rand(999999).to_s.center(6, rand(9).to_s).

但是,这似乎对我不起作用。任何建议将不胜感激。

谢谢

4

2 回答 2

1

我不是我们的技术人员或开发人员,但我 99% 确定您只能在该 API 调用中指定先前定义的优惠券代码。您必须在 Chargify 管理 Web 界面中定义优惠券代码。在上面的 API 调用中,您可以将优惠券应用于订阅,但假设您已经在管理界面中定义了该优惠券代码。

我们将在未来添加该功能,但我没有具体的日期。

对于那个很抱歉。

--- 兰斯·沃利 --- Chargify

于 2011-07-03T00:25:44.563 回答
0

我不确定你想对你的电话做什么center。最明智的做法是将优惠券代码填零。这会做到:

"%06d" % rand(1000000)

这将生成诸如“664001”和“061532”之类的代码。

请注意,您想要rand(1000000)而不是rand(999999). 这是因为 rand 为您提供了介于 0 和比参数小 1 之间的随机整数。 rand(999999)只会给你最多 999998 的随机数。

上述代码中违反了 DRY(Don't Repeat Yourself):“06”和​​“1000000”都取决于优惠券代码的长度。这是一个修复:

COUPON_CODE_LENGTH = 6
"%0#{COUPON_CODE_LENGTH}d" % rand(10 ** COUPON_CODE_LENGTH)

虽然更长,但如果优惠券代码长度应该改变,现在只有一件事需要改变。用命名常量替换“幻数”也有助于代码传达其意图。

于 2011-07-02T22:49:50.810 回答