Braintree Drop-In 使用 SwiftUI
Posted
技术标签:
【中文标题】Braintree Drop-In 使用 SwiftUI【英文标题】:Braintree Drop-In using SwiftUI 【发布时间】:2019-12-05 01:48:39 【问题描述】:我正在尝试使用 Braintree 设置付款,但 Braintree 尚不支持 SwiftUI,因此我必须将其与 UIKit 集成。我使用UIViewControllerRepresentable
创建了一个包装器,并使用sheet
函数将其呈现为模态;但是,它并没有按预期工作,它似乎正在打开两个模态。
我打开modal时的画面:
这是我的包装:
import SwiftUI
import BraintreeDropIn
struct BTDropInRepresentable: UIViewControllerRepresentable
var authorization: String
var handler: BTDropInControllerHandler
init(authorization: String, handler: @escaping BTDropInControllerHandler)
self.authorization = authorization
self.handler = handler
func makeUIViewController(context: Context) -> BTDropInController
let bTDropInController = BTDropInController(authorization: authorization, request: BTDropInRequest(), handler: handler)!
return bTDropInController
func updateUIViewController(_ uiViewController: BTDropInController, context: UIViewControllerRepresentableContext<BTDropInRepresentable>)
这是我试图打开模式的地方:
Button(action:
self.checkout = true
)
HStack
Spacer()
Text("Checkout")
.fontWeight(.bold)
.font(.body)
Spacer()
.padding(.vertical, 12)
.foregroundColor(.white)
.background(Color.blue)
.sheet(isPresented: self.$checkout)
BTDropInRepresentable(authorization: self.token!, handler: (controller, result, error) in
if (error != nil)
print("ERROR")
else if (result?.isCancelled == true)
print("CANCELLED")
else if result != nil
print("SUCCESS")
// Use the BTDropInResult properties to update your UI
// result.paymentOptionType
// result.paymentMethod
// result.paymentIcon
// result.paymentDescription
controller.dismiss(animated: true, completion: nil)
)
有没有人在 SwiftUI 或类似情况下使用过 Braintree?我做错了什么或忘记了什么? 我知道为 Braintree 结帐编写自己的视图是一种选择,但我想避免这种情况。
谢谢!
【问题讨论】:
【参考方案1】:看看您收到的错误,我敢打赌它与您需要添加的自定义 URL 方案有关:
注册一个 URL 类型
https://developers.braintreepayments.com/guides/paypal/client-side/ios/v4
您还需要设置您的直接付款方式,这些都在我链接的指南中有详细说明。
【讨论】:
谢谢!但我使用信用卡付款,所以如果这真的相关,则没有。 @MorizMartiner 好的,但我很确定您仍然需要实现BTDropInResult
结果值,即使信用卡显示在弹出窗口中。以上是关于Braintree Drop-In 使用 SwiftUI的主要内容,如果未能解决你的问题,请参考以下文章
Braintree iOS Drop-in Payment UI 定制
iOS Swift 中的 Braintree Drop-In:在哪里获取变量 PaymentMethodNonce:
Braintree - 插入式 UI - Apple Pay - Swift 3