在 angular 中使用外部 "live" javascript

Using external "live" javascript in angular

我正在尝试在我的 angular 前端应用程序中集成 stripe。

来自条带文档:“始终直接从 https://js.stripe.com 加载 Stripe.js。您不能将其包含在捆绑包中或自行托管。”

我已将脚本添加到我的索引的 head 标记中,我看到它已正确加载。 <script src="https://js.stripe.com/v3/"></script>

但是当尝试在 ts 代码中使用它时:

declare var stripe: any;

和:

  stripe
    .redirectToCheckout({
      sessionId: this.sessionId
    })
    .then(x => {
      console.log(x);
    });

这导致“未定义条纹”。

这里有解决办法吗?

最好我不想在需要之前加载 javascript 文件,但这可能是另一个问题,或者可能是两者的解决方案。

您所做的将不起作用 - 您自己声明 stripe 变量,这将不起作用。

好消息是 - 您误解了文档。如果你看一下他们的 docs粗体 由我添加):

We also provide an npm package that makes it easier to load and use Stripe.js as a module. For more information, check out the project on GitHub.

这意味着他们有一个 npm 包,可以从他们的页面(即 https://js.stripe.com/v3/)加载脚本,并在一个漂亮的 TypeScript 包装器中为您提供。因此,通过使用他们的 npm 模块,您绝对符合 PCI。

按照 package git page 上的指南进行操作应该会很好。