QuickBooks API(php)集成

 走过滴岁月688 发布于 2023-02-12 18:15

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

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

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

    对于QuickBooks ONLINE:

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

    http://www.consolibyte.com/docs/index.php/PHP_DevKit_for_QuickBooks_-_Intuit_Partner_Platform_Quick-Start

    您要做的第一件事就是使用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添加客户/订单的一些示例:

    QuickBooks Online - 使用PHP添加客户

    QuickBooks Online - 使用PHP添加发票

    代码最终看起来像:

        $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的文档,因此您需要查看它.

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

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

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

    2023-02-12 18:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有