您可能知道,Firebase的Stripe支付扩展做以下操作:
- 创建一个
products
集合,填充在Stripe中管理的产品。 - 在
customers/{id1}/checkout_sessions/{id2}
下创建文档,创建分条支付。文档被更新为用户可以用来支付的支付URL。 - 支付后,一个文件得到创建的条纹在
customers/{id1}/payments/{id3}
如何将注册的付款与checkout_sessions中的文档关联?
checkout_session
文档看起来像
{
cancel_url: (CancelUrl),
client: "web",
created: (Timestamp),
mode: "payment",
price: (The priceId associated to the product),
sessionId: (The session id of the checkout_session),
success_url: (SuccessUrl)
}
我自己创建了checkout_session
文档,所以我可以在那里添加额外的元数据,但我不确定条纹是否可以使用它。
payment
文档明显更加复杂。但是我唯一能关联到任何东西的id是客户stripeId
,它在支付文档上显示为customer
。
基本上我正在尝试做以下事情。
- 用户创建一个带有一些自定义属性(名称、选项等)的数字项目。这可能发生在
checkout_sessions
文档的创建过程中。 他们使用提供的URL支付。 - 创建
payments
文档 - 这是你帮我弄清楚的地方,以验证他们所做的支付是与创建的数字项目相关联的。
我有一个可能会起作用的想法是这样做:在创建checkout_sessions
文档期间,我可以创建一个"凭证",而不是允许创建数字项目;对于那个特定的项目。它不会有任何个性化或选项,但我能做的是在支付文档上创建onCreate云功能。如果支付成功,则允许创建数字项目。我可以根据所购买的商品查找"模板"。
我不喜欢这个选项,因为至少有两个潜在的冷启动延迟,这可能会使这是一个糟糕的用户体验。
您应该侦听checkout.session.completed
事件并检索结帐会话对象的line_items
。从那里你会知道哪些物品被成功购买了。
详细信息请参见集成文档
在创建checkout_sessions
文档时,您可以添加一个metadata
对象,该对象可以包含键:值对,该对象将出现在payments
集合中创建的文档的根目录上。