QuickBooks API(php)集成

Yun*_*lam 19 php quickbooks

我是QuickBooks的新手.我在Quick Books中创建了一个试用帐户,我想在我的帐户中添加客户,创建发票或类似的东西.我从github下载了php SDK.现在我不知道如何开始,从客户从我的网站下订单后从哪里开始将客户添加到我的帐户.任何人都可以帮我一些详细的文档或一些例子,以便我可以继续前进.我对Web应用程序连接器一无所知.我是全新的.谢谢..

Kei*_*Jr. 38

这将是一个由两部分组成的答案,因为您没有指定是使用QuickBooks ONLINE还是QuickBooks for WINDOWS.

该过程将根据您使用的不同而不同,因此请注意以下粗体标题:

对于QuickBooks ONLINE:

如果你正在使用GitHub的开源QuickBooks PHP DevKit,那么最好的起点是QuickBooks Online with PHP快速入门指南.

您要做的第一件事就是使用Intuit注册您的应用程序.当你这样做时,Intuit 会给你这些变量:

  • 应用令牌
  • 消费者的秘密
  • 消费者密钥

您将这些变量替换为示例中包含的config.php文件.您还将更新这些值以指向您的应用:

  • oauth url(例如your-site.com/path/to/example/oauth.php)
  • 成功网址(例如your-site.com/path/to/example/success.php)
  • 菜单网址(例如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 . ']');
    }
Run Code Online (Sandbox Code Playgroud)

要实现其他功能,您可以在代码中找到其他示例.

可用的对象/方法也反映了Intuit的文档,因此您需要查看它.

对于WINDOWS的QuickBooks:

对于QuickBooks for Windows,您将使用Web连接器.再次,从GitHub的开源QuickBooks PHP DevKit开始.请改用QuickBooks for Windows + PHP快速入门指南.

这将指导您设置一个简单的Web连接器服务,该服务将测试客户添加到QuickBooks.

基本上,您将创建一个.QWC文件,您将加载到QuickBooks Web连接器(开始>所有程序> QuickBooks> Web连接器).该.QWC文件将指向一个PHP脚本,它协商QuickBooks和PHP之间的连接.您在该示例脚本中所要做的就是交换此变量:

  • $ dsn(指向你自己的数据库)

对于要添加的每个新功能,您最终将编写新的请求和响应函数,详见QuickBooks Web Connector + PHP文档.

您的代码最终会看起来像:

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>Keith@ConsoliBYTE.com</Email>
                                                <Contact>Keith Palmer</Contact>
                                        </CustomerAdd>
                                </CustomerAddRq>
                        </QBXMLMsgsRq>
                </QBXML>';

        return $xml;
}
Run Code Online (Sandbox Code Playgroud)

您可以使用QuickBooks OSR找到其他qbXML参考.

我们还提供了一个wiki,其中包含许多可以使用的示例qbXML请求.