繁体   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