我有以下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)
有错误: 没有这样的费用:somelongstringhere
然而,某些字符串确实是我的条带仪表板上的ID详细信息。那么为什么Stripe无法收回这笔费用呢?这不是正确的身份吗?
答案 0 :(得分:5)
费用检索呼叫失败的原因是因为费用是在其他帐户上创建的。
创建费用时:
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。
答案 1 :(得分:1)
为什么在您已经拥有stripe.Charge.retrieve(a.charge.id)
内的数据后,您需要在创建费用后立即执行a_charge
?
可能将数据缓存和/或广播到多个服务器/数据库。然后,新创建的数据可能需要几秒钟才能读取。
答案 2 :(得分:1)