Stripe 返回“没有这样的令牌”错误(格子集成)

Posted

技术标签:

【中文标题】Stripe 返回“没有这样的令牌”错误(格子集成)【英文标题】:Stripe returns a "No such token" error (Plaid Integration) 【发布时间】:2021-09-28 04:48:27 【问题描述】:

当我尝试为所选银行帐户创建新来源时,我从 Stripe 收到此错误。我正在使用 Plaid Node SDK 的新(测试版)版本。这是我的代码:

let user;
const mode = "sandbox";
const dsService = new CaspioDsService();

// Load the user if not already loaded by cognitoAuth
if (!req.user) 
  user = new User(
    dsService,
    new CaspioRefDataService(),
    new AuthUserService(
      organizationId: res.locals.organization.Organization_ID,
      isAuthenticated: res.locals.isAuthenticated,
    )
  );
  await user.load(req.params.userId);
 else 
  user = req.user.userObject;


const configuration = new Configuration(
  basePath: PlaidEnvironments[mode],
  baseOptions: 
    headers: 
      "PLAID-CLIENT-ID": config.plaid.clientId,
      "PLAID-SECRET": mode === "sandbox" ? config.plaid.secretSandbox : config.plaid.secretProduction,
      "Plaid-Version": "2020-09-14",
    ,
  ,
);

const plaidClient = new PlaidApi(configuration);
console.log(configuration.basePath);  // https://sandbox.plaid.com

// Exchange the public token for the Plaid access token
const plaidTokenRes = await plaidClient.itemPublicTokenExchange(
  public_token: req.body.publicToken,
);
const accessToken = plaidTokenRes.data.access_token;
console.log(accessToken); // access-sandbox-d92396c2-1f49-4780-9ae9-23d50645f364

// Get the Stripe bank account token from Plaid
const stripeTokenRes = await plaidClient.processorStripeBankAccountTokenCreate(
  access_token: accessToken,
  account_id: req.body.accountId
);
const bankAccountToken = stripeTokenRes.data.stripe_bank_account_token;
console.log(bankAccountToken);  // btok_1JFMGwGq7ejZoSiwGmM8WSSm

let stripeCustomerId = user.getStripeToken();
const stripeClient = await StripeHelper.getStripeClient(mode); // Get Stripe client in sandbox mode
console.log(stripeCustomerId); // cus_Jt7AWZjC8rHPzt

// Add the source to the Stripe customer and get the bank account info
const bankAccount = await stripeClient.customers.createSource(stripeCustomerId, 
  source: bankAccountToken,
); // Error: No such token: 'btok_1JFMGwGq7ejZoSiwGmM8WSSm'

任何想法我可能做错了什么?我预计问题出在我的代码上,或者可能是 Plaid(我认为这不是 Stripe 问题)。

【问题讨论】:

【参考方案1】:

听起来您从 Plaid 获得了一个令牌,但 Stripe 拒绝了它,这表明您的 Plaid 和 Stripe 设置之间的关系存在问题。您确定您在 Plaid 仪表板中启用了 Plaid/Stripe 集成,并且您使用的客户端 ID/密码与启用集成的 Plaid 帐户匹配吗? Plaid 文档还表明,此错误可能是由使用不匹配的环境集引起的(例如,使用带 Stripe 的生产环境而使用带 Plaid 的沙箱)。

【讨论】:

谢谢亚历克斯。是的,集成在 Plaid 中显示为“开启”,我肯定使用来自同一个 Plaid 帐户的密钥(这是我唯一拥有的)。我还看到了有关 prod 和 staging 不匹配的文档,但我很确定 Plaid 和 Stripe 都在使用 staging。【参考方案2】:

问题是我们连接了错误的 Stripe 帐户。愚蠢的一个,但我发布这个以防其他人犯同样的错误。

【讨论】:

以上是关于Stripe 返回“没有这样的令牌”错误(格子集成)的主要内容,如果未能解决你的问题,请参考以下文章

条纹:没有这样的令牌错误

没有这样的令牌“some_random_token”在 rails 中发现 Stripe 错误

没有这样的令牌:'btok_1JGm2oKFR93cFUSYN2bui4Yb' 当我尝试为 Stripe 客户创建银行账户时

带有 Stripe 和 MongoDB 集成的 GraphQL 突变过早返回 null [重复]

Stripe 中的非英文文本可能吗?

Stripe 定期支付与 masterpass 集成