handleSubmit = ev => {
ev.preventDefault();
this.props.stripe.createToken().then(payload => {
let data = {
currency: 'USD',
amount: localStorage.getItem("price"),
source: payload.token.id,
description: 'xyz'
}
PlanAction._stripecharge(data, function(data){
let data1 = {
username: localStorage.getItem('username'),
plan: {
id: this.props.request.id,
planName: this.props.request.planName,
planType: this.props.request.planType
}
}
data.paid ? PlanAction._createUserPlan(data1) : null
});
});
}
После успешной зарядки Stripe Charge, Я получаю ответ как оплаченный: правда
Если выплачено верно, я использую тернарный оператор
data.paid ? PlanAction._createUserPlan(data1) : null
Это неправильно? почему PlanAction._createUserPlan (data1) не вызывается, могу ли я знать, что в этом не так?
export function _stripecharge(data,callback) {
let url = "/charges";
let BASE = "https://api.stripe.com/v1"
let actualurl = BASE + url;
stripeApi._callAPI(actualurl, 'POST', data, (type, dt) => {
if (type == 'success') {
dispatcher.dispatch({
type: 'SnackBar',
string: "Payment Success"
})
callback(dt);
}
});
}
Привет! "Ответ PlanAction._stripecharge (data):" Как работает SO, весь ваш вопрос (включая любой необходимый код) должен быть в вашим вопросом, а не просто связан. Две причины: люди не должны выезжать за пределы предприятия, чтобы помочь вам; и ссылки гниют, делая вопрос и ответы на него бесполезными для людей в будущем. Поставьте пожалуйста необходимые реквизиты в вопрос, а не просто ссылку. Подробнее: Как мне задать хороший вопрос?
Я отредактировал с издевательским ответом, пожалуйста, проверьте это
data.paid == "правда"? PlanAction._createUserPlan (data1): null // вы проверяете его "true" вместо true



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


Я предполагаю, что data.paid - это true, а не "true", поэтому с минимальными изменениями:
data.paid ? PlanAction._createUserPlan(data1) : null
А если серьезно, заявление if предназначено именно для этого:
if (data.paid) PlanAction._createUserPlan(data1);
Боковое примечание: вы не обрабатываете ошибки от this.props.stripe.createToken() и не передаете обещание вызывающему. Вы должны сделать то или другое. Исходя из того факта, что это похоже на обработчик событий DOM, вам нужно обрабатывать ошибки (например, через .catch), а не передавать обещание.
нет, я все еще не могу вызвать PlanAction._createUserPlan (data1);
Затем вам нужно будет обновить свой вопрос более подробной информацией (среди прочего, см. этот комментарий). Выполните отладку, посмотрите на фактическое значение data.paid, остановив код на точке останова и используя веб-консоль.
Я редактировал с помощью функции _stripecharge, и это способ использовать обратный вызов
попробуйте
console.info(data)в вашем методеPlanAction._stripecharge, посмотрите, что это