iOS集成Stripe PaymentSheet报Cannot find type 'configuration' in scope错误如何解决
问题排查与解决方案
根本原因
你不需要手动复制Stripe SDK内部的PaymentSheet.swift源码到自己的项目中,Stripe iOS SDK已经内置了完整的PaymentSheet公开实现,你单独拷贝单个源码文件会缺失大量SDK内部依赖的类型、扩展和实现,从而触发所有你看到的编译报错。
修复步骤
- 第一步:删除你当前自定义的这个
PaymentSheet类文件,完全依赖SDK提供的官方实现。 - 第二步:确认你的Stripe iOS SDK集成版本和你参考的v21.8.1一致,如果使用CocoaPods集成,在Podfile中添加如下配置后重新执行
pod install:
pod 'Stripe', '21.8.1'
- 第三步:直接调用SDK公开的
PaymentSheetAPI即可完成支付逻辑,参考示例代码:
import UIKit import Stripe import Firebase class YourPaymentViewController: UIViewController { func startPayment(clientSecret: String) { // 构造PaymentSheet配置 var config = PaymentSheet.Configuration() config.merchantDisplayName = "你的业务名称" // 可选配置Apple Pay // config.applePay = .init(merchantId: "你的苹果支付商户ID", merchantCountryCode: "CN") // 初始化PaymentSheet let paymentSheet = PaymentSheet( paymentIntentClientSecret: clientSecret, configuration: config ) // 弹出支付页处理结果 paymentSheet.present(from: self) { result in switch result { case .completed: // 处理支付成功逻辑 print("支付完成") case .canceled: // 处理用户取消逻辑 print("用户取消支付") case .failed(let error): // 处理支付失败逻辑 print("支付失败: \(error.localizedDescription)") } } } }
- 所有你遇到的
Cannot find type类报错、presentPanModal不存在的报错都会随着你删除自定义的PaymentSheet类、直接调用SDK公开API而消失。
内容的提问来源于stack exchange,提问作者askit
相关产品推荐
相关产品推荐

