如何在Flutter中为flutter_stripe创建的PaymentIntent传递Stripe元数据?
如何为flutter_stripe创建的PaymentIntent传递元数据
Stripe的可更新对象(包括Account、Charge、Customer、PaymentIntent、Refund、Subscription和Transfer)确实都支持metadata参数,常用于传递像充值账户编号这类业务信息。但你查看flutter_stripe的PaymentIntent类时发现没有对应的属性或方法,这是因为元数据不应该在Flutter客户端设置,而是要在后端创建PaymentIntent时传入。
正确实现流程
- 后端调用Stripe API创建PaymentIntent时,在请求体中添加
metadata字段,示例请求体如下:{ "amount": 1000, "currency": "usd", "metadata": { "recharge_account_id": "目标充值账户编号" } } - Flutter端通过flutter_stripe SDK调用支付相关方法(比如
initPaymentSheet)时,只需传入后端返回的PaymentIntent客户端密钥(client_secret),元数据会自动关联到该PaymentIntent上。
不在客户端设置元数据的原因
- 安全性:客户端代码易被篡改,若元数据包含敏感业务信息,在客户端设置存在泄露风险。
- 合规性:Stripe最佳实践要求支付核心参数(含元数据)由可信后端生成,避免客户端操作带来的风险。
若业务场景确实需要传递客户端临时生成的非敏感数据,可先将数据传给后端,再由后端附加到PaymentIntent的metadata中。
内容的提问来源于stack exchange,提问作者porton
相关产品推荐
相关产品推荐

