对如何在APIClient.swift类中创建Stripe临时密钥感到困惑



所以在过去的两天里,我一直在为如何实现Stripe API而困惑,这是迄今为止我最难理解的事情。因此,我决定使用Firebase和Cloud功能集成Stripe功能,我发现它是无服务器的,这很好。

我一直在努力关注这篇关于iOS Stripe API集成的文章,这篇文章展示了如何创建涉及Stripe的云功能,到目前为止,我已经能够在创建新用户时创建Stripe客户。在那之后,我几乎不知道如何做我下一步想做的事情,即创建短暂的密钥。

我有这个功能,我从另一个SO帖子中获得:

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。有关调用HTTP函数的详细信息,请参阅Firebase文档。

URL将是这样的:

https://<region>-<project-id>.cloudfunctions.net/

最新更新