Here is the request I am sending in Swift:
func createCustomerKey(withAPIVersion apiVersion: String, completion: @escaping STPJSONResponseCompletionBlock) {
let url = self.baseURL.appendingPathComponent("ephemeral_keys")
let params: Parameters = [
"api_version":apiVersion,
"uid":Model.shared.uid
]
Alamofire.request(url, method: .post, parameters: params)
.validate(statusCode: 200..<300)
.responseJSON { responseJSON in
switch responseJSON.result {
case .success(let json):
completion(json as? [String: AnyObject], nil)
case .failure(let error):
completion(nil, error)
}
}
}
Here is the cloud function I'm trying to execute. "api_version" is passed as a parameter, but api_version is undefined in the firebase logs. How do I get the api_version? What am I doing wrong?
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const stripe = require('stripe')("sk_test_...");
stripe.setApiVersion('2018-11-08');
admin.initializeApp(functions.config().firebase);
exports.ephemeral_keys = functions.https.onRequest((req, res) => {
const stripe_version = req.api_version;
if (!stripe_version) {
console.log('error with stripe version')
console.log(stripe_version)
res.status(400).end();
return;
}
const uid = req.params.uid;
const user = admin.firestore().collection('users').doc(uid);
console.log('Customer id ' + user.customerId);
stripe.ephemeralKeys.create(
{customer: user.customerId},
{stripe_version: stripe_version}
).then((key) => {
console.log('Ephemeral key ' + key);
res.status(200).json(key);
}).catch((err) => {
res.status(500).end();
});
});