Я создаю приложение 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>