首页 > 解决方案 > 如何将 cardElement 传递给 createPaymentMethod(cardElement, customerId, priceId) React+Stripe?

问题描述

<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 很熟悉,所以请放轻松。我在这里想念什么?

标签: htmlreactjsstripe-payments

解决方案


我相信 Erwan Daniel 的评论是正确的,您的signUp函数缺少参数。它的签名应该是:

export function signUp(email, password, cardElement)

推荐阅读