Как передать cardElement в createPaymentMethod (cardElement, customerId, priceId) React + Stripe? - PullRequest
0 голосов
/ 29 мая 2020

У меня есть их элемент <CardSection /> в компоненте формы SignUp, при отправке я аутентифицирую пользователя, создаю клиента, но не могу понять, как передать <CardSection /> функции createPaymentMethod.

Кое-что из того, что у меня есть: Форма подписки:

handleSignUp = (event) => {
    event.preventDefault();
    let cardElement = document.getElementById('#cardElement');
    signUp(this.state.email, this.state.password, cardElement);
}

Где signUp() выглядит так:

import firebase from './firebase.js';
import { createCustomer } from './createCustomer.js';
import { createPaymentMethod } from './createPaymentMethod.js';

export function signUp(email, password) {
    firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
        // Handle Errors here.
        console.log(`Error in signUp ${error.code}: ${error.message}`);
    });

    createCustomer().then((customer) => {
        let customerId = customer.customer.id;
        let priceId = "price_HIsuBNTXc2NQ7L";
        createPaymentMethod(cardElement, customerId, priceId);
    });
}

Это не работает (я получаю TypeError: JSON.stringify cannot serialize cyclic structures.), и я думаю, что делаю это просто неправильно. Как правильно выполнить эту часть?

В документации (https://stripe.com/docs/billing/subscriptions/fixed-price) этот шаг пропущен с шага 4 до 5. Я довольно зеленый с Stripe и React, поэтому полегче со мной. Что мне здесь не хватает?

1 Ответ

0 голосов
/ 29 мая 2020

Я считаю, что комментарий Эрвана Даниэля верен, и в вашей функции signUp отсутствует аргумент. Его подпись, вероятно, должна быть:

export function signUp(email, password, cardElement)
...