Выпуски Stripe Subscription JS - PullRequest
       5

Выпуски Stripe Subscription JS

0 голосов
/ 18 октября 2019

Я использую следующий код для создания чередующегося клиента и создания подписки для этого клиента

  stripe.subscriptions.create({
                customer: customer_id,
                items: [
                    {
                        plan: plan_id
                    },
                ],
                trial_period_days: 7,
                expand: ['latest_invoice.payment_intent'],
            }, function (err, subscription) {

 stripe.customers.create({
            email: email,
            source: token,
            metadata: {
                userid: userId
            }
        }, function (err, customer) {

Я хочу, чтобы пользователи подписки подписывались на 1-недельную бесплатную пробную версию, ежемесячный план (они платят после 7дней)

У меня возникают следующие проблемы

  1. Stripe не проверяет номер кредитной карты на продукт. Вы можете ввести любой номер кредитной карты, и оплата будет произведена через

Может кто-нибудь помочь?

Вот код клиента

submit(event) {
    event.preventDefault();

    if ( this.props.planid) {
        setTimeout(() => {
            this.setState({loading: true});
        }, 0);
        var planId = this.props.planid;
        this.props.stripe.createToken({name: "Name"}).then( token => {
            axios.post("/charge/process/" + planId, {
                token: token.id
            }).then(response => {
                if (response.data.status === "ok") {
                    this.setState({complete: true, loading: false})
                } else if (response.data.error) {
                    this.setState({error: response.data.error, loading: false});
                }
            }).catch(error => {
                this.setState({error: "There was an error.", loading: false});
            });
        })
    } else {
        this.setState({error: "Invalid plan id", loading: false});
    }
}


render() {
    if (this.state.loading) return (<Spinner />)
    if (this.state.complete) return (<p align="center">Thanks for purchasing! You can now access the <a
        href="/books">book summaries</a>.</p>);

    var error = "";
    if (this.state.error) {
        error = (<p>{this.state.error}</p>);
    }

    return (
        <div className="CheckoutForm" style={{width: "400px", margin: "0 auto", "textAlign": "center"}}>
            {error}
            <fieldset>
                <legend className="card-only">Pay with card</legend>
                <div className="container">
                    <div id="example4-card" className="StripeElement StripeElement--empty">
                        <div style={{width: "300px", margin: "0 auto"}}>
                            <CardElement/>
                            <br/>
                            <br/>
                            <button onClick={this.submit.bind(this)} className="btn btn-primary purchasebtn">Purchase</button>
                        </div>
                    </div>
                </div>
            </fieldset>

        </div>
    );
}
...