当前位置: 首页 > 知识库问答 >
问题:

条带连接直接充电错误:令牌ID无效

乐正穆冉
2023-03-14

我得到了错误:通过Stripe API(NodeJS)创建paymentIntent时令牌ID无效。

以下工作:

stripe.paymentIntents
    .create({
      amount: 100,
      confirm: true,
      currency: "gbp",
      description: "payment",
      payment_method_types: ["card"],
      payment_method_data: {
        type: "card",
        card: {
          token: customerCard.id, // token generated on the client side
        },
      },
    })

但是现在我想使用Stripe Connect从“简单”充电转变为“直接”充电流,根据本指南:https://stripe.com/docs/connect/direct-charges

如果我按照指南修改我的代码:

stripe.paymentIntents
    .create({
      amount: 1000,
      application_fee_amount: 100, // added this
      confirm: true,
      currency: "gbp",
      description: "payment",
      payment_method_types: ["card"],
      payment_method_data: {
        type: "card",
        card: {
          token: customerCard.id,
        },
      },
    }, { stripeAccount: "{{ ACTUAL_CONNECT_ACCOUNT_ID_IS_HERE }}"}) // added this

调用失败(在我的try catch中)并显示“错误:无效令牌Id:tok_abc…”

我不明白为什么在第一种情况下创建的paymentIntent没有错误,但只要我尝试在connect帐户上使用直接收费创建另一个paymentIntent,并收取申请费(根据文档),并使用完全相同的方法生成新卡/令牌(使用相同的条带测试卡),paymentIntent失败,之前没有问题的令牌现在无效。这个错误似乎具有误导性,或者至少被掩盖了。

我在每次支付尝试上都会使用以下软件包,按照指南生成一个新的卡令牌客户端:https://github.com/expo/stripe-expo.以下是我生成令牌的方式:

import createStripe from "stripe-client"; // https://github.com/expo/stripe-expo

...

// init a new instance of stripe client passing the ID of the connected account to create the token on that account
  const stripeClient = createStripe(
    "pk_test_5...gKi",
    { stripeAccount: "{ACTUAL_ID_IS_HERE}" }
  );
  return stripeClient.createToken({ card });

每次都能得到看起来有效的代币。

有人能帮忙吗?

谢谢

共有1个答案

郝冥夜
2023-03-14

你使用的是Stripe的ReactNative SDK(通过Expo),看起来像是。

Serer端,您正在使用连接帐户创建一个PaymentIntent

    }, { stripeAccount: "{{ ACTUAL_CONNECT_ACCOUNT_ID_IS_HERE }}"}) // added this

部分

同样,您也需要在Connect帐户上创建令牌。

您可以通过在ReactNative代码中构造StripeProvider时传递stripeAccount tId:acct_123来做到这一点:https://stripe.dev/stripe-react-native/api-reference/interfaces/StripeProviderProps.html#stripeAccountId

其中acct_123是您在创建PaymentIntent服务器端时传递的相同帐户ID。

这意味着您的代币创建不会在平台上进行,而是在Connect帐户上进行。

 类似资料:
  • 我正在尝试升级我的MVC网站以使用新的OpenID Connect标准。OWIN中间件似乎非常健壮,但不幸的是只支持“form_post”响应类型。这意味着Google不兼容,因为它在“#”之后返回url中的所有令牌,因此它们永远不会到达服务器,也永远不会触发中间件。 我自己尝试过在中间件中触发响应处理程序,但似乎根本不起作用,所以我有一个简单的javascript文件,它解析出返回的声明,并将它

  • 我目前正在尝试用服务器端stripe api创建收费。 但是我遇到了一个问题;我用两种方法来进行付款: > 用户可以使用条带元素付款 = 或者,如果用户已经在其帐户上添加了一些卡,他可以在列表中选择其中的一张 我想知道是否有办法生成一个带有卡id和客户id的令牌,以便使用这个令牌来创建收费,而不是使用卡id和客户id来对用户收费。 我已经试过了https://stripe.com/docs/api

  • 我们有一个英国Stripe账户,我们的客户将他们的Stripe独立账户连接到该账户。这些关联账户位于不同的国家,他们的关联客户以我们客户自己的货币进行支付。例如,我们的英国客户将拥有英国Stripe银行账户,他们的客户将以英镑(英镑)进行支付。我们的新加坡客户都有新加坡银行账户,他们的客户将以新加坡元进行支付。当新加坡最终客户从我们的新加坡客户那里购买商品时,我们将使用我们的私钥和他们的关联账户I

  • 我试图连接StipeConnect到我的应用程序。我下载了简单的代码示例从https://github.com/rfunduk/rails-stripe-connect-example我更新和安装捆绑包,复制和更改一些会话文件,但收到一个错误: 这是我的档案: 模型/用户。铷 控制器/用户\控制器。铷 控制器/U控制器。铷 控制器/hooks_controller.rb 控制器/applicati

  • 我想这可能是由于虚拟卡的详细信息,但我注入了我的真实卡的详细信息,但仍然相同的错误。 谁能帮我查一下,让我知道我在这里遗漏了什么吗?

  • 我正在尝试与URL(python客户端)建立websocket连接,该URL需要传入jwt令牌,服务器(在GO中实现)在上侦听该请求,并应该通过解析令牌进行身份验证。 我试着用这部分代码来提出请求- 此请求命中运行此代码以验证此请求的服务器 func ParseFromRequest(req*http.Request,keyFunc-keyFunc)(令牌*令牌,错误){ } 每次,我都会得到“E