javascript - 从 Vue 组件内的 URL 导入 PayPal(或任何其他脚本)

标签 javascript vue.js paypal

我有一个名为 CallToAction 的组件,我想导入 PayPal,使用他们的按钮并使用脚本激活它,但我不确定如何从 Vue 组件内的 URL 正确导入脚本(我不想拥有它在每个页面上都是全局的,只在呈现 CallToAction 组件的页面上导入它。

我已经尝试了以下操作,但我无法从该脚本访问变量,即使我可以在 html 中看到它也是如此。

<template>
    <div class="paypal-button" id="paypal-plan-container"></div>
</template>

<script>
export default {
    mounted: function() {
        let paypalScript = document.createElement('script')
        paypalScript.setAttribute('src', 'https://www.paypal.com/sdk/js?client-id=sb&vault=true')
        document.head.appendChild(paypalScript)
        paypal.Buttons({
            createSubscription: function(data, actions) {
            return actions.subscription.create({
                'plan_id': 'sb'
            });
            },
            onApprove: function(data, actions) {
            alert(data.subscriptionID);
            }
        }).render('#paypal-plan-container');
    }
}
</script>

出现此错误ReferenceError: paypal is not defined

最佳答案

这是我使用的组件

<template>
  <div ref="paypal"></div>
</template>

<script>
export default {
  data() {
    return {
      order: {
        description: "Buy thing",
        amount: {
          currency_code: "USD",
          value: 1000
        }
      }
    };
  },
  mounted: function() {
    const script = document.createElement("script");
    const ClientID = "";
    script.src = `https://www.paypal.com/sdk/js?client-id=${ClientID}`;
    script.addEventListener("load", this.setLoaded);
    document.body.appendChild(script);
  },
  methods: {
    setLoaded: function() {
      window.paypal
        .Buttons({
          createOrder: (data, actions) => {
            return actions.order.create({
              purchase_units: [this.order]
            });
          },
          onApprove: async (data, actions) => {
            const order = await actions.order.capture();
            // ajax request
          },
          onError: err => {
            console.log(err);
          }
        })
        .render(this.$refs.paypal);
    }
  }
};
</script>

关于javascript - 从 Vue 组件内的 URL 导入 PayPal(或任何其他脚本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59022554/

相关文章:

javascript - ngjstree : error when select node automatically

javascript - jQuery 插件不能在 .vue 组件中工作

javascript - chrome 扩展在任何其他 js 之前在头顶注入(inject) javascript

javascript - 寄出后 express 收不到

php - Paypal 沙盒 : DoExpressCheckoutPayment 10001 Internal Error

PayPal API 错误 -- 此付款请求必须由发件人授权

javascript - 从路径字符串构建嵌套文件夹结构

vue.js - 如何销毁/卸载 vue.js 3 组件?

css - 如何将 CSS/SCSS 与 Vue 组件文件保持在一起

javascript - 如何在 PayPal 智能按钮交易中发送自定义数据字段