【问题标题】:stripe.redirectToCheckout parameter: price is not an accepted parameter reactstripe.redirectToCheckout 参数:价格不是可接受的参数
【发布时间】:2021-06-25 01:36:05
【问题描述】:

我在我的条带结帐时遇到了一个错误反应...我有一个按钮,当它被点击时,它应该重定向到条带结帐页面。但是,我得到了错误

Uncaught (in promise) IntegrationError: Invalid stripe.redirectToCheckout parameter: price is not an accepted parameter.

当我运行这段代码时会发生这种情况——这是我的整个 checkout.js 页面

 import { loadStripe } from '@stripe/stripe-js';
import firebase from 'firebase';
import getStripe from './stripe';

const firestore = firebase.firestore();


export async function createCheckoutSession(){

    // without uid
    
    // return firestore.collection()
    const checkoutSessionRef =  await firestore.collection('profiledata').doc().collection('checkout_sessions').add(
        
        // {price : 'price_1IGEdTKDPaWWeL1ymwWH5Ubb',
        {price : '9.99',
         success_url : window.location.origin,
        //  cancel_url: window.location.origin,
    }
    );
    
    console.log("Before onSnapShot");
    checkoutSessionRef.onSnapshot(async (snap) => {
        const sessionid = snap.data();
        console.log("Snap Data: ", snap.data());
        console.log("Session ID: ", sessionid);
        if (sessionid) {
            console.log("Inside session ID: ", sessionid);
            const stripe = loadStripe("pk_test_mystripeid")
             stripe.redirectToCheckout(sessionid)
        }
});
}

有人知道为什么会这样吗?

【问题讨论】:

  • 不要。请多次重新发布相同的问题。充其量它会被关闭,但它可能会让你被禁止访问该网站。
  • 没有意识到这一点 :( 只是想为我的问题找到答案。您对正在发生的事情有任何想法吗?
  • 错误信息似乎经常弹出:google.com/…。这个问题的答案似乎很有希望:stackoverflow.com/questions/63446565/…

标签: reactjs firebase stripe-payments


【解决方案1】:

创建结帐会话时,line_items.priceprice_123 形式的价格 ID,而不是整数。

在这种情况下sessionid 是什么?它是字符串还是对象?由于您使用的是会话,因此它应该是cs_test_123 形式的字符串。你的 console.log 的输出是什么?错误发生在哪一行?

stripe.redirectToCheckout 是一种异步方法,但您没有发现任何错误。试试这样的:

const result = await stripe.redirectToCheckout({
  sessionId: session.id,
});

if (result.error) {
  // If `redirectToCheckout` fails due to a browser or network
  // error, display the localized error message to your customer
  // using `result.error.message`.
}

您似乎也没有正确使用loadStripe,因为它也是一个返回承诺的异步方法:https://github.com/stripe/stripe-js#loadstripe

这里发生了很多事情,但信息不多(例如,getStripe 做了什么?)。我建议您花点时间阅读 react-stripe-js 文档以熟悉该库以及如何使用它:https://github.com/stripe/react-stripe-js

【讨论】:

    猜你喜欢
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 2016-07-06
    相关资源
    最近更新 更多