php quickbooks

Integración de la API de QuickBooks(PHP)



(2)

Soy un muy nuevo para QuickBooks. He creado una cuenta de prueba en Quick Books y quiero agregar clientes, crear facturas o cosas similares a mi cuenta. He descargado el SDK de PHP desde Github. Ahora no tengo idea de cómo empezar, desde dónde comenzar a agregar el cliente a mi cuenta después de que el cliente realice el pedido desde mi sitio web. ¿Puede alguien ayudarme con algunos detalles de documentación o algunos ejemplos para que pueda seguir adelante? No tengo conocimiento sobre el conector de la aplicación web. Soy totalmente nueva Gracias..


Desde el SDK, use example_ipp_ids_6.php para agregar clientes.

Aquí está el enlace al código completo en GitHub:

Y una guía de inicio rápido:

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...?''); }

Configure sus claves y nombre de usuario en 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:password@hostname/database''; // $dsn = ''mysql://username:password@hostname/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); }


Esta será una respuesta de dos partes, porque no especificó si está utilizando QuickBooks ONLINE o QuickBooks para WINDOWS.

El proceso será DIFERENTE dependiendo de lo que esté usando, así que preste atención a los encabezados en negrita a continuación:

Para QuickBooks ONLINE:

Si utiliza el QuickBooks PHP DevKit de código abierto de GitHub, entonces el mejor lugar para comenzar es QuickBooks Online con la guía de inicio rápido de PHP .

Lo primero que tendrás que hacer es registrar tu aplicación con Intuit. Cuando hagas esto, Intuit te dará estas variables:

  • token de aplicación
  • secreto del consumidor
  • clave del consumidor

Sustituirá estas variables en el archivo config.php que se incluye en el ejemplo. También actualizarás estos valores para que apunten a tu aplicación:

  • oauth url (por ejemplo, su-site.com/path/to/example/oauth.php)
  • url de éxito (por ejemplo, your-site.com/path/to/example/success.php)
  • url del menú (por ejemplo, your-site.com/path/to/example/menu.php)
  • dsn (las credenciales de su base de datos para el almacenamiento de token de OAuth)

Más allá de eso, puede dejar todas las demás variables en config.php en sus valores predeterminados .

Si luego visita el archivo index.php, le pedirá que se conecte a QuickBooks. Puede conectarse, y luego visitar los archivos de ejemplo. Aquí hay algunos ejemplos de cómo agregar clientes / pedidos a QuickBooks Online:

El código termina buscando algo como:

$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 . '']''); }

Para implementar una funcionalidad adicional, encontrará otros ejemplos incluidos en el código.

Los objetos / métodos disponibles también reflejan la documentación de Intuit, por lo que querrá ver eso.

Para QuickBooks para WINDOWS:

Para QuickBooks para Windows, utilizará el conector web. De nuevo, comience con el QuickBooks PHP DevKit de código abierto de GitHub. Utilice la guía de inicio rápido de QuickBooks para Windows + PHP en su lugar.

Eso lo guiará a través de la configuración de un servicio de conector web simple que agrega clientes de prueba a QuickBooks.

Básicamente, creará un archivo .QWC que cargará en el QuickBooks Web Connector (Inicio> Todos los programas> QuickBooks> Web Connector). Ese archivo .QWC apuntará a un script PHP que negocia la conexión entre QuickBooks y PHP . Todo lo que tienes que hacer en ese script de ejemplo es intercambiar esta variable:

  • $ dsn (apúntalo a tu propia base de datos)

Por cada nueva funcionalidad que desee agregar, terminará escribiendo una nueva función de solicitud y respuesta, tal como se detalla en el QuickBooks Web Connector + PHP docs .

Tu código terminará buscando algo como:

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; }

Puede encontrar referencias qbXML adicionales utilizando el QuickBooks OSR .

También proporcionamos una wiki con muchos ejemplos de solicitudes qbXML que puede utilizar.