Ответ 1
Это будет двухчастный ответ, потому что вы не указали, используете ли вы QuickBooks ONLINE или QuickBooks для WINDOWS.
Процесс будет РАЗЛИЧНЫМ, в зависимости от того, что вы используете, поэтому обратите внимание на жирные заголовки ниже:
Для QuickBooks ONLINE:
Если вы используете openBook QuickBooks PHP DevKit от GitHub, то лучшим местом для начала является QuickBooks Онлайн с быстрым запуском PHP.
Самое первое, что вам нужно сделать, это зарегистрировать свое приложение с Intuit. Когда вы это сделаете, Intuit предоставит вам следующие переменные:
- токен приложения
- секрет пользователя
- потребительский ключ
Вы замените эти переменные на config.php файл, который включен в пример. Вы также обновите эти значения, чтобы указать на свое приложение:
- oauth url (например, your-site.com/path/to/example/oauth.php)
- URL-адрес успеха (например, your-site.com/path/to/example/success.php)
- URL-адрес меню (например, your-site.com/path/to/example/menu.php)
- dsn (ваша резервная копия базы данных для хранилища токенов OAuth)
Кроме того, вы можете оставить все остальные переменные в config.php по умолчанию.
Если вы затем посетите файл index.php, вам будет предложено подключиться к QuickBooks. Вы можете подключиться, а затем посетить файлы примеров. Вот несколько примеров добавления клиентов/заказов в QuickBooks Online:
В результате код выглядит примерно так:
$CustomerService = new QuickBooks_IPP_Service_Customer();
$Customer = new QuickBooks_IPP_Object_Customer();
$Customer->setTitle('Mr');
$Customer->setGivenName('Keith');
$Customer->setMiddleName('R');
$Customer->setFamilyName('Palmer');
$Customer->setDisplayName('Keith R Palmer Jr ' . mt_rand(0, 1000));
// Phone #
$PrimaryPhone = new QuickBooks_IPP_Object_PrimaryPhone();
$PrimaryPhone->setFreeFormNumber('860-532-0089');
$Customer->setPrimaryPhone($PrimaryPhone);
// Bill address
$BillAddr = new QuickBooks_IPP_Object_BillAddr();
$BillAddr->setLine1('72 E Blue Grass Road');
$BillAddr->setLine2('Suite D');
$BillAddr->setCity('Mt Pleasant');
$BillAddr->setCountrySubDivisionCode('MI');
$BillAddr->setPostalCode('48858');
$Customer->setBillAddr($BillAddr);
if ($resp = $CustomerService->add($Context, $realm, $Customer))
{
print('Our new customer ID is: [' . $resp . ']');
}
Чтобы реализовать дополнительные функции, вы найдете другие примеры, включенные в код.
Доступные объекты/методы также отображают документацию Intuit, поэтому вы захотите посмотреть на это.
Для QuickBooks для WINDOWS:
Для QuickBooks для Windows вы будете использовать веб-коннектор. Опять же, начните с с открытым исходным кодом QuickBooks PHP DevKit от GitHub. Используйте вместо этого QuickBooks for Windows + PHP.
Это поможет вам создать простой сервис Web Connector, который добавит тестовых клиентов в QuickBooks.
В принципе вы создаете файл .QWC, который вы загрузите в веб-коннектор QuickBooks ( "Пуск" > "Все программы" > "QuickBooks" > "Веб-коннектор" ). Этот файл .QWC укажет на PHP script, который согласовывает соединение между QuickBooks и PHP. Все, что вам нужно сделать в этом примере script, - это замена этой переменной:
- $dsn (укажите его в свою собственную базу данных)
Для каждой новой функциональности, которую вы хотите добавить, вы в конце концов напишите новую функцию запроса и ответа, как описано в QuickBooks Web Connector + PHP docs.
Ваш код будет выглядеть примерно так:
function _quickbooks_customer_add_request($requestID, $user, $action, $ID, $extra, &$err, $last_action_time, $last_actionident_time, $version, $locale)
{
// You'd probably do some database access here to pull the record with
// ID = $ID from your database and build a request to add that particular
// customer to QuickBooks.
//
// So, when you implement this for your business, you'd probably do
// something like this...:
/*
// Fetch your customer record from your database
$record = mysql_fetch_array(mysql_query("SELECT * FROM your_customer_table WHERE your_customer_ID_field = " . (int) $ID));
// Create and return a qbXML request
$qbxml = '<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="2.0"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<CustomerAddRq requestID="' . $requestID . '">
<CustomerAdd>
<Name>' . $record['your_customer_name_field'] . '</Name>
<CompanyName>' . $record['your_customer_company_field'] . '</CompanyName>
... lots of other customer related fields ...
</CustomerAdd>
</CustomerAddRq>
</QBXMLMsgsRq>
</QBXML>';
return $qbxml;
*/
// But we're just testing, so we'll just use a static test request:
$xml = '<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="2.0"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<CustomerAddRq requestID="' . $requestID . '">
<CustomerAdd>
<Name>ConsoliBYTE, LLC (' . mt_rand() . ')</Name>
<CompanyName>ConsoliBYTE, LLC</CompanyName>
<FirstName>Keith</FirstName>
<LastName>Palmer</LastName>
<BillAddress>
<Addr1>ConsoliBYTE, LLC</Addr1>
<Addr2>134 Stonemill Road</Addr2>
<City>Mansfield</City>
<State>CT</State>
<PostalCode>06268</PostalCode>
<Country>United States</Country>
</BillAddress>
<Phone>860-634-1602</Phone>
<AltPhone>860-429-0021</AltPhone>
<Fax>860-429-5183</Fax>
<Email>[email protected]</Email>
<Contact>Keith Palmer</Contact>
</CustomerAdd>
</CustomerAddRq>
</QBXMLMsgsRq>
</QBXML>';
return $xml;
}
Дополнительную ссылку qbXML можно найти с помощью QuickBooks OSR.
Мы также предоставляем wiki с примерами примеров qbXML, которые вы можете использовать.