Как подключить приложение React к QuickBooks Web Connector (QBW C)? - PullRequest
0 голосов
/ 08 апреля 2020

Таким образом, моя компания в настоящее время использует QuickBooks Desktop для большей части своего инвентаря. У нас также есть собственное веб-приложение React, которое связывается с нашими техническими специалистами, работающими в полевых условиях, и есть некоторые вещи, которые нам необходимы для отслеживания этих предметов по мере их отправки нашим специалистам. Я пытаюсь сделать запрос к веб-соединителю QuickBooks, чтобы получить список элементов, которые в настоящее время находятся в QuickBooks. Я провел некоторое исследование, и мне кажется, что нам, по сути, понадобится веб-служба SOAP, чтобы выполнять любые запросы к QBW C. Обычно я использую API REST для получения необходимой информации, поэтому я не знаю, как делать SOAP запросов.

Я просмотрел все, чтобы попытаться найти примеры, которые могли бы указать мне на правильное направление, но я совершенно сбит с толку в большинстве из того, что я смотрю. Я знаю, что есть soap node js package, который я, скорее всего, буду использовать. Я также знаю, что мне понадобится ссылка на WSDL, которую можно найти здесь: https://test.developer.intuit.com/QBWC/TroubleshootWebServiceFS/Service.asmx?wsdl

Есть некоторые вещи, которые меня смущают при настройке SOAP веб-сервис. Я уже использую express для обслуживания своего приложения, а также должен добавить к этому soap, чтобы он мог обрабатывать SOAP запросов. Поэтому я буду использовать этот метод, который был взят из их репозитория github, чтобы сделать это:

  var app = express();
  //body parser middleware are supported (optional)
  app.use(bodyParser.raw({type: function(){return true;}, limit: '5mb'}));
  app.listen(8001, function(){
      //Note: /wsdl route will be handled by soap module
      //and all other routes & middleware will continue to work
      soap.listen(app, '/wsdl', myService, xml, function(){
        console.log('server initialized');
      });
  });

Я понимаю, что аргумент XML - это путь к WSDL, но я запутался насчет второго и третьи аргументы в этом примере. Мне кажется, /wsdl - это маршрут в приложении, но должен ли он быть уже настроен? И что входит в этот маршрут? Кроме того, я не понимаю, для чего нужен аргумент myService. Вот что они дают:

var myService = {
      MyService: {
          MyPort: {
              MyFunction: function(args) {
                  return {
                      name: args.name
                  };
              },

              // This is how to define an asynchronous function with a callback.
              MyAsyncFunction: function(args, callback) {
                  // do some work
                  callback({
                      name: args.name
                  });
              },

              // This is how to define an asynchronous function with a Promise.
              MyPromiseFunction: function(args) {
                  return new Promise((resolve) => {
                    // do some work
                    resolve({
                      name: args.name
                    });
                  });
              },

              // This is how to receive incoming headers
              HeadersAwareFunction: function(args, cb, headers) {
                  return {
                      name: headers.Token
                  };
              },

              // You can also inspect the original `req`
              reallyDetailedFunction: function(args, cb, headers, req) {
                  console.log('SOAP `reallyDetailedFunction` request from ' + req.connection.remoteAddress);
                  return {
                      name: headers.Token
                  };
              }
          }
      }
  };

Как это применимо к моему сценарию?

Это точка, в которой я ничего не могу найти в Интернете. Это, очевидно, лишь первый шаг к тому, чтобы заставить QBW C даже аутентифицировать веб-приложение, с которым оно общается. Заставить QBW C работать даже после этого - само по себе совершенно другое обсуждение.

Если у кого-то был опыт в создании чего-то похожего на это, я бы хотел больше узнать о том, как это работает и как я могу заставить мое приложение соединиться с QBW C. Или, если вы знаете, что мне нужно сделать, чтобы сделать запрос на получение списка предметов из QB, это также было бы замечательно. Спасибо!

...