2013-03-15 34 views
5

我試圖找出一種有效的方法來測試我的服務器如何處理從條紋webhooks。我設置了一個系統,以多個訂閱添加到客戶的信用卡,這是在條紋的網站描述:測試Django響應條紋Webhook

https://support.stripe.com/questions/can-customers-have-multiple-subscriptions

我有是搞清楚如何有效地測試我的服務器是問題正確執行腳本(即將正確的訂閱添加到發票中,將事件記錄在我的數據庫中等)。我現在不太在意自動化測試,我只是努力對腳本進行有效的測試。以前有沒有人用Django做過這件事?您使用哪些資源和工具來運行這些測試?

謝謝!

回答

1

我沒有使用任何工具來運行測試。影響條紋有一個完整的API參考,它顯示您發送給他們的信息,他們也顯示錯誤。條紋很容易安裝,價格便宜,並且在文檔中有完整的細節。

我做的是?

  1. 首先我創建一個條紋帳戶。在該帳戶,他們會給你:

    • TEST_SECRET_KEY:用於發送的條紋(用於測試)
    • TEST_PUBS_KEY支付信息:有條紋(用於測試)
    • LIVE_SECRET_KEY通信時識別您的網站:用於發送的條紋支付和信息(現場)
    • LIVE_PUBS_KEY:有條紋(活)
    • API_VERSION通信時識別您的網站:「2012-11-07」 //這是版本僅適用於測試
  2. 當您登錄後,您會在頂部看到文檔。點擊文檔,他們會一步一步向您提供如何創建表單,如何創建訂閱,如何處理錯誤等等。

  3. 檢查腳本是否正在執行並連接到條帶。點擊FULL API REFERENCE,然後選擇Python。在該頁面中,您將看到您發送的信息和遇到的錯誤。

我真的很喜歡的是,如果條紋檢測到錯誤,系統會指出並給你一個解決方案。解決方案在左側,檢查發送的信息在右側。

條紋分爲兩個世界:測試模式和現場。在測試模式下,您可以執行創建新客戶,添加新發票,設置訂閱等等。在測試模式下你做什麼,在你的Stripe是活的時候都是一樣的。

+0

如果您有其他問題,請隨時詢問。我目前在我們的網站上設置了stripe和dwolla。 – catherine 2013-03-15 18:48:27

+0

嗨凱瑟琳,感謝您的信息。我遇到的問題是,對於webhook,似乎沒有一種好方法來查看我的服務器的響應,或者在測試模式下用客戶,發票等來測試實際事件。您只能從賬戶信息中心點擊「發送測試Webhook」,發送'id':'evt_00000000000000'事件,該事件不允許您實際更新任何賬戶或在Stripe上執行任何實際功能。有任何想法嗎? – bgmaster 2013-03-15 19:17:42

+0

您可以通過在您的應用程序或Stripe中執行添加新客戶,發票,訂閱。你有沒有讀過文檔?有關如何創建和測試 – catherine 2013-03-15 19:23:29

1

我真的很喜歡stripe爲web鉤子提供日誌,但是很難從它們查看錯誤響應,因此我使用Requests庫設置了一個腳本。首先,我去了Stripe儀表板並複製了他們發送的一個請求。

活動&網絡掛接 - >點擊請求之一 - >複製整個請求

import requests 

data = """ PASTE COPIED JSON REQUEST HERE """ 

# insert the appropriate url/endpoint below 
res = requests.post("http://localhost:8000/stripe_hook/", data=data).text 
output = open("hook_result.html", "w") 
output.write(res) 
output.close() 

現在我可以打開hook_result.html,看到可能出現的任何錯誤的Django(給出DEBUG =真在Django)。

+0

Sanketh,我不熟悉請求圖書館,但它看起來可以幫助我滿足我的需求。讓我做一些調查,我會回到你身邊。 – bgmaster 2013-03-15 20:05:42

+0

請求實際上只是內建[urllib2](http://docs.python.org/2/library/urllib2.html)的更好版本,使得使用http請求更容易。 – 2013-03-15 20:13:48

0

測試條紋webhooks是一種痛苦。我不使用Django,所以我的答案會更一般。

我的php webhook處理程序解析webhook數據並相應地分派處理函數。在我的處理程序類中,我爲測試webhooks損壞的所有id設置了具有合法數據的類屬性。然後我在每個處理函數中都有一個條件來測試livemode。如果錯誤,我用合法測試ID替換損壞的ID。

我還有另一個名爲$ fakeLiveMode的類屬性,我在測試時將其設置爲true。這使我能夠像在實時模式下一樣強制處理代碼。

因此,例如,在測試customer.subscription.updated事件時,計劃ID和客戶ID會變得拙劣。所以在那個處理程序,我會這樣做:

if ($event->livemode === true || $this->fakeLivemode) 
{ 
    if ($this->fakeLivemode) 
    { 
     // override botched data returned by test webhook 
     $event->data->object->plan->id = $this->testPlanId; 
     $event->data->object->customer = $this->testCustomerId; 
    } 

    // process webhook 
} 

這有幫助嗎?

1

django-stripe-payments我有一個test suite,雖然遠不是綜合性的,但是要達到目標是一個開始。我所做的只是複製一個真實的webhook數據,擦除敏感數據並將其作爲數據添加到測試中。

+0

+1這正是我在Rails中完成的。 – 2014-09-17 17:03:16