Взаимодействие с QuickBooks Online V3 API

Я пишу веб-приложение (которое Intuit не будет публиковать в своем Центре приложений) для взаимодействия с QuickBooks Online (QBO) для целей синхронизации с использованием VB.NET и ASP.NET. Мне трудно понять, как это сделать или с чего начать. Я так понимаю это:

  1. Пользователь получает доступ к вашему веб-приложению и кнопке «Подключиться к QuickBooks» (которая требуется Intuit для In-App). авторизация).
  2. Перед нажатием кнопки вы отправляете HTTP-запрос, чтобы получить учетные данные запроса OAuth, используя свои учетные данные потребителя.
  3. Как только пользователь нажимает кнопку, он перенаправляется в QuickBooks Online (QBO), где он может войти в систему, а затем авторизовать доступ к определенной компании, предоставив вам авторизованные учетные данные запроса.
  4. Затем QBO перенаправляет обратно на ваш сайт, указывая, что у вас есть авторизованные учетные данные запроса, в котором вы отправляете HTTP-запрос для получения учетных данных доступа.
  5. Когда у вас есть учетные данные для доступа, вы можете свободно взаимодействовать с QBO V3 API.
  6. Затем, используя учетные данные доступа, вы можете создавать HTTP-запросы, которые отправляют определенный метод HTTP с XML/JSON в теле для выполнения соответствующей операции CRUD в QBO, а QBO отправляет ответ, чтобы указать, было ли оно успешным или нет.
  7. Когда ваше приложение завершит взаимодействие с QBO, вы просто убедитесь, что учетные данные доступа хранятся в безопасном месте, и позволяете пользователю продолжать свою жизнь.

(Дополнительный вопрос: это правильно или я что-то пропустил или что-то неправильно понял?)

Мой главный вопрос: вам, как разработчику приложения, вообще нужно создавать эти HTTP-запросы, или вы используете их SDK или что-то совершенно другое, а я просто не понимаю?

Я пытался понять это, но похоже, что вы должны построить все это с нуля, но затем я смотрю в их SDK, и у них есть классы для всех различных типов сущностей, но затем их сериализатор не сериализуется правильно, и они расскажите об их классе DataService и о том, как вы используете его для отправки объектов и использования некоторых файлов JavaScript, которые они размещают, на которые я только видел ссылки, но не объяснял их или кого-либо еще, и информация, которую я действительно нахожу, кажется устаревшей / устаревшей, и я ...

Может быть, это просто то, что я новичок в веб-разработке, и все это сейчас выше моего понимания, что вполне может быть.

(Не по теме: это я или их сайт до смешного сломан? Просто кажется, что многое работает неправильно или что-то просто сложно найти и найти...)

В любом случае, спасибо за любую помощь, которую кто-либо может предложить. Если мне нужно предоставить более подробную информацию или задать другой вопрос или что-то еще, просто дайте мне знать. Новичок в этом, и это сложнее, чем я думал, спрашивать о вещах, ха-ха.


person Josh Braun    schedule 05.02.2014    source источник


Ответы (2)


Мой главный вопрос: вам, как разработчику приложения, вообще нужно создавать эти HTTP-запросы, или вы используете их SDK или что-то совершенно другое, а я просто не понимаю?

Это полностью зависит от вас, разработчика.

Если вы хотите создавать свои собственные HTTP-запросы, вы, безусловно, можете это сделать. Вы почти наверняка все равно захотите использовать предварительно упакованную библиотеку OAuth, так как OAuth не является тривиальной для реализации.

Однако вы также можете использовать существующую библиотеку кода/DevKit, и в этом случае библиотека/DevKit создаст для вас HTTP-запросы.

DevKits должен содержать пример кода, чтобы показать вам, как это сделать на самом деле, так что это может быть лучшим местом для начала.

person Keith Palmer Jr.    schedule 06.02.2014
comment
Окей, большое спасибо. То, как они определенно формулируют вещи, просто создавало впечатление, что это было одним способом, а затем в середине они начинали говорить по-другому и мало что объясняли, и примеры, кажется, показывают только одно (и, как оказалось, это способ, который стоит денег.. .). Может быть, я просто пропустил это. Но спасибо. Да, я обязательно попробую использовать библиотеку OAuth, но, к сожалению, мне, возможно, придется написать свою собственную, ха-ха. Но опять же, спасибо, что объяснили это. - person Josh Braun; 06.02.2014

Вы на правильном пути.

Прежде всего, вам необходимо зарегистрироваться в IPP, чтобы получить ConsumerKey, секрет ConsumerKey и идентификатор приложения.

https://developer.intuit.com/docs/0025_quickbooksapi/0010_getting_started/0020_connect/0010_from_within_your_app/implement_oauth_in_your_app

если у пользователя нет токена доступа, появляется кнопка «подключиться к quickbooks», в противном случае вы можете сделать ее скрытой.

код запроса: https://github.com/IntuitDeveloperRelations/IPP_Sample_Code/blob/master/QuickbooksAPI/DotNet/WebForms%20application/QuickBooksApiDotNetWebFormsSampleApp/OauthGrant.aspx.cs

код доступа: https://github.com/IntuitDeveloperRelations/IPP_Sample_Code/blob/master/QuickbooksAPI/DotNet/WebForms%20application/QuickBooksApiDotNetWebFormsSampleApp/OauthHandler.aspx.cs

После получения accesstoken, секрет доступа и realmID (companyid) сохраните их в своей базе данных. обязательно зашифруйте.

поэтому в следующий раз, когда тот же пользователь подключится к quickbooks, ему не нужно будет выполнять все вышеперечисленные шаги.

OAuthRequestValidator oauthValidator = новый OAuthRequestValidator (accessToken, accessTokenSecret, ConsumerKey, ConsumerSecret);

Контекст ServiceContext = новый ServiceContext (appToken, companyID, IntuitServicesType.QBO, oauthValidator);

https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/0150_ipp_.net_devkit_3.0/0002_synchronous_calls/0001_data_service_apis

person user3277522    schedule 06.02.2014
comment
Да, я получаю материал OAuth... типа (больше, чем фактические вызовы API и тому подобное), но я не думаю, что эти файлы показали фактическое получение запроса и учетных данных доступа. Хотя посмотрю еще. Спасибо. Кроме того, правильно ли я понимаю, что вы действительно не создаете вызовы API? Вы создаете объекты из SDK и просто отправляете их через объект DataService? Еще раз спасибо. - person Josh Braun; 06.02.2014
comment
Эти файлы (.cs) делают все, что вам нужно для получения маркера доступа. - person user3277522; 06.02.2014
comment
Если вы хотите перейти на маршрут Dataservice, вам не нужно беспокоиться о вызовах API. если вы хотите создать клиента, затем затемните oCustomer как New Intuit.IPP.Data.Customer с oCustomer .GivenName= 'John' ..... End with oDataService.Add(oCustomer) Done! - person user3277522; 06.02.2014
comment
Большое спасибо за то, что объяснили все это. Между вами и Китом все становится намного логичнее и лучше. - person Josh Braun; 06.02.2014