如何为 Xero 构建自定义 Zapier 集成
How to build custom Zapier integration for Xero
我正在尝试在 zapier 中构建我自己的集成,这将允许我在 Xero 中创建引号(目前本机不支持的功能)。我一直在使用这个 and this reference 来帮助我。
我已经到了创建动作并使用测试数据对其进行测试的地步。不幸的是,我得到的响应是 "Got 400 calling POST https://identity.xero.com/connect/token, expected 2xx." 也许我发送的 json 数据不正确。我试过使用 'pretty' 和 'raw' 发送数据的方式:
zapier "expert" 可以帮我解决这个问题吗?也许通过创建自己的 xero 集成?
编辑
不确定是否有必要,但屏蔽了 ID。虽然我现在看到我没有为第一个 post 中的 contactID 这样做哈哈...
这是完成它的方法,但请记住,您需要执行搜索操作才能找到所需 ID 的信息。鉴于您的错误,我认为问题在于您没有应该在 header 中定义的 tenantId,如下所示:'xero-tenant-id': 'YOURNUMBERHERE'
。请参阅下面的第 8 步,将其与您的进行比较。
万一你找不到它,这些是我采取的步骤:
XERO
- 创建帐户
- 创建 Xero App 并将 Zapier OAuth 重定向 URL 添加到 Xero 重定向部分(来自 'step 2' 上的 'Zapier Dev' 应用)。
ZAPIER
- 在您的开发应用中,将来自 xero 的客户端 ID 和密码添加到 'Zapier Dev step 3'
中的相应部分
添加 POST
端点(在 'Zapier Dev step 4' 中请求)https://login.xero.com/identity/connect/authorize
使用 HTTP headers:
response_type: code
client_id: {{process.env.CLIENT_ID}}
redirect_uri: {{bundle.inputData.redirect_uri}}
state: {{bundle.inputData.state}}
添加范围:openid profile email accounting.transactions
刷新令牌('Zapier Dev step 4: Access Token')可以通过以下方式获得:
REFRESH TOKEN: POST https://identity.xero.com/connect/token
TEST CALL: GET https://api.xero.com/connections
-保留返回的tenantId以备后用
-测试身份验证。它有效吗?如果是,请继续执行步骤 7。
-如果测试失败:检查拼写错误,检查 url 是否正确,并确保您的 Headers 符合 xero 的要求(请参阅底部的 link)。
添加名为 createQuote 的操作
-添加输入联系人ID
-添加带有描述标签的输入行项目
-添加输入tenantId
将 POST 添加到 API 配置 url https://api.xero.com/api.xro/2.0/Quotes
示例POST:
const options = {
url: 'https://api.xero.com/api.xro/2.0/Quotes/',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': `Bearer ${bundle.authData.access_token}`,
'xero-tenant-id': bundle.inputData.tenantID
},
params: {
},
body: {
"Contact": {
"ContactID": bundle.inputData.ContactID
},
"Date": "2019-11-29",
"LineItems": [
{
"Description": bundle.inputData.LineItems
}
]
}
}
return z.request(options)
.then((response) => {
response.throwForStatus();
const results = z.JSON.parse(response.content);
return results;
});
插入测试 contactID、tenantID、lineitems 并进行测试
完成此操作后,您需要创建一个搜索操作来获取 contactID 和 tenantID(如果您希望全部自动化)。如果您遇到问题,我发现 start-up doc 很有用。
我正在尝试在 zapier 中构建我自己的集成,这将允许我在 Xero 中创建引号(目前本机不支持的功能)。我一直在使用这个
我已经到了创建动作并使用测试数据对其进行测试的地步。不幸的是,我得到的响应是 "Got 400 calling POST https://identity.xero.com/connect/token, expected 2xx." 也许我发送的 json 数据不正确。我试过使用 'pretty' 和 'raw' 发送数据的方式:
zapier "expert" 可以帮我解决这个问题吗?也许通过创建自己的 xero 集成?
编辑
不确定是否有必要,但屏蔽了 ID。虽然我现在看到我没有为第一个 post 中的 contactID 这样做哈哈...
这是完成它的方法,但请记住,您需要执行搜索操作才能找到所需 ID 的信息。鉴于您的错误,我认为问题在于您没有应该在 header 中定义的 tenantId,如下所示:'xero-tenant-id': 'YOURNUMBERHERE'
。请参阅下面的第 8 步,将其与您的进行比较。
万一你找不到它,这些是我采取的步骤:
XERO
- 创建帐户
- 创建 Xero App 并将 Zapier OAuth 重定向 URL 添加到 Xero 重定向部分(来自 'step 2' 上的 'Zapier Dev' 应用)。
ZAPIER
- 在您的开发应用中,将来自 xero 的客户端 ID 和密码添加到 'Zapier Dev step 3' 中的相应部分
添加
POST
端点(在 'Zapier Dev step 4' 中请求)https://login.xero.com/identity/connect/authorize
使用 HTTP headers:response_type: code client_id: {{process.env.CLIENT_ID}} redirect_uri: {{bundle.inputData.redirect_uri}} state: {{bundle.inputData.state}}
添加范围:openid profile email accounting.transactions
刷新令牌('Zapier Dev step 4: Access Token')可以通过以下方式获得:
REFRESH TOKEN: POST https://identity.xero.com/connect/token TEST CALL: GET https://api.xero.com/connections
-保留返回的tenantId以备后用
-测试身份验证。它有效吗?如果是,请继续执行步骤 7。
-如果测试失败:检查拼写错误,检查 url 是否正确,并确保您的 Headers 符合 xero 的要求(请参阅底部的 link)。
添加名为 createQuote 的操作
-添加输入联系人ID
-添加带有描述标签的输入行项目
-添加输入tenantId
将 POST 添加到 API 配置 url
https://api.xero.com/api.xro/2.0/Quotes
示例POST:
const options = { url: 'https://api.xero.com/api.xro/2.0/Quotes/', method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': `Bearer ${bundle.authData.access_token}`, 'xero-tenant-id': bundle.inputData.tenantID }, params: { }, body: { "Contact": { "ContactID": bundle.inputData.ContactID }, "Date": "2019-11-29", "LineItems": [ { "Description": bundle.inputData.LineItems } ] } } return z.request(options) .then((response) => { response.throwForStatus(); const results = z.JSON.parse(response.content); return results; });
插入测试 contactID、tenantID、lineitems 并进行测试
完成此操作后,您需要创建一个搜索操作来获取 contactID 和 tenantID(如果您希望全部自动化)。如果您遇到问题,我发现 start-up doc 很有用。