[英]Stripe Subscription Testing
我正在嘗試使用條紋創建每月訂閱。
我寫了一個這樣的示例代碼
if event_type == 'checkout.session.completed':
# Payment is successful and the subscription is created.
# You should provision the subscription and save the customer ID to your database.
try:
session = stripe.checkout.Session.retrieve(
event['data']['object'].id, expand=['line_items', 'subscription'])
_current_period_end = session['subscription']['current_period_end']
_current_period_start = session['subscription']['current_period_start']
_product_id = session['subscription']['items']['data'][0]['plan']['product']
_user_id = session['client_reference_id']
_stripe_customer_id = session['customer']
_subscription_id = session["subscription"]['id']
'''
do other things to update user package
'''
except Exception as e:
'''
error log
'''
elif event_type == 'invoice.paid':
if THIS_IS_NOT_FIRST_TIME:
parse_event_data
'''
do other things to extend subscription
'''
我有一些問題;
我從從 stripe.checkout.Session.retrieve object 返回的字典中解析了 web 鈎子結果。 我覺得有點奇怪。 如果條帶更新他的 API 響應並為我使用的 dict 鍵使用不同的名稱怎么辦? 是否有另一種方法來獲取這些值,例如使用點表示法(session.get.product_id)?
我如何理解第一次訂閱未觸發 invoice.paid 事件?
我想測試我的每月訂閱的續訂過程。 我使用了條帶觸發器 invoice.payment_succeeded 但我需要我的測試帳戶的真實數據(測試客戶、訂閱、產品等......)
I can update my user package with using CHECKOUT_SESSION_ID from checkout success url ("success?session_id={CHECKOUT_SESSION_ID}). Should i do that or use checkout.session.completed web hook?
我剛剛返回 HTTP 500 響應對我的 webhook URL 的每個請求,以查看 STRIPE 是否在結帳頁面向用戶顯示錯誤消息。 但是,STRIPE 剛剛創建了一個成功的訂閱。 在這種情況下,STRIPE 將從我的客戶那里收取款項,但是即使我無法在我的數據庫中更新我的客戶 package。 我應該怎么做才能防止這個問題? 我應該創建一個計划作業來在 STRIPE 和我的數據庫之間同步數據嗎?
您有許多單獨的問題更適合直接向 Stripe 的支持團隊提問: https://support.stripe.com/contact/email
現在我將嘗試談談您從第一個問題開始提出的一些問題。
When you call session = stripe.checkout.Session.retrieve(...)
you get back a class that is a Checkout Session
. class map 的所有屬性到 API 參考Z71C7AE294B7ABD866B3FB295B3B中涵蓋的屬性。 這意味着您可以執行session.id
這是cs_test_123
或session.created
這是創建日期的時間戳。 這與整體上作為字典訪問並沒有什么不同。
您還詢問這些是否可以更改,Stripe 在此處的文檔中詳細解釋了他們的向后兼容性政策。 如果他們要將名稱從created
更改為created_at
,他們將在新的 API 版本中進行新的集成,並且除非您手動更改您帳戶的 API 版本,否則不會影響您的代碼,這樣是安全的。
對於invoice.paid
事件,您要查看發票的billing_reason
屬性,該屬性將是第一張發票的subscription_create
。
您可以在測試模式下輕松測試所有這些,創建 session,開始訂閱等。您還可以模擬周期變化。
我希望這會有所幫助,但與他們的支持團隊聊天是你最好的選擇,因為這些是更多的集成問題,而不是編碼問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.