You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stripe支付集成时paymentIntentClientSecret需要传入什么参数?

Stripe paymentIntentClientSecret字段说明

paymentIntentClientSecret是Stripe PaymentIntent对象的客户端专用密钥,用于关联对应支付订单的金额、币种、支付状态等核心配置,是客户端初始化支付 sheet 时的必填参数,该字段必须由你的后端服务生成后返回给前端,不允许在前端直接生成或硬编码。


正确的获取&使用流程

  • 后端调用Stripe服务端API创建PaymentIntent对象,传入当前订单的支付金额、币种、关联客户ID等必填参数,创建成功后Stripe接口返回的client_secret字段值就是你需要填充的paymentIntentClientSecret内容
  • 后端同时生成对应客户的临时密钥(customerEphemeralKeySecret),和customerId、paymentIntentClientSecret一起返回给Flutter前端
  • 前端拿到三个参数后再调用initPaymentSheet方法完成初始化,参考正确的填充格式如下:
await Stripe.instance.initPaymentSheet(
  paymentSheetParameters: SetupPaymentSheetParameters(
    applePay: true,
    googlePay: true,
    style: ThemeMode.dark,
    testEnv: true,
    merchantCountryCode: 'US',
    merchantDisplayName: 'Flutter Stripe Store Demo',
    // 以下三个参数均从你的后端接口请求获取
    customerId: "cus_xxxxxxx", // cus开头的客户ID,不是银行卡号
    paymentIntentClientSecret:"pi_xxxxxx_secret_xxxxxx", // 后端返回的client_secret值
    customerEphemeralKeySecret:"ek_xxxxxx", // 后端生成的临时密钥,不是sk开头的账户密钥
  )); 

你当前代码的高危问题必须修复

  1. 你把Stripe账户的sk_test_开头的私钥直接写在前端代码中,这是严重安全漏洞,生产环境会导致你的Stripe账户完全被盗用,sk开头的密钥只能在后端存储使用,绝对不可以暴露给客户端
  2. 你填写的customerId值4242424242424242是Stripe测试银行卡号,不是客户ID,合法的Stripe客户ID是cus_开头的字符串,需要你在Stripe后台或者通过服务端API创建客户后获得
  3. customerEphemeralKeySecret是针对单客户的临时密钥,也需要由后端调用Stripe接口生成后返回给前端,不可以直接填账户私钥

内容的提问来源于stack exchange,提问作者Muhammad Arbaz Zafar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:18:03