Я использую Stripe Checkout в своем приложении React. Почему-то я не передаю свойства моей функции onToken правильно, так как получаю неопределенные ошибки.
В конце концов мне нужно отправить кучу реквизита, но пока я просто пытаюсь заставить его работать правильно.
import axios from 'axios'
import React from 'react'
import StripeCheckout from 'react-stripe-checkout';
const PAYMENT_SERVER_URL = '3RD_PARTY_SERVER';
const CURRENCY = 'USD';
export default class Stripe25 extends React.Component {
onToken = (token) => {
axios.post(PAYMENT_SERVER_URL,
{
description,
source: token.id,
currency: CURRENCY,
amount: amount
})
.then(successPayment)
.catch(errorPayment);
}
render() {
return (
<StripeCheckout
token = {this.onToken}
stripeKey = "STRIPE_PUBLIC_KEY"
name = ""
description = ""
image = ""
panelLabel = "Donate"
amount = {2500} // cents
currency = "USD"
locale = "auto"
zipCode = {false}
billingAddress = {true}
>
<button className = "btn btn-primary">
$25
</button>
</StripeCheckout>
)
}
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте сменить source: token.id на source: token && token.id.
Токен может еще не быть определен, когда вы пытаетесь установить идентификатор. Это часто проблема с цепочкой точек в асинхронной среде.
Спасибо вам за помощь. Однако я получаю сообщение об ошибке в описании еще до того, как перейду к токену. Когда я отправляю Stripe Checkout, я получаю сообщения об ошибках. Не удалось загрузить ресурс: сервер ответил статусом 400 () checkout.stripe.com/api/… * удалил личную информацию и Uncaught ReferenceError: описание не определено в TokenCallback.r.onToken [как fn] (Contribute.3fc54992.js: 13) в TokenCallback. триггер (checkout.js: 3)
Из того, что я вижу, в вашем методе onToken единственная доступная переменная - токен. Но вы также ссылаетесь на описание и количество, ни один из которых не доступен нигде в области действия, насколько я могу судить.
Вам нужно будет передать описание и сумму в вашу константу onToken. Вы можете увидеть пример этого, а также то, как передать информацию о доставке в Stripe, в этой статье:
Отправить информацию о доставке в Stripe с помощью React-Stripe-Checkout
Решение будет выглядеть так:
const onToken = (amount, description) => (token, args) =>
axios.post(PAYMENT_SERVER_URL,
{
description,
source: token.id,
currency: CURRENCY,
amount: fromDollarToCent(amount),
metadata: args
})
.then(successPayment)
.catch(errorPayment);
(Токен, аргументы) и метаданные: аргументы являются необязательными, если вы хотите передать информацию о доставке в Stripe.
Привет! Хотя ответ может быть в предоставленной вами ссылке, полезно увидеть реальный пример того, как решать вопросы.
Где определяется описание? Я его нигде не вижу, и он не передается в метод onToken.