2011-07-02 184 views
1

我目前正在研究一個項目並面臨任務問題。我試圖隨機生成一個6位數的優惠券號碼,並通過那裏的API發佈到財富賬戶。如果優惠券創建成功,我希望通過電子郵件將相同的優惠券代碼發送給客戶。Chargify API優惠券創建

按照chargify文檔,這是我應該如何發送的所有細節,從我的應用程序chargify:

{"subscription":{ 
     "product_handle":"[@product.handle]", 
     "customer_attributes":{ 
     "first_name":"Joe", 
     "last_name":"Blow", 
     "email":"[email protected]" 
     }, 
     "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). 

然而,這似乎並沒有對我的工作。任何建議將不勝感激。

感謝

+0

歡迎計算器!你能告訴我們那些代碼不起作用嗎? –

回答

1

我不是我們的技術人員或開發人員的一員,但我99%確定您只能在該API調用中指定之前定義的優惠券代碼。您必須在Chargify管理員Web界面中定義優惠券代碼。在上面的API調用中,您可以將優惠券應用於訂閱,但假設您已經在管理界面中定義了優惠券代碼。

我們將來會添加該功能,但我沒有特定的日期給你。

對不起。

---蘭斯沃利 --- Chargify

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) 

雖然更長,現在只有一件事情要改變,如果優惠券代碼長度應該改變。使用命名常量替換「幻數」也有助於代碼傳達其意圖。