You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Square Connect C# SDK验证交易时RetrieveTransaction返回NOT_FOUND异常

解决Square Connect C# SDK调用RetrieveTransaction接口返回NOT_FOUND异常的思路

你说已经确认Location ID和交易ID都没问题,重复调用还是碰到这个报错,那咱们从Square几个容易踩的隐性坑来排查:

  • 先核对环境是否完全匹配:Square的沙盒(Sandbox)和生产(Production)环境是完全独立的两个系统!如果你用沙盒的AccessToken去查生产环境的交易,或者反过来,100%会报NOT_FOUND。赶紧确认下你的C# SDK初始化时用的密钥,和你完成Checkout流程的环境是不是一致——比如你在沙盒里测的交易,就得用沙盒的密钥调用接口。

  • 考虑交易数据的同步延迟:有时候Square的交易数据同步会有几秒的滞后,尤其是流量高峰时段。你可以在重定向回调后,先等个1-2秒再调用RetrieveTransaction,或者加个简单的重试逻辑(比如最多重试3次,每次间隔1秒),避免因为数据还没同步到接口服务端导致的错误。

  • 再确认交易ID的获取是否准确:你是从重定向URL的参数里拿的transaction_id吗?要注意Square的Checkout重定向返回的参数里,可能会同时返回order_idtransaction_id,别把订单ID当成交易ID来用了!再仔细核对下重定向URL里的参数字段,确保你传入接口的是正确的transaction_id值。

  • 验证Location ID的访问权限:虽然你确认Location ID是对的,但要确保你的AccessToken有访问这个Location的权限。可以先调用ListLocations接口看看返回的列表里有没有这个Location ID,避免因为权限配置遗漏导致接口找不到对应交易。

  • 去Square Dashboard直接核实交易:登录对应环境(沙盒/生产)的Square后台,直接搜索这个交易ID,看看能不能找到。如果后台也没有,说明交易可能没真正完成;如果后台能找到但SDK调用还是报错,那试试更新到最新版本的Square Connect C# SDK,旧版本可能存在接口兼容性问题。

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

火山引擎 最新活动