2013-12-05 4 views
18

Я очень новичок в QuickBooks. Я создал пробную учетную запись в Quick Books, и я хочу добавить клиентов, создать счета-фактуры или подобные вещи для своей учетной записи. Я загрузил php SDK из github. Теперь у меня нет идеи, как начать, с чего начать добавлять клиента в свою учетную запись после того, как клиент сделает заказ с моего сайта. Может ли кто-нибудь помочь мне с подробной документацией или некоторыми примерами, чтобы я мог двигаться вперед. Я не знаю о коннекторе веб-приложений. Я совершенно новый. Спасибо ..Интеграция QuickBooks API (php)

+0

возможно dublicate http://stackoverflow.com/questions/20387302/adding-a-customer-with-address-details-to-quickbooks – Naeem

+0

Дубликат http: // stackoverflow.com/questions/22705695/quickbooks-web-connector-authenticate-with-php-soap-server – hashkishor

ответ

31

Это будет две части ответа, потому что вы не указали если вы используете QuickBooks ONLINE или QuickBooks для WINDOWS.

Процесс будет отличаться в зависимости от которой вы используете, поэтому обратите внимание на выделенные заголовки ниже:

Для QuickBooks ONLINE:

Если вы используете open source QuickBooks PHP DevKit от GitHub, то лучшим местом для начала является руководство QuickBooks Online with PHP quick-start.

Самое первое, что вам нужно сделать, это зарегистрировать ваше приложение с 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 (ваши credentails базы данных для хранения маркера 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's documentation, поэтому вы хотите посмотреть на это.

Для QuickBooks для WINDOWS:

Для QuickBooks для Windows, вы будете использовать Web Connector. Опять же, начните с open source QuickBooks PHP DevKit от GitHub. Вместо этого используйте руководство QuickBooks for Windows + PHP quick-start.

Это поможет вам создать простой сервис веб-коннектора, который добавит тестовых клиентов в QuickBooks.

В основном вы будете create a .QWC file, который вы загрузите в веб-коннектор QuickBooks (Пуск> Все программы> QuickBooks> Веб-коннектор). Этот файл .QWC укажет на PHP script which negotiates the connection between QuickBooks and PHP. Все, что вам нужно сделать, в этом примере сценария является обмен этой переменной:

  • $ 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 с lots of example qbXML requests, которые вы можете использовать.

+1

Я использую Quickbooks онлайн Спасибо за вашу помощь .... Я пробовал это, и теперь я получаю следующую ошибку, когда я нажимаю кнопку подключения «Вызов неопределенной функции mcrypt_module_open()» на quickbooks-php-master/QuickBooks/Encryption/Aes.php в строке 34. –

+0

Из-за требований безопасности, которые требуется Intuit, вам понадобится модуль PHP mcrypt, установленный и включенный. http://us2.php.net/mcrypt Обратитесь к своему веб-хосту, если он еще не установлен/включен. –

+0

Да, я только что связался с администратором. Другой вопрос, я создал приложение. Итак, когда я добавляю клиента, клиент должен появиться на странице клиента в Quick books правильно? –

1

Из SDK используйте example_ipp_ids_6.php для добавления клиентов.

Вот ссылка на полный код на GitHub:

И быстро руководство:

example_ipp_ids_6.php

<?php 

// Turn on some error reporting 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

header('Content-Type: text/plain'); 

/** 
* Require the QuickBooks library 
*/ 
require_once dirname(__FILE__) . '/../QuickBooks.php'; 

/** 
* Require some IPP/OAuth configuration data 
*/ 
require_once dirname(__FILE__) . '/example_ipp_config.php'; 


// Set up the IPP instance 
$IPP = new QuickBooks_IPP($dsn); 

// Set up our IntuitAnywhere instance 
$IntuitAnywhere = new QuickBooks_IPP_IntuitAnywhere($dsn, $encryption_key, $oauth_consumer_key, $oauth_consumer_secret); 

// Get our OAuth credentials from the database 
$creds = $IntuitAnywhere->load($the_username, $the_tenant); 

// Tell the framework to load some data from the OAuth store 
$IPP->authMode(
    QuickBooks_IPP::AUTHMODE_OAUTH, 
    $the_username, 
    $creds); 

// Print the credentials we're using 
//print_r($creds); 

// This is our current realm 
$realm = $creds['qb_realm']; 

// Load the OAuth information from the database 
if ($Context = $IPP->context()) 
{ 
    // Set the DBID 
    $IPP->dbid($Context, 'something'); 

    // Set the IPP flavor 
    $IPP->flavor($creds['qb_flavor']); 

    // Get the base URL if it's QBO 
    if ($creds['qb_flavor'] == QuickBooks_IPP_IDS::FLAVOR_ONLINE) 
    { 
     $IPP->baseURL($IPP->getBaseURL($Context, $realm)); 
    } 

    print('Base URL is [' . $IPP->baseURL() . ']' . "\n\n"); 

    $CustomerService = new QuickBooks_IPP_Service_Customer(); 

    $Customer = new QuickBooks_IPP_Object_Customer(); 
    $Customer->setName('Willy Wonka #' . mt_rand(0, 1000)); 
    $Customer->setGivenName('Willy'); 
    $Customer->setFamilyName('Wonka'); 

    $resp = $CustomerService->add($Context, $realm, $Customer); 

    print_r($Customer); 
    print('New customer is [' . $resp . ']' . "\n\n"); 

    print("\n\n\n\n"); 
    print('Request [' . $IPP->lastRequest() . ']'); 
    print("\n\n\n\n"); 
    print('Response [' . $IPP->lastResponse() . ']'); 
    print("\n\n\n\n"); 
} 
else 
{ 
    die('Unable to load a context...?'); 
} 

Настройка ключи и имя пользователя в example_ipp_config.php

<?php 

/** 
* Intuit Partner Platform configuration variables 
* 
* See the scripts that use these variables for more details. 
* 
* @package QuickBooks 
* @subpackage Documentation 
*/ 

// Your OAuth token (Intuit will give you this when you register an Intuit Anywhere app) 
$token = 'c640731cb411db4132b8475b4198a7efae08'; 

// Your OAuth consumer key and secret (Intuit will give you both of these when you register an Intuit app) 
// 
// IMPORTANT: 
// To pass your tech review with Intuit, you'll have to AES encrypt these and 
// store them somewhere safe. 
// 
// The OAuth request/access tokens will be encrypted and stored for you by the 
// PHP DevKit IntuitAnywhere classes automatically. 
$oauth_consumer_key = 'qyprdzUiOLX60UK4cMwYhg1QVGfOGT'; 
$oauth_consumer_secret = '32mIB75pqqPreOADcxRvryC0fBduJhnRr52JfUdf'; 

// This is the URL of your OAuth auth handler page 
$this_url = 'http://localhost/quick/docs/example_ipp_oauth.php'; 

// This is the URL to forward the user to after they have connected to IPP/IDS via OAuth 
$that_url = 'http://localhost/quick/docs/example_ipp_ids_6.php'; 

// This is a database connection string that will be used to store the OAuth credentials 
// $dsn = 'pgsql://username:[email protected]/database'; 
// $dsn = 'mysql://username:[email protected]/database'; 
$dsn = 'mysql://root:@localhost/quickbooks';   

// You should set this to an encryption key specific to your app 
$encryption_key = 'abcd1234'; 

// The user that's logged in 
$the_username = '[email protected]'; 

// The tenant that user is accessing within your own app 
$the_tenant = 12345; 

// Initialize the database tables for storing OAuth information 
if (!QuickBooks_Utilities::initialized($dsn)) 
{ 
    // Initialize creates the neccessary database schema for queueing up requests and logging 
    QuickBooks_Utilities::initialize($dsn); 
} 
+0

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

+0

Когда вы идете через регистрацию в Intuit, они будут * давать вам * всю эту информацию. $ tenant вы можете просто оставить в качестве значения по умолчанию. –

Смежные вопросы