Flutter集成flutter_stripe 2.0.1调用Stripe支付后后台状态显示未完成问题求助
你遇到的Stripe支付状态为*Incomplete(未完成)*的核心原因,已在Stripe返回的支付失败事件日志中明确说明:你的Stripe账户归属印度地区,按印度监管要求,跨境出口交易的PaymentIntent必须携带description字段,你当前创建PaymentIntent时未传入该参数,导致支付被拦截。
修复方案
1. 修改Firebase云函数index.js代码
修改stripe.paymentIntents.create的参数,新增合法的description字段,同时建议你统一异步逻辑写法,避免同时使用async/await和回调导致的逻辑异常,修改后完整代码如下:
const functions = require('firebase-functions'); const stripe = require('stripe')(functions.config().stripe.testkey); exports.stripePayment = functions.https.onRequest(async (req, res) => { // 处理跨域请求,可选,避免前端调用时跨域报错 res.set('Access-Control-Allow-Origin', '*'); try { const paymentIntent = await stripe.paymentIntents.create({ amount: 1, currency: 'usd', // 新增description字段,内容可自定义为实际商品/服务描述 description: 'Flutter Stripe测试交易' }); res.json({ paymentIntent: paymentIntent.client_secret, }) } catch (err) { console.log(err); res.status(500).json({ error: err.message }) } });
2. 重新部署云函数
修改代码后执行Firebase CLI部署命令更新线上云函数:firebase deploy --only functions
3. 测试支付
重新启动Flutter应用测试支付流程,Stripe后台的PaymentIntent状态就会正常更新为成功。
内容的提问来源于stack exchange,提问作者Subhangi Pawar
相关产品推荐
相关产品推荐

