欧洲的Stripe Connect:使用付款方式向客户收费(React和Node js)

时间:2019-12-09 19:54:53

标签: node.js reactjs stripe-payments

我正在建立一个直接收费的标准条带连接帐户。

这对我来说使用带令牌的charges api对我来说是完美的,但对我而言,按照欧盟的要求使用付款意图api对我来说不起作用。

下面的代码在获取客户端机密方面起作用。

axios.post(`${process.env.REACT_APP_API}/paymentIntent`, stripeData).then(res => {console.log('paymentIntent res', res.data)
    let clientSecret = res.data.clientSecret
    this.props.stripe.createToken({}).then(res => {
        console.log('stripe token', res)
        if (!res.token) {
            this.setState({
                message:
                    "Invalid Credit Card. Your tickets have not been booked. You have not been charged"
            })
        }
        else{
            this.props.stripe.confirmCardPayment(
                clientSecret,
                {
                    payment_method: {
                        card: {
                            token: res.token.id
                        }
                    }
                }
            ).then( res => {console.log(res)})
        }
    })

      }

但是我在控制台中遇到以下错误:

Failed to load resource: the server responded with a status of 404 ()

error:
code: "resource_missing"
doc_url: "https://stripe.com/docs/error-codes/resource-missing"
message: "No such payment_intent: pi_1FnrwXLkWxxxxxxxxxxxxxxx"
param: "intent"
type: "invalid_request_error"

有些事情使我感到困惑。

  1. 我的clientSecret代码的格式为:

pi_1FnrwXLkWxxxxxxxxxxxxxxx_secret_pGBi46eAzWxxxxxxxxxxxxxxx

从错误消息来看,它似乎仅一部分被发送到Stripe api。这是引起错误的原因吗?

  1. 在前端使用以下代码建议使用两个条纹答案。

    var stripe = Stripe(STRIPE_PUBLIC_KEY,{stripeAccount:“ {{connected_account}}”})

如果这是正确的,我该如何修改此代码以进行反应以及如何将其放在组件中?像现在这样,这使我犯了一个错误。

Ref1:Code=50 “No such payment_intent” when confirm payment intent for stripe

Ref2:Stripe Connect PaymentIntent error: No such payment_intent

  1. 在Stripe文档的其他地方,它说使用Payment Methods API而不是带有Payment Intents API的令牌。我应该完全放弃使用令牌吗?

1 个答案:

答案 0 :(得分:0)

我已经找到了这些问题的答案(在Stripe的帮助下)

Q1。这不是问题

Q3。请勿将令牌与Payment Intents API配合使用。

Q2。不要使用文档中的代码。使用

<StripeProvider
    apiKey={process.env.REACT_APP_API_STRIPE_PUBLISH}
    stripeAccount="{{ connected_account }}">

当我对帐户进行硬编码时,这对我有用,但是当我从后端获取关联的帐户ID并保存在State中时,此方法不起作用。我通过有条件地租借该组件来使其工作。我将连接状态初始化为'',并使用了以下代码:

{this.state.userEvent.organiser.stripeAccountID !== '' && 
    <StripeProvider
        apiKey={process.env.REACT_APP_API_STRIPE_PUBLISH}
        stripeAccount={this.state.userEvent.organiser.stripeAccountID}>
            <Elements>
                <CheckoutForm
                    total={this.displayTotal()}
                    applicationFee={this.displayAdminFee()}
                    currency={this.state.userEvent.currency}
                    eventTitle={this.state.userEvent.title}
                    purchaser={this.state.purchaser}
                    userEvent={this.state.userEvent}
                    numTicketsSought={this.state.userEvent.numTicketsSought}    
                />
            </Elements>
     </StripeProvider>
    }