Добавьте счет в Quickbooks Online, используя php API (Кит Палмер)

Я пытаюсь добавить счет в quickbook через свое приложение, используя API-интерфейс Keith Palmer php

Я могу добавлять клиентов, перечислять счета и делать из этого кучу вещей.

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

вот мой фрагмент кода

    <?php

        $Invoice = new QuickBooks_IPP_Object_Invoice();
        $Header = new QuickBooks_IPP_Object_Header();


        $Header->setTxnDate('2013-03-20');
        $Header->setCustomerId('{QBO-2}');

        $Header->setTotalAmt(101);

        $Invoice->addHeader($Header);

        $Line = new QuickBooks_IPP_Object_Line();
        $Line->setDesc('Invoice desp comes here');
        $Line->setTaxable('false');
        $Line->setItemId('{QBO-2}');
        $Line->setAmount(101);

        $Invoice->addLine($Line);

        print_r($Invoice->asIDSXML());

        print_r('Request [' . $IPP->lastRequest() . ']');
        print_r("<br/><br/>");
        print_r('Response [' . $IPP->lastResponse() . ']');
        print_r("<br/><br/>");

?>  

print_r($Invoice->asIDSXML()) показывает мне это

<Invoice>
    <Header>
        <TxnDate>2013-03-20</TxnDate>
        <CustomerId idDomain="QBO">2</CustomerId>
        <TotalAmt>101.00</TotalAmt>
    </Header>
    <Line>
        <Desc>test input invoice descp comes here</Desc>
        <Amount>101</Amount>
        <Taxable>false</Taxable>
        <ItemId idDomain="QBO">2</ItemId>
    </Line>
</Invoice>

print_r('Request [' . $IPP->lastRequest() . ']') показывает мне это

Request [GET https://qbo.intuit.com/qbo1/rest/user/v2/666328865?oauth_consumer_key=qyprdorhgMjAeQswpCnBBuFUt5NGlv&oauth_nonce=GCRwB&oauth_signature=FKjWjA8VSwtxKvn%2ByGb1LaYd7Kw%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1363757537&oauth_token=qyprdmoCHU437qAutsaqwMzki7izqqjl7cioaZO4uTxkykse&oauth_version=1.0 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 0

]

print_r('Response [' . $IPP->lastResponse() . ']') показывает мне это

Response [HTTP/1.1 200 OK
Date: Wed, 20 Mar 2013 05:32:17 GMT
Server: Apache
Set-Cookie: qboeuid=10.129.32.5.1363757537351379; path=/; expires=Thu, 20-Mar-14 05:32:17 GMT; domain=.intuit.com
Cache-Control: private
Expires: Wed, 31 Dec 1969 16:00:00 PST
Set-Cookie: JSESSIONID=3BC45AC1AAA82F57D777FF1DAB2F9729.c1-pprdqboas30d; Path=/; Secure; HttpOnly
Content-Encoding: gzip
Content-Length: 290
Content-Type: application/xml;charset=UTF-8

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><qbo:QboUser xmlns="http://www.intuit.com/sb/cdm/v2" xmlns:qbp="http://www.intuit.com/sb/cdm/qbopayroll/v1" xmlns:qbo="http://www.intuit.com/sb/cdm/qbo"><qbo:LoginName>[email protected]</qbo:LoginName><qbo:Ticket>V1-48-Q0czg6etf4a8rhn9mxnc5a</qbo:Ticket><qbo:AgentId>666328880</qbo:AgentId><qbo:CurrentCompany><qbo:CompanyId>666328865</qbo:CompanyId><qbo:BaseURI>https://sg.qbo.intuit.com/qbo37</qbo:BaseURI></qbo:CurrentCompany></qbo:QboUser>]

person Scrappy Cocco    schedule 19.03.2013    source источник
comment
Вам нужно опубликовать фактический XML, созданный всем этим. Вы просматриваете его в браузере, а браузер скрывает теги XML. Просмотрите исходный код и опубликуйте фактический XML.   -  person Keith Palmer Jr.    schedule 19.03.2013
comment
@Keith Palmer: я сделал это, я разместил $InvoiceService = new QuickBooks_IPP_Service_Invoice(); вверху и внизу после $Invoice-›addLine($Line); я разместил $resp = $InvoiceService-›add($Context, $realmID, $Invoice); это правильный путь.... не знаю, как это опубликовать....   -  person Scrappy Cocco    schedule 19.03.2013
comment
Просмотрите исходный код в браузере и опубликуйте актуальный XML. Все, что вы разместили, не является полным XML. Это не имеет ничего общего с CODE, это связано с тем, что вы не копируете/вставляете фактический XML - вы только копируете/вставляете то, что отобразил браузер.   -  person Keith Palmer Jr.    schedule 19.03.2013
comment
@Keith Palmer: извините, что не понял вашей точки зрения, я обновил приведенный выше код с минимальными данными и Xml, который я вижу, когда я делаю источник просмотра ...   -  person Scrappy Cocco    schedule 20.03.2013
comment
Также опубликуйте ответ в формате XML. print($IPP-›lastRequest()); print($IPP-›lastResponse());   -  person Keith Palmer Jr.    schedule 20.03.2013
comment
@Keith Palmer: извините еще раз, все запросы и ответы теперь обновлены в моем вопросе .... и теперь я понимаю вашу точку зрения .... нет xml в части запроса, почему я думаю, что счет не добавляется, но вы можете пожалуйста, помогите мне, как этого добиться.....   -  person Scrappy Cocco    schedule 20.03.2013
comment
Annnddd... опубликуйте остальную часть кода. В частности, код, который вы используете для фактической отправки данных в IDS. И то, что мы ищем, это XML-запрос и ответ СРАЗУ ПОСЛЕ попытки добавить данные в IDS. например $Сервис-›добавить(...); print($Service-›lastRequest()); print($Service-›lastResponse());   -  person Keith Palmer Jr.    schedule 20.03.2013
comment
@Keith Palmer: бинго ... вот и $Service-> add (...); ..... наконец-то это заработало ... большое спасибо за вашу помощь ... я скоро обновлю ответ .. ...   -  person Scrappy Cocco    schedule 20.03.2013
comment
@Keith Palmer: я также хотел бы лично поблагодарить вас за предоставление этого замечательного API-интерфейса php .... и оценить усилия, которые вы приложили для создания этого API...........   -  person Scrappy Cocco    schedule 20.03.2013
comment
Нет проблем, рад помочь.   -  person Keith Palmer Jr.    schedule 20.03.2013


Ответы (1)


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

<?php

    $InvoiceService = new QuickBooks_IPP_Service_Invoice();
    $Invoice = new QuickBooks_IPP_Object_Invoice();
    $Header = new QuickBooks_IPP_Object_Header();


    $Header->setTxnDate('2013-03-20');
    $Header->setCustomerId('{QBO-2}');
    $Header->setTotalAmt(101);

    $Invoice->addHeader($Header);

    $Line = new QuickBooks_IPP_Object_Line();
    $Line->setDesc('Invoice desp comes here');
    $Line->setTaxable('false');
    $Line->setItemId('{QBO-2}');
    $Line->setAmount(101);

    $Invoice->addLine($Line);

    print_r($Invoice->asIDSXML());

    $resp = $InvoiceService->add($Context, $realmID, $Invoice);

    pr('New invoice is [' . $resp . ']' . "\n");

    print_r('Request [' . $IPP->lastRequest() . ']');
    print_r("<br/><br/>");
    print_r('Response [' . $IPP->lastResponse() . ']');
    print_r("<br/><br/>");

?>
person Scrappy Cocco    schedule 20.03.2013