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

如何在Solana Pay(Web3.js v1.41.3)中检查交易成功并打印签名

如何检查Solana交易是否成功(Web3.js v1.41.3)

你可以通过两种方式检查交易状态,核心是利用Web3.js提供的交易确认和查询接口:

方法一:通过confirmTransaction返回结果直接判断

confirmTransaction方法本身会返回交易的确认结果,其中包含交易是否成功的状态信息。你可以修改代码,捕获返回值并检查err字段:

const { signature } = await window.solana.signAndSendTransaction(transaction);
// 确认交易时指定finalized级别,确保交易不会回滚
const confirmationResult = await connection.confirmTransaction(signature, 'finalized');

// 检查交易状态
if (confirmationResult.value.err) {
  console.error('交易失败:', confirmationResult.value.err);
  // 这里可以添加失败后的业务逻辑,比如提示用户
} else {
  console.log('交易成功完成');
  // 执行交易成功后的操作,比如更新页面状态
}

说明:

  • 'finalized'是Solana的交易确认级别,代表交易已被集群最终确认,不会出现回滚。如果不需要这么严格,也可以用'confirmed',但前者更安全。
  • 如果confirmationResult.value.err存在,说明交易执行失败,该字段会包含具体的错误信息(比如指令执行错误、余额不足等)。

方法二:通过getTransaction获取完整交易详情

如果需要更详细的交易信息(比如执行日志、账户变动),可以调用getTransaction接口查询交易的完整元数据:

const { signature } = await window.solana.signAndSendTransaction(transaction);
await connection.confirmTransaction(signature, 'finalized');

// 获取交易详情,指定finalized确保拿到最终状态
const transactionDetails = await connection.getTransaction(signature, {
  commitment: 'finalized'
});

// 检查交易状态
if (transactionDetails.meta.err) {
  console.error('交易失败详情:', transactionDetails.meta.err);
  // 可以查看logMessages调试错误:console.log(transactionDetails.meta.logMessages)
} else {
  console.log('交易成功,完整详情:', transactionDetails);
  // 比如提取日志:console.log('交易日志:', transactionDetails.meta.logMessages)
}

说明:

  • transactionDetails.meta包含交易的核心执行数据,err字段为空则代表交易成功;
  • logMessages字段可以查看链上执行的日志信息,方便调试交易失败的原因。

内容的提问来源于stack exchange,提问作者Abhishek Chatterjee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:54:14