困惑于如何在APIClient.swift类中创建条带临时密钥
因此,在过去的两天里,我一直在琢磨如何实现这个条带API,到目前为止,这是我最难理解的事情。因此,我决定使用Firebase和云功能集成条带功能,我一直认为它是无服务器的,这很好 我一直在努力跟进,到目前为止,我已经能够在创建新用户时创建条带客户。在那之后,我几乎不知道如何做我想做的下一步,即创建短暂的关键点 我从另一个SO帖子中找到了这个函数:困惑于如何在APIClient.swift类中创建条带临时密钥,swift,firebase,google-cloud-firestore,google-cloud-functions,stripe-payments,Swift,Firebase,Google Cloud Firestore,Google Cloud Functions,Stripe Payments,因此,在过去的两天里,我一直在琢磨如何实现这个条带API,到目前为止,这是我最难理解的事情。因此,我决定使用Firebase和云功能集成条带功能,我一直认为它是无服务器的,这很好 我一直在努力跟进,到目前为止,我已经能够在创建新用户时创建条带客户。在那之后,我几乎不知道如何做我想做的下一步,即创建短暂的关键点 我从另一个SO帖子中找到了这个函数: exports.createEphemeralKeys = functions.https.onRequest((req, res) => {
exports.createEphemeralKeys = functions.https.onRequest((req, res) => {
var api_version = req.body.api_version;
var customerId = req.body.customerId;
if (!api_version) {
res.status(400).end();
return;
}
stripe.ephemeralKeys.create(
{ customer: customerId },
{ stripe_version: api_version },
function(err, key) {
return res.send(key);
});
});
这是MyAPIClient.swift
文件中的方法:
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 == 200,
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()
}
这就是我感到困惑的地方,因为将Stripe与Firebase集成是无服务器的,我们应该在
baseURL
中输入什么?目前,baseURL
变量为空,但我也遇到了抛出的错误,。appendingPathComponent
也不可用。如果这是一个愚蠢的问题,请原谅,但我更愿意看起来像个十足的白痴,最终找出如何成功集成这个API,而不是什么都不问。提前感谢。应将baseURL
设置为Firebase函数所在的URL。看一看细节
URL将如下所示:
https://<region>-<project-id>.cloudfunctions.net/
https://-.cloudfunctions.net/