You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中Stripe ACH实现:verifySource调用报错及后续步骤咨询

解决Stripe verifySource 未定义错误及后续银行账户验证流程

嘿,我来帮你搞定这个报错,顺便把后续的银行账户验证步骤理清楚~

错误原因一目了然

你碰到的TypeError: Cannot read property 'verifySource' of undefined,核心问题有两个:

  1. 代码里的Stripe方法路径写错了:你用了单数的stripe.customer,但Stripe Node.js SDK里客户相关的方法都挂在**复数的stripe.customers**对象上,单数的stripe.customer根本不存在,所以调用它的verifySource自然会报错。
  2. verifySource的参数顺序搞反了,正确顺序应该是「客户ID在前,源ID在后」。

修正后的可运行代码

我把代码调整成了更清晰的Promise链式写法,避免嵌套回调,同时修正了上面两个关键问题:

var stripe = require("stripe")("sk_test_73xfGiaFaZLWO8oVoNr8PqSe");
var tokenId = "btok_1BiIZkKB2GdGniJfVf8H0Yy0";
var verificationAmounts = [32, 45];

stripe.customers.create({
  email: "paying1.user@example.com",
  source: tokenId,
})
.then(function(customer) {
  // 先把客户ID、邮箱这些信息存到你的数据库里,方便后续调用
  console.log("客户创建成功,ID:", customer.id);
  
  // 调用正确的verifySource方法,注意参数顺序
  return stripe.customers.verifySource(
    customer.id,
    tokenId,
    { amounts: verificationAmounts }
  );
})
.then(function(bankAccount) {
  console.log("验证请求已发送,银行账户详情:", bankAccount);
  // 这一步之后就等用户输入验证金额啦
})
.catch(function(err) {
  console.error("操作出错啦:", err);
});

调用verifySource后的完整后续流程

  1. 等待用户输入小额验证金额:调用verifySource后,Stripe会往用户的银行账户里打两笔小额款(就是你代码里的32和45分),用户的银行账单里会显示对应的交易记录。你需要在应用里加一个输入页面,让用户把这两个金额输进来。
  2. 提交用户输入的金额完成验证:当用户输入后,再次调用verifySource提交金额,确认验证结果:
// 假设从你的表单拿到用户输入的金额
var userInputAmounts = [32, 45];

stripe.customers.verifySource(
  customer.id, // 之前保存的客户ID
  tokenId,
  { amounts: userInputAmounts }
)
.then(function(verifiedAccount) {
  console.log("银行账户验证成功!", verifiedAccount);
  // 记得在你的数据库里把这个客户的银行账户标记为「已验证」状态
})
.catch(function(err) {
  console.error("验证失败:", err);
  // 提示用户检查输入的金额是否正确,或者重新提交银行账户信息
});
  1. 处理验证结果:
    • 验证成功:这个客户的银行账户就可以正常使用了,后续你可以用客户ID发起扣款、创建订阅等操作。
    • 验证失败:返回友好的错误提示给用户,比如“输入的金额不正确,请核对银行账单后重试”。

用户银行账户验证的完整流程梳理

给你把整个流程串一遍,方便你对照:

    1. 你已经完成:通过Stripe工具收集银行账户信息,转换成token。
    1. 你已经完成:用token创建客户ID,关联到用户。
    1. 修正代码后完成:调用stripe.customers.verifySource发起小额验证请求。
    1. 前端开发:给用户做一个输入验证金额的页面。
    1. 后端处理:接收用户输入的金额,再次调用verifySource完成验证。
    1. 后续使用:验证通过后,就可以用客户ID执行支付操作,比如扣款:
// 示例:扣10美元(单位是分)
stripe.charges.create({
  amount: 1000,
  currency: "usd",
  customer: customer.id, // 用已验证的客户ID
})
.then(function(charge) {
  console.log("扣款成功!", charge);
});

内容的提问来源于stack exchange,提问作者Lahari Areti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:30:50