# #javascript #firebase #react-native #google-cloud-functions #stripe-payments
Вопрос:
Я использую платежный шлюз stripe в своем приложении React Native с использованием облачных функций firebase. Теперь я столкнулся с проблемой, связанной с передачей динамических значений в строку PaymentIntent, таких как сумма и валюта.
Вот мой код
exports.paymentSheet = functions.https.onRequest(async (req, res) => {
console.log("req", req);
const customer = await stripe.customers.create();
const ephemeralKey = await stripe.ephemeralKeys.create(
{customer: customer.id},
{apiVersion: "2020-08-27"},
);
const paymentIntent = await stripe.paymentIntents.create({
amount: 2000 * 100,
currency: "usd",
customer: customer.id,
});
res.json({
paymentIntent: paymentIntent.client_secret,
ephemeralKey: ephemeralKey.secret,
customer: customer.id,
});
});
Приведенная выше функция является облачной функцией firebase, я должен передать динамическое значение в сумму и валюту, но я не могу этого сделать.
Вот код, в котором я получаю ответ в моем другом компоненте:
const response = await fetch(
'https://domainName/paymentSheet',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: formData,
},
);
const { paymentIntent, ephemeralKey, customer } = await response.json();
setCustomer(customer)
setClientSecret(paymentIntent);
return {paymentIntent, ephemeralKey,customer};
Комментарии:
1. Вам нужно передать некоторые параметры с вашим
formData
значением, которые затем можно будет использовать при вызовах API Stripe. Что находитсяformData
в данном случае?2. FormData-это объект, содержащий всю необходимую информацию, такую как константа цены и валюты FormData = новые FormData(); FormData.append («цена», 8766); FormData.append («валюта», «доллар США»);
3. В частности, эти параметры будут доступны в вашей функции для объекта запроса
req.body
. Есть ли какая-то особая причина, по которой вы используете FormData, а не JSON?4. @JonathanSteele Не могли бы вы, пожалуйста, объяснить немного больше, потому что я не получаю это через req.body.
5. Когда вы
console.log(req.body)
выполняете своюpaymentSheet
функцию, каково ее содержание?