似乎无法使用python检索条带电荷

wca*_*cai 5 python django stripe-payments

我有以下python代码来创建条带电荷.

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

这成功(我认为),因为它显示在我的仪表板中,带有charge_id.但是,在代码之后,紧接着失败:

stripe.Charge.retrieve(a_charge.id)
Run Code Online (Sandbox Code Playgroud)

有错误:没有这样的费用:某些字符串

然而,某些字符串确实是我的条带仪表板上的ID详细信息.那么为什么Stripe无法收回这笔费用呢?这不是正确的ID吗?

Ywa*_*ain 5

费用检索呼叫失败的原因是因为费用是在另一个帐户上创建的.

当您创建费用时:

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

您使用stripe_account参数,该参数指示库Stripe-Account在请求中使用该参数.这用于告知Stripe的API,您的平台代表其中一个连接的帐户发出请求.

因此,为了检索费用,您需要使用相同的stripe_account参数:

the_same_charge = stripe.Charge.retrieve(a_charge.id, stripe_account= teacher_stripe_id)
Run Code Online (Sandbox Code Playgroud)

也就是说,在实践中没有什么用处.你已经有了充电对象了a_charge.如果你执行上面的代码,你会发现它a_charge == the_same_charge.

更一般地说,当您已经拥有Stripe对象的实例并希望从API获取最新状态时,您可以使用以下refresh()方法:

a_charge.refresh()
Run Code Online (Sandbox Code Playgroud)

这将查询API(您无需担心stripe_account参数 - 实例"记住"它并将在后台使用它)并使用从API检索的值刷新实例的属性.