После успешного API обратный вызов не вызывается должным образом? - PullRequest
0 голосов
/ 05 июня 2018
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 я получаю ответ как оплаченный: true

Если выплачено true, я использую троичного оператора

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);

     } 

 });

}

1 Ответ

0 голосов
/ 05 июня 2018

Полагаю, data.paid - это true, а не "true", поэтому с минимальными изменениями:

data.paid ? PlanAction._createUserPlan(data1) : null

А если серьезно, то для чего и используется выражение if:

if (data.paid) PlanAction._createUserPlan(data1);

Примечание: вы не обрабатываете ошибки из this.props.stripe.createToken() и не передаете обещание вызывающей стороне.Вы должны сделать одно или другое.Исходя из того, что это похоже на обработчик событий DOM, вы захотите обрабатывать ошибки (например, через .catch), а не передавать обещание.

...