接 Sage Intacct:同步客户、发票与产品
在 Sage Developer Portal 拿 Client ID 和 Client Secret,授权一个专用的 Web Services 用户,把值填进 Integration,测试、配 Mapping、激活——客户、发票与产品双向同步。
Sage Intacct 连接器在 Sage Intacct 和您的系统之间双向同步客户、发票与产品:这三类都能拉进来,也能推回去。销售订单和库存目前还不在这个连接的范围内——现在能同步的就是客户、发票与产品。有一点从一开始就要注意:凭证绑定的是一个专用的 Web Services 集成用户,用这个用户登录 Web 界面会让 token 失效(REST-2102)。
前置条件#
- 一个 Sage Intacct 公司,以及该公司在 Sage Developer Portal 里的一个应用。
- 一个专用的 Web Services 集成用户,并在公司配置里显式授权。请用只为这个连接创建的用户——不要用某个人的日常登录账号。
- 不要用这个集成用户登录 Sage Intacct 的 Web 界面。这样做会让 token 失效,后续同步会以 REST-2102 失败。
- 如果您的公司用多实体,请准备好 Entity ID——填在 company_id 字段里。单实体的公司这个字段可以留空。
拿凭证#
- 去 Sage Developer Portal → 您的应用,复制那里显示的 Client ID。
- 在同一处复制 Client Secret。Secret 只显示一次——离开页面前先妥善保存。
- 确认这组 client 凭证绑定到了已在 Sage Intacct 公司配置里显式授权的 Web Services 用户。在那里授权您的专用集成用户——如果应用没有在公司的 Web Services 设置里获得授权,换 token 这一步会被拒绝。
填进 Integration#
- 打开 Integration,新建连接,选 Sage Intacct。表单有下面三个字段——按这个顺序填。
- client_id(Client ID)——必填,文本字段。粘贴您从 Sage Developer Portal → 您的应用复制的 Client ID。
- client_secret(Client Secret)——必填,密码字段。粘贴同一应用页上的 Client Secret。它会作为密钥保存,保存后不再回显。
- company_id(Company ID(可选))——选填,文本字段,例如 mycompany。只在多实体时填:在这里填 Entity ID。本表单里的 Company ID 和 Entity ID 是同一个值——没有单独的实体字段,单实体公司留空即可。
- 没有要填的服务器地址字段。连接固定使用 Sage Intacct REST API v1 地址 https://api.intacct.com/ia/api/v1。
测试连接#
点「测试连接」,系统会真实跑两步。第一步:用您的 Client ID 和 Client Secret 去 Sage Intacct 的 token 地址换 token(POST https://api.intacct.com/ia/api/v1/oauth2/token)。两个必填字段只要有一个为空,测试会立刻以 MISSING_CLIENT_SECRET 停下,根本不发请求。这一步如果 Sage Intacct 返回 401,结果是 INVALID_CREDENTIALS——值填错了,或者应用没有在公司的 Web Services 设置里获得授权。
第二步:拿着这个 token,系统走 query service 做一次小探针(POST /services/core/query),查 1 个客户——对象 customer、字段 id 和 name、size 1。返回 200 就说明连接从头到尾是通的。探针如果返回 401,结果是 INVALID_TOKEN,提示里会带 REST-2102 提醒:用被授权的用户登录 Web 界面会让 token 失效。测试最多等 12 秒,超时才会报超时。
配 Mapping / 选模板#
给这个连接承载的三类对象配 Mapping:客户、发票(在 Sage Intacct 里是 arinvoice 对象)和产品。每一类都把 Sage Intacct 的字段和您这边的字段配起来——至少配记录 id 和名称——激活前先用一条真实记录看预览核对。如果填了 company_id,确认预览里的记录属于那个实体。
激活#
激活后,您启用的流程会在 Sage Intacct 和您的系统之间同步客户、发票与产品:新增和变更的记录被拉进来,您这边新建或更新的记录被推回 Sage Intacct。先在 运行监控 / 日志 里盯头几轮。如果同步突然开始以 REST-2102 失败,先不要改 Mapping——先查是不是有人用集成用户登录了 Web 界面,重新签发 token,并确保这个用户不再登录 Web 界面。
常见问题#
同步突然以 REST-2102 失败,或测试返回 INVALID_TOKEN
token 已被失效。最常见的原因是有人用被授权的 Web Services 集成用户登录了 Sage Intacct Web 界面——那次登录会让这个连接依赖的 token 失效。
为连接重新签发 token,再测一次,并让这个集成用户从此不再登录 Web 界面——它应该只为这个连接存在。
测试返回 INVALID_CREDENTIALS(换 token 时 401)
要么是您粘贴的 Client ID 或 Client Secret 不对,要么是应用没有在 Sage Intacct 公司的 Web Services 设置里获得授权——两种情况 Sage Intacct 都会拒绝换 token 的请求。
从 Sage Developer Portal → 您的应用重新复制两个值(Secret 只显示一次,用您保存的那份),重新粘贴、不要多带空格,并到公司配置里确认应用已为您的专用 Web Services 用户获得授权。然后再测一次。
测试返回 MISSING_CLIENT_SECRET
两个必填字段——client_id 或 client_secret——有一个在连接表单里是空的。测试会先查这一项,两个都填上之前不会向 Sage Intacct 发任何请求。
把 client_id 和 client_secret 都用 Sage Developer Portal → 您的应用里的值填上,保存,再重新跑测试。
销售订单或库存过不来
这不是 Mapping 配错了。这个连接只同步客户、发票与产品——销售订单和库存不在它的承载范围内,所以这两类无论 Mapping 怎么配都不会有数据过来。
把这个连接上的流程限定在客户、发票与产品,销售订单和库存暂时走您现有的其他流程处理。