如何在 onAuthorize 中调用外部函数 在PayPal角度 4.



在下面的代码中,我得到Cannot read property 'http' of undefined是未定义的。如何在授权函数中调用外部自定义函数。

这是我获得帮助的链接 https://developer.paypal.com/demo/checkout/#/pattern/client您的任何帮助都将是可观的。

ngAfterViewInit(): void {
    const total = this.total_amount;
    const selected_package = this.selected_package.name;
    this.loadExternalScript('https://www.paypalobjects.com/api/checkout.js').then(() => {
        paypal.Button.render({
            env: 'sandbox',
            client: {
                production: '',
                sandbox: 'XXXXXXXXXXXXXXXXXXXXXXX'
            },
            commit: true,
            payment: function (data, actions) {
                return actions.payment.create({
                    payment: {
                        transactions: [
                            {
                                amount: { total: total, currency: 'USD' },
                                description: selected_package,
                            }
                        ]
                    }
                })
            },
            onAuthorize: function (data, actions) {
                return actions.payment.execute().then(function (payment) {
                    const formdata: FormData = new FormData;
                    formdata.append('Payment[trns_id]', payment.id);
                    formdata.append('Payment[paypal]', payment);
                    formdata.append('Payment[amount]', payment.transactions[0].amount);
                    formdata.append('Payment[order_id]', order_id);
                    formdata.append('Payment[state]', payment.state);
                    formdata.append('Payment[auth_token]', auth_token);
                    this.http.post(environment.apiUrl + 'orders/paypal-checkout', formdata).subscribe(
                        (result) => {
                            this.responceData = result.json();
                            if (this.responceData.data.status === true && this.responceData.data.status_message === 'success') {
                                this.router.navigateByUrl('/questionnaire/successfully');
                            }
                        },
                        (err) => {
                            console.log('Error' + err);
                        })
                })
            },
            onError: function (err) {
                console.log(err);
            }
        }, '#paypal-button');
    });
}

使用 function 关键字创建新作用域并更改 this 的值。您需要使用不会更改this值的 lambda 函数,如下所示:

您只需要将function (data, actions)替换为(data, actions) =>function(payment)(payment) =>而不是其他任何东西

onAuthorize: (data, actions) => {
    return actions.payment.execute().then((payment) => {

最新更新