#ios #google-cloud-functions #cloud #stripe-payments #applepay
# #iOS #google-cloud-функции #облако #stripe-платежи #applepay
Вопрос:
Я следую документации Stripe Apple Pay. Я не знаю, как передать секрет клиента. Я передаю данные в Stripe. Заказ выполняется, но я не возвращаю информацию обратно в свое приложение, чтобы уведомить пользователя. Ошибка, которую я получаю: ошибка утверждения: secret
формат не соответствует ожидаемому секретному форматированию клиента.
Вызываемая функция запрашивает строку в успешном завершении, но я не знаю, как ее извлечь.
Код, приведенный в документации, выглядит следующим образом:
// Set your secret key. Remember to switch to your live secret key in production!
// See your keys here: https://dashboard.stripe.com/account/apikeys
const stripe = require('stripe')('sk_test_THISISMYSTRIPETESTKEY');
const paymentIntent = await stripe.paymentIntents.create({
amount: 1099,
currency: 'usd',
});
const clientSecret = paymentIntent.client_secret
// Pass the client secret to the client
В моем index.js для моих облачных функций у меня есть функция createApplePayCharge, показанная ниже:
exports.createApplePayCharge = functions.https.onCall( async (data, context) => {
const amount = data.total;
const customerId = data.customer_id;
const paymentMethodId = data.payment_method_id;
const idempotency = data.idempotency;
const description = data.description;
const paymentIntent = await stripe.paymentIntents.create({
payment_method: paymentMethodId,
customer: customerId,
amount: amount,
description: description,
currency: 'usd',
confirm: true,
payment_method_types: ['card']
}, {
idempotencyKey: idempotency
}).then(object => {
console.log('Charge Success: ', object.id);
return paymentIntent.client_secret;
}).catch(err => {
console.log(err);
throw new functions.https.HttpsError('internal', ' Unable to create charge: ' err);
});
});
И в моем ProductViewController, где я отображаю кнопку Apple Pay, у меня есть следующая функция:
func applePayContext(_ context: STPApplePayContext, didCreatePaymentMethod paymentMethod: STPPaymentMethod, paymentInformation: PKPayment, completion: @escaping STPIntentClientSecretCompletionBlock) {
let idempotency = UUID().uuidString.replacingOccurrences(of: "-", with: "")
let data : [String: Any] = [
"total" : 30000.00,
"customer_id" : Api.userService.user.stripeId,
"payment_method_id" : paymentMethod.stripeId,
"idempotency" : idempotency,
"description" : "Mobile Order - Apple Pay"
]
Functions.functions().httpsCallable(Firebase_Functions.applePayCharge).call(data) { (result, error) in
if let error = error {
completion(error.localizedDescription, error)
return
}
completion("Need a String here", nil)
}
}
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти строку, которая мне нужна для ошибок и успешного завершения в приведенном выше коде, что является причиной того, что приложение либо вылетает, либо не завершает процесс заказа со следующей ошибкой: Ошибка утверждения: secret
формат не соответствует ожидаемому секретному форматированию клиента.
Комментарии:
1. Может быть, это будет
result
? Вы пробовали распечатать это?2. Я пробовал это, но ничего не печатает, поэтому я решил, что моя облачная функция была неправильной, однако в журналах отображается ответ.