Chargify API优惠券创建

时间:2011-07-02 21:57:54

标签: ruby-on-rails ruby api chargify

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

根据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).

然而,这对我来说似乎并不适用。任何建议都将受到高度赞赏。

谢谢

2 个答案:

答案 0 :(得分:1)

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

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

很抱歉。

---兰斯沃利 --- Chargify

答案 1 :(得分:0)

我不确定您打算拨打center时要做什么。最明智的做法是零填充优惠券代码。这样就可以了:

"%06d" % rand(1000000)

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

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

上述代码中存在违反DRY(不要重复自己)的行为:“06”和​​“1000000”都取决于优惠券代码的长度。这是一个解决方案:

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

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