问题描述
我正在尝试在 SwiftUI 上实现 Stripe。用户注册后,我希望他们在不进行实际付款的情况下向其帐户添加付款方式。我已经使用 UIViewRepresentable 成功创建了 STPPaymentCardTextField。但是,我在使用 STPAuthenticationContext 时遇到了问题。我不太确定如何解决这个问题,因为 Stripe 文档中的示例都是针对 UIKit 的。这是我目前所拥有的:
struct StripePaymentCardTextField: UIViewRepresentable {
@Binding var cardParams: STPPaymentMethodCardParams
@Binding var isValid: Bool
func makeUIView(context: Context) -> STPPaymentCardTextField {
let input = STPPaymentCardTextField()
input.borderWidth = 0
input.backgroundColor = UIColor(ColorManager.brandGray)
input.cornerRadius = 10
input.becomeFirstResponder()
input.delegate = context.coordinator
return input
}
func makeCoordinator() -> StripePaymentCardTextField.Coordinator { Coordinator(self) }
func updateUIView(_ view: STPPaymentCardTextField,context: Context) { }
class Coordinator: NSObject,STPPaymentCardTextFieldDelegate,STPAuthenticationContext {
func authenticationPresentingViewController() -> UIViewController {
return self
}
var parent: StripePaymentCardTextField
init(_ textField: StripePaymentCardTextField) {
parent = textField
}
func paymentCardTextFieldDidChange(_ textField: STPPaymentCardTextField) {
parent.cardParams = textField.cardParams
parent.isValid = textField.isValid
}
func createPaymentMethod(setupIntentClientSecret: String) {
let paymentMethodParams = STPPaymentMethodParams(card: parent.cardParams,billingDetails: nil,Metadata: nil)
let setupIntentParams = STPSetupIntentConfirmParams(clientSecret: setupIntentClientSecret)
setupIntentParams.paymentMethodParams = paymentMethodParams
let paymentHandler = STPPaymentHandler.shared()
paymentHandler.confirmSetupIntent(setupIntentParams,with: self) { (status,setupIntent,error) in
switch (status) {
case .Failed:
// Setup Failed
break
case .canceled:
// Setup canceled
break
case .succeeded:
// Setup succeeded
break
@unkNown default:
fatalError()
break
}
}
}
}
}
在以下代码行中,我收到错误“无法将类型为‘StripePaymentCardTextField.Coordinator’的返回表达式转换为返回类型‘UIViewController’”
func authenticationPresentingViewController() -> UIViewController {
return self
}
任何帮助将不胜感激! :)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)