簡體   English   中英

似乎無法使用python檢索條帶電荷

[英]Can't seem to retrieve stripe charge using python

我有以下python代碼來創建條帶電荷。

a_charge = stripe.Charge.create(
amount=cents, 
currency="usd",
source=token,
description="my_description",
application_fee=application_fee,
stripe_account=teacher_stripe_id
)

這成功(我認為),因為它顯示在我的儀表板中,帶有charge_id。 但是,在代碼之后,緊接着失敗:

stripe.Charge.retrieve(a_charge.id)

有錯誤:沒有這樣的費用:某些字符串

然而,某些字符串確實是我的條帶儀表板上的ID詳細信息。 那么為什么Stripe無法收回這筆費用呢? 這不是正確的ID嗎?

費用檢索呼叫失敗的原因是因為費用是在另一個帳戶上創建的。

當您創建費用時:

a_charge = stripe.Charge.create(
  amount=cents, 
  currency="usd",
  source=token,
  description="my_description",
  application_fee=application_fee,
  stripe_account=teacher_stripe_id
)

您使用stripe_account參數,該參數指示庫在請求中使用Stripe-Account 這用於告知Stripe的API,您的平台代表其中一個連接的帳戶發出請求。

因此,為了檢索費用,您需要使用相同的stripe_account參數:

the_same_charge = stripe.Charge.retrieve(a_charge.id, stripe_account= teacher_stripe_id)

也就是說,在實踐中沒有什么用處。 你已經在a_charge擁有了充電對象。 如果你執行上面的代碼,你會發現a_charge == the_same_charge

更一般地說,當您已經擁有Stripe對象的實例並希望從API獲取最新狀態時,您可以使用refresh()方法:

a_charge.refresh()

這將查詢API(您無需擔心stripe_account參數 - 實例“記住”它並將在后台使用它)並使用從API檢索的值刷新實例的屬性。

為什么你需要在創建電荷后立即執行stripe.Charge.retrieve(a.charge.id) ,而你已經擁有a_charge的數據?

數據可以緩存和/或廣播到多個服務器/數據庫。 然后,新創建的數據可能需要幾秒鍾才能讀取。

您在此處使用的代碼是直接在已連接的Stripe帳戶上創建費用。 這是條紋的文檔中涵蓋這里

由於費用是在一個已連接的帳戶上,因此您自己的Stripe帳戶中不存在該費用,並且預計您無法直接檢索該帳戶。 為此,您需要再次傳遞Stripe-Account標頭,如此處所述

你的代碼應該是

the_charge = stripe.Charge.retrieve(
    id=a_charge.id,
    stripe_account=teacher_stripe_id)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM