2016-04-22 5 views
0

Ich verwende normalerweise das PHP SDK, das gut funktioniert. Allerdings muss ich eine Ressource anrufen, die derzeit nicht über das SDK verfügbar ist, dh die Möglichkeit, eine PDF-Rechnung gemäß https://developer.intuit.com/docs/api/accounting/invoiceSo authentifizieren Sie sich mit Quickbooks Online API mit CURL & PHP

abzurufen Ich muss daher über die Basis-URL verbinden. Nun, dies ist eine App, die ich gerade verwende, um mich mit meinem eigenen Unternehmenskonto zu verbinden. Ich habe alle Anmeldeinformationen über den oAuth Playground generiert und alle 180 Tage manuell erneuert. Das ist, was ich versucht:

$url = "https://quickbooks.api.intuit.com/v3/company/123456/invoice/8661/pdf"; 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array("OAuth oauth_token:*******", 
              "oauth_nonce:******", 
              "oauth_consumer_key:*****", 
              "oauth_signature_method:HMAC-SHA1", 
              "oauth_timestamp:1461326602", 
              "oauth_version:1.0", 
              "oauth_signature:******")); 
curl_setopt($curl, CURLOPT_VERBOSE, TRUE); 
$result = curl_exec ($curl); 
print $result; 

Dies ist die Antwort:

< HTTP/1.1 400 Illegal character 0x20 
< Server: nginx 
< Date: Fri, 22 Apr 2016 11:58:59 GMT 
< Content-Length: 0 
< Connection: keep-alive 
< Keep-Alive: timeout=5 

Ich weiß nicht einmal, ob ich alle richtigen Schlüssel und Token bin mit. Ich habe dieselben Werte verwendet, die ich erfolgreich für das PHP SDK verwendet habe.

Ich würde mich freuen, wenn jemand mir raten kann, was ich falsch mache. Vielen Dank.

+0

Überprüfen Sie Ihre /etc/nginx/nginx.conf versuchen Sie, keep_alive & client_max_body_size zu ändern, sobald Sie nginx neu starten. Sollte funktionieren –

Antwort

1

Sie haben Ihre Anfragen unter Verwendung von OAuth zu unterzeichnen, pro der Dokumentation:

https://developer.intuit.com/docs/0100_accounting/0060_authentication_and_authorization

Wenn Sie dies mit curl tun wollen, müssen Sie die OAuth-Spezifikation implementieren:

http://oauth.net/core/1.0a/

Nur hart codieren, wie Sie in Ihrem Beispiel getan haben Code wird nicht funktionieren. Sie müssen für jede einzelne Anforderung mit dem OAuth-Signaturalgorithmus eine OAuth-Signatur für berechnen.

Wenn Sie dies nicht selbst tun möchten, verwenden Sie eine Bibliothek, die diese Funktionalität bereits für Sie bereitstellt. Zum Beispiel kann eine OAuth-Bibliothek:

http://php.net/manual/en/book.oauth.php

oder eine aktuelle Quickbooks Online + PHP lib, die die Funktionalität, die Sie benötigen (Disclaimer - Ich bin der Autor):

https://github.com/consolibyte/quickbooks-php

Insbesondere Download PDFs:

+0

Danke. Ich habe versucht, die Bibliothek zu installieren, aber ich habe Schwierigkeiten, da die Anweisungen hier veraltet sind. http://www.consolibyte.com/docs/index.php/PHP_DevKit_for_QuickBooks_-_Intuit_Partner_Platform_Quick-Start. Insbesondere fragt es nach einem DSN. Für mich bedeutet das die Windows-Version von QB, aber ich könnte mich irren. – user2029890

+0

Ich habe mehr in Ihren Foren gelesen. Ich verwende Produktionsschlüssel (die mit dem offiziellen SDK funktionieren). Gibt es ein Beispiel dafür, wie die Konfigurationsdatei aussehen sollte? Ich bin mir nicht sicher, welche Rolle die DB hier spielt. Ich habe mysql installiert, Daten werden hier geschrieben – user2029890

+0

Wenn Sie unseren Code verwenden, werden die OAuth-Tokens in die Datenbank geschrieben. Soweit ich weiß, sind unsere Codes/Tokens nicht mit den Intuit kompatibel. Daher müssen Sie sich über die Schaltfläche "Connect to QuickBooks" erneut verbinden, wenn Sie unseren Code verwenden möchten. Die Konfigurationsdatei, die in GitHub * enthalten ist, ist ein funktionierendes Beispiel, vorausgesetzt, Sie befolgten die Schnellstartanleitung, die auf der GitHub-Readme verlinkt ist. –

0

Vielleicht wird dies Ihnen helfen:

Zeichenfolge erstellen mit allen Parametern und Tasten, und mit Authorization Tastenfeld machen und in Kopfteil verwenden.

$auth = 'realm="123456",oauth_consumer_key="KEYSTRING",oauth_token="TOKENSTRING",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1502970860",oauth_nonce="KbSwZN",oauth_version="1.0",oauth_signature="W3fYzXn5EZ1ajo6SfU0LZEQPKfc%3D"'; 

$headr = array(); 
$headr[] = 'Authorization: OAuth '.$auth; 

$url = "https://quickbooks.api.intuit.com/v3/company/123456/customer/2"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER,$headr); 
curl_setopt($ch, CURLOPT_VERBOSE, TRUE); 
$response = curl_exec($ch); 

echo "<pre>"; print_r($response); echo "</pre>"; die(); 
Verwandte Themen