如何通过Zapier Webhooks及Xero私有连接实现自定义集成?
实现Zapier + Xero自定义集成(创建手动日记账)的实操思路
我之前帮团队搭建过类似的自定义集成,刚好涉及Xero OAuth-1a签名和手动日记账API调用,分享下实际操作的步骤和踩过的坑:
一、先搞定Xero私有应用的基础配置
因为是内部自用的集成,用Xero的私有应用最省心(无需审核,直接绑定单个Xero组织):
- 登录Xero Developer Portal,创建新的「Private Application」
- 关联你需要操作的Xero组织,生成并保存Consumer Key(消费者密钥)
- 下载生成的RSA私钥文件(这个是OAuth-1a签名的核心,别搞丢,后续Zapier要用到)
二、Zapier端配置Webhooks请求
选择「Webhooks by Zapier」的POST动作,重点是OAuth-1a的签名配置:
- 填写API端点:手动日记账的Xero API地址是
https://api.xero.com/api.xro/2.0/ManualJournals - 配置OAuth-1a认证:
- 在Zapier的「Authentication」选项里选「OAuth 1.0」
- 填入你的Xero Consumer Key,Consumer Secret留空(Xero用RSA-SHA1签名,不需要这个字段)
- 切换到「Advanced」选项,签名方法选「RSA-SHA1」,然后上传你下载的RSA私钥文件(或者直接粘贴私钥的完整PEM格式内容)
- 设置请求头:
- 必须添加
Content-Type: application/json和Accept: application/json两个头,确保请求和响应都是JSON格式
- 必须添加
三、构造符合Xero要求的请求体
按照Xero API规范编写JSON请求体,示例如下(根据你的实际账户和业务调整):
{ "ManualJournals": [ { "Date": "2024-05-20", "Narration": "办公耗材采购手动日记账", "LineItems": [ { "Description": "打印纸采购", "AccountCode": "620", "NetAmount": -120.00, "TaxAmount": -24.00, "TaxType": "GST" }, { "Description": "公司银行账户支出", "AccountCode": "102", "NetAmount": 144.00, "TaxAmount": 24.00, "TaxType": "GST" } ] } ] }
注意:Xero里金额的正负对应借贷方向,一般贷方为负、借方为正;AccountCode和TaxType必须是你Xero组织里已存在的选项,否则会报错。
四、测试与调试
- 先在Zapier里发送测试请求,查看响应结果:如果成功会返回创建好的手动日记账详情;如果报错,优先排查这几点:
- RSA私钥格式是否正确(必须包含首尾的
-----BEGIN RSA PRIVATE KEY-----和-----END RSA PRIVATE KEY-----,不要有多余空格) - 请求体里的字段是否符合规范(比如日期格式是否为YYYY-MM-DD,账户代码是否存在)
- OAuth签名配置是否正确(Consumer Key和私钥是否匹配,签名方法是否选了RSA-SHA1)
- RSA私钥格式是否正确(必须包含首尾的
额外小贴士
- 私有应用只能绑定一个Xero组织,如果需要对接多个组织,得改用公共应用(但需要Xero官方审核)
- 可以先在Postman里测试API请求,确保能成功创建日记账后再迁移到Zapier,这样更容易定位问题
- Zapier Webhooks有调用次数限制,适合低频率的手动日记账创建场景
内容的提问来源于stack exchange,提问作者DBa
相关产品推荐
相关产品推荐

