【发布时间】:2023-03-10 21:59:01
【问题描述】:
我正在尝试使用 Stripe 付款来允许用户发送付款。当我的应用程序中创建了一个用户时,我可以成功创建一个条带客户,但是我找不到 ephemeralKey,我认为这就是我看到的原因,
错误,由于错误,无法序列化 JSON:无法读取数据,因为它的格式不正确。
当我创建条带客户时,我使用的代码是
exports.createStripeCustomer = functions.auth.user().onCreate((user) => {
return stripe.customers.create({
email: user.email,
}).then((customer) => {
return admin.database().ref(`/stripe_customers/${user.uid}/customer_id`).set(customer.id);
});
});
以及我如何尝试创建 ephemeralKey
exports.createEphemeralKey = functions.https.onRequest((req, res) => {
const stripe_version = req.body.api_version;
const customerId = req.body.customerId
if (!stripe_version) {
console.log('I did not see any api version')
res.status(400).end()
return;
}
stripe.ephemeralKeys.create(
{customer: customerId},
{stripe_version: stripe_version}
).then((key) => {
console.log("Ephemeral key: " + key)
res.status(200).json(key)
}).catch((err) => {
console.log('stripe version is ' + stripe_version + " and customer id is " + customerId + " for key: " + stripe_key + " and err is " + err.message )
res.status(500).json(err)
});
});
和 myApiCLient 一样
enum APIError: Error {
case unknown
var localizedDescription: String {
switch self {
case .unknown:
return "Unknown error"
}
}
}
static let sharedClient = MyAPIClient()
var baseURLString: String? = "my.functioncloudfunctions.net"
var baseURL: URL {
if let urlString = self.baseURLString, let url = URL(string: urlString) {
return url
} else {
fatalError()
}
}
func createCustomerKey(withAPIVersion apiVersion: String, completion: @escaping STPJSONResponseCompletionBlock) {
let url = self.baseURL.appendingPathComponent("ephemeral_keys")
let defaults = UserDefaults.standard
let customerid = defaults.string(forKey: "customer_id")
AF.request(url, method: .post, parameters: [
"api_version": apiVersion, "customer_id": customerid!
])
.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)
}
}
}
我正在尝试找出我遇到的问题,但不是很清楚,因为在我的 firebase 函数日志中,我看到的只是
这不是很清楚,我尝试将语句打印到控制台,但它们没有显示在我的函数日志中。有什么突出的地方需要改正吗??
我终于在我的条带控制台中收到一条错误消息,提示:
{
"error": {
"message": "Must provide exactly one of these parameters: [:customer, :issuing_card].",
"type": "invalid_request_error"
}
}
【问题讨论】:
标签: ios node.js google-cloud-functions stripe-payments