我正在使用 Flutter 和 Swift。我正在尝试使用 AuthrizeNet SDK 对信用卡进行授权,不幸的是,它本身并不支持 Flutter。为了解决这个问题,我在我的 iOS AppDelegate 中创建了一个平台通道,我成功地管理了从 Flutter 接收数据。我现在的问题是如何从授权函数的回调处理程序(来自 AuthorizeNet SDK)中返回该数据?当试图调用 Flutter 结果函数时,Swift 编译器会抛出这个错误:Escaping closure captures non-escaping parameter 'result'
. 这是我的代码:
handler!.getTokenWithRequest(request, successHandler: { (inResponse:AcceptSDKTokenResponse) -> () in
let paymentResponseModel: PaymentResponseModel = PaymentResponseModel.init(
token: inResponse.getOpaqueData().getDataValue(),
resultCode: inResponse.getMessages().getResultCode(),
tokenResultDescription: inResponse.getOpaqueData().getDataDescriptor(),
messageCode: inResponse.getMessages().getMessages()[0].getCode(),
messageText: inResponse.getMessages().getMessages()[0].getText()
)
result(String(data: try! JSONEncoder().encode(paymentResponseModel), encoding: String.Encoding.utf8))
}) { (inError:AcceptSDKErrorResponse) in
let paymentResponseModel: PaymentModelErrorResponse = PaymentModelErrorResponse.init(
code: inError.getMessages().getResultCode(),
message: inError.getMessages().getMessages()[0].getCode(),
details: inError.getMessages().getMessages()[0].getText()
)
result(String(data: try! JSONEncoder().encode(paymentResponseModel), encoding: String.Encoding.utf8))
}
我尝试了在函数之外调用结果函数的不同方式getTokenWithRequest
,但我无法让它工作。我对 Swift 编程相当陌生,所以如果这个问题含糊不清或有一个简单的解决方案,我深表歉意。谢谢!