fortnox api - hur gör man egentligen?

PHPportalen Forum Index » Tips och Trix
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
Krossmaskinen



Medlem i: 2706 dagar
Från: Stockholm, Sverige
Status: Offline



#726035
Inlägg Skrivet: 2012-09-11 12:25      Ämne: fortnox api - hur gör man egentligen? Citera

Jag håller på lite med fortnox api nu, och jag kan inte ärligt säga att det har tillräcklig dokumentation. Och när det finns så är den inte jättelätt att förstå direkt.

Just nu försöker jag lära mig hur man kommunicerar med fortnox från sin egen server genom php (kanske uppenbart). Jag har inte kommit jättelångt än : )

Jag tänkte dela med mig lite av vad jag kan om fortnox api, och hoppas på att fler kan push:a med sina strån till den stora api-stacken! Jag har även en del frågor om api:t, och om någon vet svaret, så fyll på i tråden så kan jag uppdatera den här posten!

----------------------------------------------

- För att kunna använda fortnox api så behöver du ett token som du måste maila om till support@fortnox.se . Token:et används när du kontaktar fortnoxs server. Du behöver också ett konto på fortnox för att ens ha en databas att komma åt. Det går att fixa ett temporärt utvecklingskonto om man frågar efter det till support.

- Anrop till fortnoxs server inleds med
    "https://kund2.fortnox.se/ext/" eller
    "https://api.fortnox.se/ext/"

beroende lite på hur deras servrar mår. Funkar inte det ena så testa det andra eller fråga support.

- Det går att kommunicera med servern genom curl. Här är en exempelfunktion på en get-funktion
PHP:
1:
 private function get($host){
2:
      $timeout 120;
3:
      $ch curl_init();
4:
      
5:
      if($ch) {
6:
         curl_setopt $chCURLOPT_URL         $host );
7:
         curl_setopt $chCURLOPT_HTTPGET,         );
8:
         curl_setopt $chCURLOPT_TIMEOUT,         $timeout );
9:
         curl_setopt $chCURLOPT_VERBOSE,         );
10:
         curl_setopt $chCURLOPT_RETURNTRANSFER,   );
11:
         curl_setopt $chCURLOPT_SSL_VERIFYHOST,   );
12:
         curl_setopt $chCURLOPT_SSL_VERIFYPEER,   );
13:
         
14:
         $r curl_exec ($ch);
15:
         curl_close ($ch);
16:
         if($r!="")
17:
            return $r;
18:
         else{
19:
            return "timeout";
20:
         }
21:
      }
22:
   }
23:
 

$host är någon av url:erna som står skrivna ovan, samt önskad funktions namn och argument. Det som alltid behövs är databasnamn och token.
Exempel på en get_item-url:
PHP:
1:
 $host "https://kund2.fortnox.se/ext/get_item.php?db=xxx&token=xxx&id=xxx"

Där id är artikelnummer för det item som du vill hämta. Om det går rätt till så får du tillbaka en string som du kan göra om till ett xml-objekt:

PHP:
1:
 $xmlItem simplexml_load_string$r ); 


- Något som inte nämns i dokumentationen är att det går att hämta bl a artiklar med andra argument än bara id=$myItemId. T ex
PHP:
1:
 id=all 
hämtar alla artiklar
PHP:
1:
 id=list 
hämtar ut en... lista? Inte helt säker på vad den gör än.
PHP:
1:
 last_modified_date=2012-09-01 
Hämtar ut alla artiklar som har ändrats från 2012-09-01

- För att lägga till och uppdatera en item i fortnox via php, så gör man på nästan precis samma sätt som att hämta en item. Exmpelfunktion på set_item:
PHP:
1:
 
2:
private function postXml($host$query){
3:
      $timeout 120;
4:
      $ch curl_init();
5:
      
6:
      if($ch) {
7:
         curl_setopt $chCURLOPT_URL         $host );
8:
         curl_setopt $chCURLOPT_TIMEOUT,         $timeout );
9:
         curl_setopt $chCURLOPT_VERBOSE,         );
10:
         curl_setopt $chCURLOPT_POST,         );
11:
         curl_setopt $chCURLOPT_POSTFIELDS,      $query );
12:
         curl_setopt $chCURLOPT_RETURNTRANSFER,   );
13:
         curl_setopt $chCURLOPT_SSL_VERIFYHOST,   );
14:
         curl_setopt $chCURLOPT_SSL_VERIFYPEER,   );
15:
         
16:
         $r curl_exec ($ch);
17:
         curl_close ($ch);
18:
         if($r!="")
19:
            return $r;
20:
      }
21:
   }
22:
 

Exmpel på $host och $query efter att du fyllt i en form:
PHP:
1:
 
2:
$string = "<?xml version='1.0' encoding='utf-8'?>
3:
<item xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
4:
   <id>$_POST['id']</id>
5:
   <descr>$_POST['descr']</descr>
6:
   <inprice>$_POST['inprice']</inprice>
7:
   <stock>$_POST['stock']</stock>
8:
</item>";
9:
 
10:
$query = "xml=" . urlencode( $string );
11:
$host = "https://kund2.fortnox.se/ext/get_item.php?db=xxx&token=xxx";
12:
 
13:
$result = postXml( $host, $query );
14:
 


----------------------------------------------

Awesome, jag lärde mig set_item medan jag skrev det här inlägget : D Hoppas någon får ut något av det här! Rätta gärna till om jag skrivit något konstigt eller om det finns mer du vill tillägga!
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
chrillep



Medlem i: 2238 dagar

Status: Offline



#732670
Inlägg Skrivet: 2013-06-05 10:46      Ämne: Citera

KOD:
1:
 
2:
function getnox( $host, $function, $db, $token ) {
3:
   $timeout = 120;
4:
   $ch = curl_init();
5:
 
6:
   if ( $ch ) {
7:
      curl_setopt( $ch, CURLOPT_URL,          $host.$function.'.php?'.'db='.$db.'&token='.$token );
8:
      curl_setopt( $ch, CURLOPT_HTTPGET,         1 );
9:
      curl_setopt( $ch, CURLOPT_TIMEOUT,         $timeout );
10:
      curl_setopt( $ch, CURLOPT_VERBOSE,         0 );
11:
      curl_setopt( $ch, CURLOPT_RETURNTRANSFER,   1 );
12:
      curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST,   0 );
13:
      curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER,   0 );
14:
 
15:
      $r = curl_exec( $ch );
16:
      curl_close( $ch );
17:
      if ( $r!="" ) {
18:
         return $r;
19:
      }else {
20:
         return "timeout";
21:
      }
22:
   }
23:
}
24:
function postnox( $host, $function, $db, $token, $query ) {
25:
   $ch = curl_init();
26:
   if ( $ch ) {
27:
      curl_setopt( $ch, CURLOPT_URL, $host.$function.'.php?'.'db='.$db.'&token='.$token);
28:
      curl_setopt( $ch, CURLOPT_TIMEOUT, 60 );
29:
      curl_setopt( $ch, CURLOPT_VERBOSE, 0 );
30:
      curl_setopt( $ch, CURLOPT_POST, 1 );
31:
      curl_setopt( $ch, CURLOPT_POSTFIELDS, $query );
32:
      curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
33:
      curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
34:
      curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
35:
      $r = curl_exec( $ch );
36:
      curl_close( $ch );
37:
      if ( $r!="" )
38:
         return $r;
39:
   }
40:
}
41:
 
42:
$noxtoken = 'din_token';
43:
$noxdb = 'din_db';
44:
$noxhost = 'https://api.fortnox.se/ext/';
45:
$noxfunction = 'set_item';
46:
$noxstring = 'xml='.urlencode($string);
47:
$result = postnox($noxhost, $noxfunction, $noxdb, $noxtoken, $noxstring);   
48:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » Tips och Trix
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic