React native 如何在react native中将测试条带支付更改为实时条带支付

React native 如何在react native中将测试条带支付更改为实时条带支付,react-native,firebase-realtime-database,stripe-payments,React Native,Firebase Realtime Database,Stripe Payments,我正在使用Stripe为我的应用程序付款。我能够配置接受测试付款,这些付款将显示在我的Stripe仪表板上。我现在已经更改了代码中的条带测试密钥,并将它们与活动密钥交换。但是,当我付款时,付款仍然显示为测试模式付款。它甚至显示了一个测试模式的信用卡号,而不是用于实时支付的信用卡号。 我如何获得条纹付款以显示实际的实时付款 这是我的后端代码 我正在使用firebase函数 const stripe = require('stripe')('sk_live XXXXX') exports.compl

我正在使用Stripe为我的应用程序付款。我能够配置接受测试付款,这些付款将显示在我的Stripe仪表板上。我现在已经更改了代码中的条带测试密钥,并将它们与活动密钥交换。但是,当我付款时,付款仍然显示为测试模式付款。它甚至显示了一个测试模式的信用卡号,而不是用于实时支付的信用卡号。 我如何获得条纹付款以显示实际的实时付款

这是我的后端代码 我正在使用firebase函数

const stripe = require('stripe')('sk_live XXXXX')
exports.completePaymentWithStripe = functions.https.onRequest((request,response)=>{
    stripe.charges.create({
        amount: request.body.amount,
        currency: request.body.currency,
        source: request.body.token.tokenId
    })
    .then(charge => {
        response.send(charge);
        return null
    })
    .catch(error => {
        console.log(error)
    })
}
)
这是我的支付函数,它调用stripeapi

stripe.setOptions({
    publishableKey: "pk_live_XXX "
})

const onPaymentPress = async () => {
        setLoading(true);
        const { user = {}} = route.params;
        const { firstName = "", lastName = "" } = user
        const expMonth = Number(expDate.split("/")[0])
        const expYear = Number(expDate.split("/")[1])
        const params = {
            number: ccNumber,
            expMonth: expMonth,
            expYear: expYear,
            cvc: cvv,
            currency: 'usd',
            name: '',
            addressLine1: '',
            addressLine2: '',
            addressCity: '',
            addressState: '',
            addressCountry: '',
            addressZip: '',
        };
        const token = await stripe.createTokenWithCard(params).catch(err => {
            setLoading(false);
            alert(err);
        })
        if (!token) return;

        axios({
            method: 'POST',
            url: "https://us-central1-lvc2-73300.cloudfunctions.net/completePaymentWithStripe",
            data: {
                amount: 100,
                currency: 'usd',
                name: firstName + " " + lastName,
                token: token
            }
        }).then(response => {
            alert("Payment Successful");
            
            setLoading(false);
            updateFirebase(response.data);
        }).catch(err => {
            setLoading(false);
            console.log("err ", err);
            alert(JSON.stringify(err.message));
        })
    }

    updateFirebase = (stripeResponse) => {
        const user = firebase.auth().currentUser;
        const uid = user.uid
        const usersRef = firebase.firestore().collection('users')
        usersRef
            .doc(uid)
            .set({ "subscribed": true }, { merge: true })
            .then(async () => {
                console.log("Success");
                const { id, amount, paid, receipt_url } = stripeResponse;
                const data = { 
                    userId: uid, 
                    stripe_payment_id: id, 
                    amount, paid, receipt_url,
                    created: firebase.firestore.Timestamp.fromDate(new Date())
                };

您可能需要进行更多调试,并查看a)是否实际部署了带有live键的Firebase函数,以及b)您的ReactNative应用程序是否确实在使用live模式键。如果您切换到实时模式键,所有请求都应该在条带仪表板上的实时模式下发生,因此请尝试分解问题并逐步查看它(即,您是否在条带仪表板上的实时模式下收到一个请求?您可能需要进行更多调试并查看一个)如果您的Firebase功能和live键已实际部署,以及b)您的ReactNative应用程序是否确实在使用live模式键。如果您切换到实时模式键,所有请求都应该在您的条带仪表板上的实时模式下发生,因此请尝试分解问题并逐步查看它(即,您是否在条带仪表板上的实时模式下收到单个请求?