无法正确解析JSON使用带有条纹的Firebase
原学程将引见没法准确剖析JSON应用戴有条纹的Firebase的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。
成绩描写
毛病是-
线程七:";没法依据协定STPCustomerEphEmeralKeyProvider剖析暂时稀钥呼应。保证您的后端将暂时稀钥的未经修正的JSON收送到您的运用法式。有闭具体信息,请参阅https://stripe.com/docs/mobile/ios/standard#prepare-your-api"
毛病的屏幕截图是-
我的MyAPIClient-
import Stripe
import UIKit
class MyAPIClient: NSObject, STPCustomerEphemeralKeyProvider {
let baseURL = URL(string: "https://api.stripe.com")!
func createCustomerKey(withAPIVersion apiVersion: String, completion: @escaping STPJSONResponseCompletionBlock) {
let url = self.baseURL.appendingPathComponent("ephemeral_keys")
var urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false)!
urlComponents.queryItems = [URLQueryItem(name: "api_version", value: apiVersion)]
var request = URLRequest(url: urlComponents.url!)
request.httpMethod = "POST"
let task = URLSession.shared.dataTask(with: request, completionHandler: { (data, response, error) in
guard let response = response as? HTTPURLResponse,
response.statusCode == 二00,
let data = data,
let json = ((try? JSONSerialization.jsonObject(with: data, options: []) as? [String : Any]) as [String : Any]??) else {
completion(nil, error)
return
}
completion(json, nil)
})
task.resume()
}
}
望图掌握器代码-
import UIKit
import Stripe
import FirebaseFunctions
class paymentViewController: UIViewController {
@IBOutlet weak var paymentMethodButton: UIButton!
@IBOutlet weak var proceedToCheckoutButton: UIButton!
var paymentContext: STPPaymentContext!
override func viewDidLoad() {
super.viewDidLoad()
setupStripeConfig()
}
@IBAction func checkoutButtonClicked(_ sender: Any) {
paymentContext.requestPayment()
}
@IBAction func paymentMethodClicked(_ sender: Any) {
print("Payment Method Button Clicked")
paymentContext.presentPaymentOptionsViewController()
}
func setupStripeConfig() {
let config = STPPaymentConfiguration.shared()
config.requiredBillingAddressFields = .none
config.requiredShippingAddressFields = .none
let customerContext = STPCustomerContext(keyProvider: MyAPIClient())
paymentContext = STPPaymentContext(customerContext: customerContext, configuration: config, theme: .default())
paymentContext.paymentAmount = 一000
paymentContext.delegate = self
paymentContext.hostViewController = self
}
}
extension paymentViewController: STPPaymentContextDelegate {
func paymentContextDidChange(_ paymentContext: STPPaymentContext) {
self.paymentMethodButton.titleLabel?.text = paymentContext.selectedPaymentOption?.label
}
func paymentContext(_ paymentContext: STPPaymentContext, didFailToLoadWithError error: Error) {
//When stripeID isn't valid or Ephemeral key could not be retrieved for some reason. Handle this with UIAlert stating error and make user re-enter info
self.navigationController?.popViewController(animated: true)
}
func paymentContext(_ paymentContext: STPPaymentContext, didCreatePaymentResult paymentResult: STPPaymentResult, completion: @escaping STPPaymentStatusBlock) {
var data = [
"customer":"Abhishek"
]
//Pull Payment Method
Functions.functions().httpsCallable("getPaymentMethods").call(data) { (result, err) in
if err != nil {
print("Error (String(describing: err))")
return
}
print(result)
}
let idempotency = UUID().uuidString.replacingOccurrences(of: "-", with: "")
var paymentMethod = paymentContext.selectedPaymentOption
let dataToSend: [String : Any] = [
"amount" : 五000,
"customer" : "Abhishek",
]
Functions.functions().httpsCallable("createPaymentIntent").call(dataToSend) { (result, err) in
if err != nil {
print("Error (String(describing: err))")
return
}
//var paymentParam = STPPaymentIntentParams(clientSecret: result as! String)
print(result)
}
}
func paymentContext(_ paymentContext: STPPaymentContext, didFinishWith status: STPPaymentStatus, error: Error?) {
}
}
怎样整顿?
推举谜底
创立暂时稀钥的要求必需在办事器端收回(应用稀钥),而且您的iOS代码应当向您本身的办事器收回要求,该办事器将挪用Stiped的API。
如今,您的代码(在MyApiClient
中)正在测验考试直交挪用Strike的API去创立暂时稀钥客户端。这没有起感化,假如您记载要求呼应或者检讨仪表板以检查您比来的要求,您能够会瞅到某种毛病新闻。
您应当检查1下Strip的文档,懂得怎样创立暂时稀钥here--它们遍历了一切代码,而且有1个不妨用于尝试的毛刺端面。因为您应用的是Firebase,是以您借不妨检查Havehere的示例。
佳了闭于没法准确剖析JSON应用戴有条纹的Firebase的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。