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

SquareUp生成Nonce后调用Node.js客户端支付报'adapter is not a function'错误排查

Square支付请求报错「adapter is not a function」的原因及修复

错误原因

  1. 代码语法错误:你的createPayment调用中,参数对象未闭合(缺失}),导致JavaScript解析失败,进而触发SDK内部异常,表现为「adapter is not a function」。
  2. 潜在SDK版本不兼容:若使用的Square Node.js SDK版本过旧,或初始化方式与版本不匹配,也可能引发类似异常,但优先排查语法错误。

修复方法

1. 修正语法错误

补充createPayment参数对象的闭合括号,同时确保代码在async函数内执行(因使用了await)。修正后的完整代码示例:

const { Client, Environment } = require('square');

// 初始化Square客户端
const client = new Client({
  environment: Environment.Sandbox,
  accessToken: accessToken,
});

// 支付处理函数需标记为async
async function processPayment(token) {
  if (client instanceof Client) {
    try {
      const response = await client.paymentsApi.createPayment({
        sourceId: token,
        idempotencyKey: Math.random().toString(36).substring(7),
        amountMoney: {
          amount: 100,
          currency: 'USD'
        }
      }); // 补充缺失的闭合}和)
      console.log('支付成功:', response.result);
    } catch (error) {
      console.error('[ERROR] 支付处理失败:', error);
    }
  }
}

2. 验证并更新SDK版本

确保安装Square官方最新稳定版SDK,执行命令更新:

npm update square

v3版本SDK的导入方式为const { Client, Environment } = require('square');,若使用旧版v2需对应调整初始化逻辑,推荐使用v3版本。

3. 优化幂等键生成(可选)

Math.random()生成的幂等键存在重复风险,建议使用更可靠的UUID:

const { v4: uuidv4 } = require('uuid');
// 替换为:
idempotencyKey: uuidv4(),

内容的提问来源于stack exchange,提问作者Fahad Hafeez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:34:59