Я интегрирую QuickBooks (настольную версию) с приложением ASP.NET. Для этого я использую QuickBooks Web Connector. Как создать файл .qwc для моего пользовательского веб-сервиса?
Как создать файл .qwc для QuickBooks Web Connector?
Ответ 1
Веб-коннектор действительно просто прокси или реле, которое находится между QuickBooks и вашим собственным приложением.
В качестве обзора - в основном, вы создаете SOAP-сервер/веб-сервис, который говорит о конкретном наборе методов. Затем веб-коннектор устанавливается на компьютере, на котором работает QuickBooks, и опроса вашего веб-сервиса: "Эй, мне что-то нужно делать?" Затем ваш веб-сервис может ответить на запросы qbXML (примеры qbXML здесь), которые сообщают веб-коннектору "Добавить этого клиента:..." или "Отправить мне счета-фактуры, которые соответствуют:..." или т.д. и т.д. и т.д. и т.д. Затем веб-коннектор передает эти запросы в QuickBooks, QuickBooks обрабатывает их, и ответ возвращается на ваш веб-сервис. Затем ваш веб-сервис может обработать ответ, а затем отправить следующий запрос в веб-коннектор.
Здесь представлен более крупный веб-коннектор или, если вы скачаете QuickBooks SDK, он имеет более 100 страниц PDF, которые подробно описывают это.
Вероятно, вы также захотите посмотреть этот пример после установки QuickBooks SDK:
- C:\Program Files (x86)\Intuit\IDN\QBSDK12.0\samples\qbdt\c-sharp\qbXML\WCWebService
Это полный рабочий пример реализации SOAP для веб-коннектора.
У него самая основная форма, он выглядит примерно так:
[WebMethod]
/// <summary>
/// WebMethod - authenticate()
/// To verify username and password for the web connector that is trying to connect
/// Signature: public string[] authenticate(string strUserName, string strPassword)
///
/// IN:
/// string strUserName
/// string strPassword
///
/// OUT:
/// string[] authReturn
/// Possible values:
/// string[0] = ticket
/// string[1]
/// - empty string = use current company file
/// - "none" = no further request/no further action required
/// - "nvu" = not valid user
/// - any other string value = use this company file
/// </summary>
public string[] authenticate(string strUserName, string strPassword)
{
string[] authReturn = new string[2];
// Generate a random session ticket
authReturn[0]= System.Guid.NewGuid().ToString();
// For simplicity of sample, a hardcoded username/password is used.
string pwd="password";
if (strUserName.Trim().Equals("username") && strPassword.Trim().Equals(pwd))
{
// An empty string for authReturn[1] means asking QBWebConnector
// to connect to the company file that is currently openned in QB
authReturn[1]="";
}
else
{
authReturn[1]="nvu";
}
return authReturn;
}
[ WebMethod(Description="This web method facilitates web service to send request XML to QuickBooks via QBWebConnector",EnableSession=true) ]
/// <summary>
/// WebMethod - sendRequestXML()
/// Signature: public string sendRequestXML(string ticket, string strHCPResponse, string strCompanyFileName,
/// string Country, int qbXMLMajorVers, int qbXMLMinorVers)
///
/// IN:
/// int qbXMLMajorVers
/// int qbXMLMinorVers
/// string ticket
/// string strHCPResponse
/// string strCompanyFileName
/// string Country
/// int qbXMLMajorVers
/// int qbXMLMinorVers
///
/// OUT:
/// string request
/// Possible values:
/// - "any_string" = Request XML for QBWebConnector to process
/// - "" = No more request XML
/// </summary>
public string sendRequestXML(string ticket, string strHCPResponse, string strCompanyFileName,
string qbXMLCountry, int qbXMLMajorVers, int qbXMLMinorVers)
{
// QuickBooks has asked for your next request
... return a qbXML request here ...
}
[ WebMethod(Description="This web method facilitates web service to receive response XML from QuickBooks via QBWebConnector",EnableSession=true) ]
/// <summary>
/// WebMethod - receiveResponseXML()
/// Signature: public int receiveResponseXML(string ticket, string response, string hresult, string message)
///
/// IN:
/// string ticket
/// string response
/// string hresult
/// string message
///
/// OUT:
/// int retVal
/// Greater than zero = There are more request to send
/// 100 = Done. no more request to send
/// Less than zero = Custom Error codes
/// </summary>
public int receiveResponseXML(string ticket, string response, string hresult, string message)
{
// QuickBooks has sent you a qbXML response to your request
... do something with 'response' here ...
}
В этом примере также содержится пример файла .QWC. Здесь содержится некоторая документация файла .QWC и здесь приведен пример:
<?xml version="1.0"?>
<QBWCXML>
<AppName>QuickBooks Integrator</AppName>
<AppID></AppID>
<AppURL>https://secure.domain.com/quickbooks/server.php</AppURL>
<AppDescription></AppDescription>
<AppSupport>http://www.domain.com/quickbooks/support.php</AppSupport>
<UserName>username</UserName>
<OwnerID>{90A44FB7-33D9-4815-AC85-AC86A7E7D1EB}</OwnerID>
<FileID>{57F3B9B6-86F1-4FCC-B1FF-967DE1813D20}</FileID>
<QBType>QBFS</QBType>
<Scheduler>
<RunEveryNMinutes>2</RunEveryNMinutes>
</Scheduler>
<IsReadOnly>false</IsReadOnly>
</QBWCXML>