Как построить пользовательскую интеграцию Zapier для Xero - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь создать собственную интеграцию в zapier, которая позволит мне создавать цитаты в Xero (функция, которая в настоящее время не поддерживается изначально). Я использовал этот пост и эту ссылку , чтобы помочь мне.

Я дошел до того, что создаю действие и проверяю его с помощью тестовых данных. К сожалению, я получаю ответ: «Получил 400 звонков POST https://identity.xero.com/connect/token, ожидаемый 2xx». Возможно, я отправляю данные json неправильно. Я пытался использовать «красивые» и «необработанные» способы отправки данных:

Может ли мне помочь в этом более "эксперт" из zapier? Возможно, создав собственную интеграцию ксеро?

РЕДАКТИРОВАТЬ

enter image description here enter image description here enter image description here enter image description here

Не уверен, если необходимо, но заблокировал идентификаторы. Хотя теперь я вижу, что я не делал этого для contactID в первом посте, lol ... enter image description here

1 Ответ

0 голосов
/ 26 февраля 2020

Вот как это сделать, но помните, что вам нужно будет выполнить действие поиска, чтобы найти информацию для требуемых идентификаторов. Учитывая вашу ошибку, я думаю, проблема в том, что у вас не было tenantId, который должен быть определен в вашем заголовке, например: 'xero-tenant-id': 'YOURNUMBERHERE'. См. Шаг 8 ниже, чтобы сравнить его с вашим.

Если вы не можете его найти, я предпринял следующие шаги:

XERO

  1. Создать учетную запись
  2. Создать Приложение Xero и добавить URL-адрес перенаправления Zapier OAuth в раздел перенаправления Xero (из приложения «Zapier Dev» на «шаге 2»).

ZAPIER

В своем приложении dev добавьте идентификатор и секретный ключ клиента от xero в соответствующие разделы в шаге 3 Zapier Dev

Добавьте конечную точку POST (запрашивается в шаге 4 Zapier Dev) ') https://login.xero.com/identity/connect/authorize с заголовками HTTP:

response_type: code
client_id: {{process.env.CLIENT_ID}}
redirect_uri: {{bundle.inputData.redirect_uri}}
state: {{bundle.inputData.state}}

Добавьте область действия: openid profile email accounting.transactions

Refre sh token ('Zapier Dev, шаг 4: Access Token') можно получить с помощью этого:

REFRESH TOKEN: POST https://identity.xero.com/connect/token
TEST CALL: GET https://api.xero.com/connections

-Сохранить возвращенный tenantId для последующего использования

-Проверить проверку подлинности. Это работает? Если да, переходите к шагу 7.

-Если тест не пройден: проверьте на наличие опечаток, проверьте правильность URL-адресов и убедитесь, что ваши заголовки соответствуют тому, что требуется ксерокопии (см. Ссылку внизу).

Добавить действие под названием createQuote

-Добавить идентификатор контакта ввода

-Добавить элемент строки ввода с меткой описания

-Добавить ввод tenantId

Добавить POST в API Config по 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, если вы хотите, чтобы все это было автоматизировано. Если у вас возникли проблемы, я обнаружил, что запуск делает c полезным.

...