Adyen - checkout.create 不是函数 - Jquery C#

Adyen - checkout.create is not a function - Jquery C#

我正在尝试在 Adyen 中实现会话 (5.0.0),但似乎没有创建 AdyenCheckout。

在“const checkout”变量中我得到了这个。

我并没有按照 adyne 文档尝试使用“await”。

有什么解决方法吗?这是我的尝试。

$.ajax({
  type: "GET",
  url: sessionDataUrl,
  dataType: "json",
  contentType: 'application/json',
  success: function(data) {
    try {
      const configuration = {
        clientKey,
        locale: "en_US",
        environment: "test",
        session: {
          id: data.id,
          sessionData: data.sessionObject
        },
        showPayButton: true,
        paymentMethodsConfiguration: {
          ideal: {
            showImage: true,
          },
          card: {
            hasHolderName: true,
            holderNameRequired: true,
            name: "Credit or debit card",
          },
        },
        onSubmit: (state, component) => {
          if (state.isValid) {}
        },
        onPaymentCompleted: (result, component) => {
          console.info("onPaymentCompleted");
          console.info(result, component);
        },
        onError: (error, component) => {
          console.error("onError");
          console.error(error.name, error.message, error.stack, component);
        },
        onAdditionalDetails: (state, component) => {

        },
      };
      
      const checkout = new AdyenCheckout(configuration);
      const cardComponent = checkout.create('card').mount(document.getElementById('card'));
    } catch (error) {
      console.error(error);
    }
  }
});

因为 AdyenCheckout 应该 return 你一个承诺? 您是否有特定原因试图避免承诺?

此外,你为什么打电话给new?它不是构造函数..但它仍然 return 一个初始化的 Checkout

查看他们的 source-code,他们正在调用类似的东西:

async function AdyenCheckout(props) {
  const checkout = new Checkout(props);
  return await checkout.initialize();
}

无论如何,试试这个:

$.ajax({
  ...
  success: function(data) {
    try {
      const configuration = {
       ...
      };
      
      AdyenCheckout(configuration)
        .then((checkout) => {
          checkout.create('card').mount(document.getElementById('card'));
        });
    } catch (error) {
      console.error(error);
    }
  }
});