Добавление проверки в Angular PayPal - PullRequest
0 голосов
/ 30 июня 2019

Я создаю приложение Angular, в которое добавляю проверки PayPal. Мне удалось интегрировать это очень хорошо, следуя документации онлайн. Прямо сейчас я хочу добавить некоторую проверку формы Angular перед отправкой, я хочу увидеть, ввел ли пользователь какое-либо значение в какое-либо поле ввода или нет, а затем на основании этого либо запустить рабочий процесс PayPal для отображения сообщения об ошибке проверки. Я следую за документацией ниже: https://developer.paypal.com/docs/checkout/integration-features/validation/#synchronous-validation

Проблема в том, что всякий раз, когда я пытаюсь вызвать actions.disable(); (который должен остановить нормальный рабочий процесс открытия способа оплаты), я получаю следующую ошибку: Uncaught Error: TypeError: Cannot read property 'disable' of undefined. Мне нужна помощь, чтобы выяснить, как как-то остановить нормальный рабочий процесс при ошибке, я уже знаю, как добавить проверку.

Вот как выглядит мой контроллер:

paypalConfig = {
  env: 'sandbox', // sandbox or production
  client: {
    sandbox: this.PAYPAL_SANDBOX_CLIENTID,
    production: this.PAYPAL_PROD_CLIENTID
  },
  commit: true,
  payment: (data, actions) => {
    return actions.payment.create({
        payment: {
            transactions: [
                { amount: { total: this.amount, currency: this.currency } }
            ]
        }
    });
  },
  onInit: (data, actions) => {
    console.log(5555555)

    // Disable the buttons
    actions.disable();
  },
  onClick: (data, actions) => {
    console.log(4444);

    // Disable the buttons
    actions.disable();
  },
  onAuthorize: (data, actions) => {
    return actions.payment.execute().then((payment) => {
        // do something when payment is successful
    });
  }
}; 

ngAfterViewChecked () {
  if (!this.addScript && this.navbarOptions.donate) {
    this.addPaypalScript().then(() => {
      paypal.Button.render(this.paypalConfig, '#paypal-checkout-btn');
    });
   }
}

addPaypalScript() {
  this.addScript = true;
  return new Promise((resolve, reject) => {
    const scriptTagElement = document.createElement('script');
    scriptTagElement.src = 'https://www.paypalobjects.com/api/checkout.js';
    scriptTagElement.onload = resolve;
    document.body.appendChild(scriptTagElement);
    //document.querySelector('#paypal-checkout-btn').setAttribute('style', 'pointer-events: none; opacity: 0.5');
  });
 }

И мой HTML:

<div class="pt-2" id="paypal-checkout-btn"></div>
...