我目前正在开发一个flutter应用程序,它可以向外部服务发送一些http请求,但实际上,我在应用程序中保留了一些API密钥,我想使用云函数来保护它们。我如何创建一个函数来执行这样的操作?这是我实际从应用程序发出的Stripe请求。
Future<Customer?> createCustomer(String userId) async {
final String url = 'https://api.stripe.com/v1/customers';
Map<String,String> headers = {
'Authorization': 'Bearer <API_KEY_HERE>',
'Content-Type': 'application/x-www-form-urlencoded'
};
var response = await _client.post(
Uri.parse(url),
headers: headers,
body: {'name': "test", "metadata[userId]": userId},
);
final decodedResult = json.decode(response.body);
log.info(decodedResult);
if (response.statusCode == 200) {
try {
final customer = Customer.fromMap(decodedResult);
currentCustomer = customer;
return customer;
} catch (e) {
log.error(e.toString());
return null;
}
} else {
return null;
}
}
1条答案
按热度按时间avwztpqn1#
您可以很好地进行云计算,从云函数调用API,例如使用axios库。
但是,由于我们使用Node.js的Admin SDK为Firebase编写云函数,因此我建议使用Stripe Node.js API(此链接指向
customers.create
方法)。您可以通过任何类型的云函数执行此操作,例如,您可以从应用调用的可调用函数,也可以通过后台触发的函数(例如,在Firestore集合中创建新客户文档时)执行此操作。
下面对SO的搜索将返回许多代码示例:https://stackoverflow.com/search?q=Firebase+Cloud+Functions+stripe