angular - 在 Angular 4 中处理 Paypal onAuthorize 回调

标签 angular paypal checkout

我可以在 Angular 4 应用程序中成功加载 checkout.js,呈现 Paypal 按钮,出现新窗口,我确认付款,付款已处理但我不知道如何设置 onAuthorize 回调来处理 Angular 中的响应4(比如显示成功,存储一条支付记录到MongoDb)。这是我的代码。我可以看到包含付款响应的第一个 console.log,但我无法访问组件的范围,因此在执行第一个 console.log 后什么也没有。我在控制台中没有错误。即使是 console.log("successful!") 也没有被处理。

onAuthorize: (data, actions) => {
            return actions.payment.execute().then(function(payment) {
                console.log("response = " + JSON.stringify(payment));
                this._alertService.success("The extension of subscription was succesfull!");
                this.user.contracts.push({
                        "acquired": new Date(payment.create_time), 
                        "price": payment.transactions[0].amount.total, 
                        "expires": new Date(this.user.expires.getFullYear()+this.selectedAccountExtensionOption.addedYears, this.user.expires.getMonth(), this.user.expires.getDate()) 
                        });
                console.log("successful!");     

            });
        },

最佳答案

问题是上下文 (this) 在回调中不可用。最好的解决方案是按照 answer to this question 中的说明绑定(bind) this

替代解决方案是在 PayPal 回调中发出自定义事件(文档 here)

let event = new CustomEvent('dosomething', { data: "some data"});

然后在您的组件中捕获此事件。文档 here .

@HostListener('dosomething') 
onDoSomething(data) {
 console.log(data)
 // your rest of the implementation
}

关于angular - 在 Angular 4 中处理 Paypal onAuthorize 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46861004/

相关文章:

javascript - 类型 'void' 不可分配给类型 'FormData'

php - Paypal sizeof() : Parameter must be an array or an object that implements Countable

php - 禁用购物车页面

angular - 使用 Angular CLI 预加载字体

javascript - 如何从子组件中获取父表单的字段?

ruby-on-rails - Rails,如何从 Controller 提交 PayPal 请求,而不是表单,URL 编码

php - paypal交易成功/失败后,我如何才能知道客户ID?

javascript - 如何将购物车总额从 html/php 传递到 Stripe,其中购物车总额由 JS 计算

php - 在 WooCommerce 结帐期间验证预定义的运输邮政编码

javascript - 无法从 Angular 中的响应数据分配数据