条纹支付元素显示已保存的卡片

3

我正在使用带有Stripe支付元素的Laravel。我正在尝试显示我们已经拥有的客户的保存的卡片。我遵循了stripe文档并找到了如何在结帐时显示它的方法。但问题是我没有得到客户的保存的卡片。相反,我在控制台上遇到了错误:

enter image description here

当使用临时密钥进行身份验证时,您必须将Stripe-Version标头设置为明确的API版本,例如2020-08-27。

我已经检查并更改了很多版本从这里开始:

$ephemeralKey = \Stripe\EphemeralKey::create(
                    ['customer' => "$user->stripe_customer_id"],
                    ['stripe_version' => '2019-11-05']
                );

我将版本更改为我在Stripe仪表板上看到的不同版本:

enter image description here

这是我的JS初始化函数:

    // Fetches a payment intent and captures the client secret
async function initialize() {
    // Customize the appearance of Elements using the Appearance API.
    const appearance = { /* ... */ };

    // Enable the skeleton loader UI for the optimal loading experience.
    const loader = 'auto';
    const { clientSecret, customerOptions } = await fetch("{{ route("user-create-stripe-element-payment") }}", {
        method: "POST",
        headers: {
            "Content-Type" : "application/json",
            "accept" : "application/json",
            'X-CSRF-TOKEN': "{{ csrf_token() }}",
            'stripe_version':"2019-11-05"
        },
        body: JSON.stringify({ totalCharge:total }),
    }).then((r) => r.json());

    elements = stripe.elements({
        clientSecret,
        appearance,
        loader,
        customerOptions
    });

    const paymentElement = elements.create("payment");
    paymentElement.mount("#payment-element");
}

我也使用文档中提供的测试版:

    const stripe = Stripe("{{env('STRIPE_KEY')}}", {
    betas: ['elements_customers_beta_1'],
});

但是这个错误没有消失。而且它甚至没有填充付款元素。
请帮助我调试这个问题,或者如果有人有任何建议来检查这里发生了什么。
提前感谢。

1
这个功能是一个秘密的测试版。它没有公开文档,你不能在公开场合寻求秘密测试版的帮助,你需要与Stripe合作。 - koopajah
1个回答

1

你在这里的JS中没有提供API版本

const stripe = Stripe("{{env('STRIPE_KEY')}}", {
    betas: ['elements_customers_beta_1'],
});

将上面的代码更改为:

const stripe = Stripe("{{env('STRIPE_KEY')}}", {
    betas: ['elements_customers_beta_1'],
    apiVersion: 'Your Version Here'
});

在你的情况下,应该是这样的:
const stripe = Stripe("{{env('STRIPE_KEY')}}", {
    betas: ['elements_customers_beta_1'],
    apiVersion: '2019-11-05'
});

您可以在此处阅读更多信息。 https://stripe.com/docs/api/versioning?lang=node 这是针对nodejs的,但API版本覆盖将以相同的方式工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接