Prøv en gratis demo

Klik her for at bestille

Bestil en gratis demo

Prøv en gratis og uforpligtende demo af Gecko Booking - Udfyld formularen, og vi sender dig en demo hurtigst muligt

Felter markeret med * er påkrævede

Vejledninger til GECKO Booking

Finder du ikke svar på dine spørgsmål, er du naturligvis altid meget velkommen til at kontakte os

Kontakt os

API-adgang (SOAP)


Indholdsfortegnelse


9.1 API-adgang (SOAP)

Webservicen giver andre systemer mulighed for at snakke sammen med GECKO Booking, hvorfor det i andre systemer bliver muligt at sende eller modtage data direkte til eller fra GECKO Booking. Fordelen ved at anvende webservicen er, at det giver et fælles udviklingssprog, hvad enten jeres system er kodet i PHP, .NET, C# eller andet. Eksemplerne i denne vejledning vil tage udgangspunkt i PHP-metoder til at tilgå webservicen.

Webservicens WSDL findes på adressen: http://app.geckobooking.dk/api[VERSIONSNUMMER]/webservice.php?WSDL 

Webservicen udvikles løbende med nye funktioner efter behov. Tidligere versionsnumre udgår, når der ikke er nogen, der benytter dem. Kontakt GECKO Booking for det seneste versionsnummer.


Bemærk! Webservice / API er som default slået fra på din konto. Kontakt GECKO Booking for at få det aktiveret.


På nuværende tidspunkt er der lavet handles til at håndtere kundedatabasen, dvs. kundelisten kan hentes ud, felter på den enkelte kunde kan læses og opdateres (inklusiv JFF-felter, dvs. felter du selv har oprettet i bookingsystemet). Det er også muligt at oprette nye kunder.

Man kan hente handles til kundegrupper, da det skal benyttes i flere af de andre funktioner, f.eks. skal en kunde oprettes i en kundegruppe.

Herudover kan man hente bookingstatistik ud som .csv eller .xml fil. Denne funktion er begrænset til at kunne hente statistik 14 dage tilbage. Hvis man ønsker et komplet udtræk over bookinger, skal det hentes manuelt via GECKO Booking-login'et.


9.1.1 Eksempel 1: PHP - Connecte til webservicen

Nedenstående kode viser et eksempel på, hvordan man kan connecte til webservicen. Alle efterfølgende eksempler forudsætter, at man har lavet en connection til webservicen.


		$client = new SoapClient("http://app.geckobooking.dk/api[VERSIONSNUMMER]/webservice.php?WSDL", array('soap_version' => SOAP_1_2,'trace' => 1,'cache_wsdl' => 0 ));
$bookingClientId = 883;
$bookingUsername = "Your superadmin username";
$bookingPassword = "Your superadmin password";
if ($client -> Connect($bookingClientId,$bookingUsername,$bookingPassword)){
    echo "connected";
}

9.1.2 Eksempel 2: PHP - Hente og vise alle kunders navne

		$CustomerHandles = $client -> Customer_GetAll();
if (!is_null($CustomerHandles)){
    echo "ANTAL FUNDET : ".sizeof($CustomerHandles -> CustomerHandles)."<br>";
    if (is_array($CustomerHandles -> CustomerHandles)){ reset($CustomerHandles -> CustomerHandles);
        while (list(,$CustomerHandle) = each($CustomerHandles -> CustomerHandles)){
            $customerName = $client -> Customer_GetName($CustomerHandle);
            echo "NAVN : ". utf8_decode($customerName) . "<br>";
        }
    }
}

Customer_GetAll returnerer et array af kundehandles. De gennemløbes og herefter udskrives kundens navn med Customer_GetName().


9.1.3 Eksempel 3: PHP - Oprette en ny kunde

		$CustomerGroupHandle = $client -> CustomerGroup_FindCustomerGroupById(1439);

$CustomerNumber = utf8_encode("50");
$CustomerName = utf8_encode("Peter Aude");
$CustomerAddress = utf8_encode("Helsingforsgade 27");
$CustomerPostalCode = utf8_encode("8200");
$CustomerCity = utf8_encode("Aarhus N");
$CustomerEmail = utf8_encode("peter@gecko.dk");
$CustomerPassword = utf8_encode("xxx".rand(0,1000000));//not safe pw!!
$CustomerTelephone = utf8_encode("70271699");
$CustomerMobile = "";            

$CustomerHandle = $client -> Customer_Create($CustomerGroupHandle,$CustomerNumber, $CustomerName, $CustomerAddress, $CustomerPostalCode, $CustomerCity, $CustomerEmail, $CustomerPassword, $CustomerTelephone, $CustomerMobile);
if (!is_null($CustomerHandle)){
    echo $CustomerHandle -> Id;            
}

Først findes et handle til den kundegruppe, kunden skal oprettes i.

$CustomerNumber kan eventuelt benyttes til egne interne id'er. Det handle, der kommer retur, har et id, som er vores id på kunden.

Hvis du ønsker at lave et dublet-tjek for at sikre, at kunden ikke allerede eksisterer i systemet, kan du benytte funktionen FindCustomersByNumber:


		$CustomerNumber = utf8_encode("50");
$CustomerHandles = $client -> Customer_FindCustomersByNumber($CustomerNumber);
if (is_null($CustomerHandles)){
    echo "Findes ikke... Opret";
}

9.1.4 Eksempel 4: PHP - Opdatere kundes navn

For at opdatere et kundefelt kræves der et handle til den pågældende kunde.  Der er flere funktioner beregnet til at få fat i kundens handle, f.eks. Customer_FindCustomersById, som returnerer pågældende handle, eller Customer_FindCustomersByNumber, som enten returnerer:

  • Et handle, hvis der kun er et match
  • Et array af handles, hvis der er flere, der matcher nummeret
  • Null, hvis der ikke er match

		$CustomerNumber = utf8_encode("5dds0");
$CustomerHandles = $client -> Customer_FindCustomersByNumber($CustomerNumber);
if (is_null($CustomerHandles)){
    echo "Findes ikke... Opret";
}

9.1.5 Eksempel 5: PHP - Opdatere ekstra felter på kunden

JFF-Felter er faste felter, der kan oprettes på kunden. Hvis du f.eks. har et ønske om at gemme data om kunden, som ikke matcher et af GECKO Bookings standardfelter (navn, adresse osv.), kan du selv oprette et eller flere faster felter. Dette gøres i bookingsystemet under Indstillinger -> Journal.


		$JFFId = 223; //id'et for feltet "ønsket farve"
$CustomerExtraFieldHandle = $client -> CustomerExtraField_FindCustomerExtraFieldById($JFFId);
echo utf8_decode($client -> CustomerExtraField_GetName($CustomerExtraFieldHandle))."<br>";

$CustomerId = "304856";//GECKO kunde Id
$CustomerHandle = $client -> Customer_FindCustomerById($CustomerId);

//opdaterer kundens extra felt
$value = utf8_encode("Rød med lyse striber");
$client -> Customer_SetCustomerExtraField($CustomerHandle,$CustomerExtraFieldHandle,$value);

//udskriver kunde feltet. Den udskriver nu ”Rød med lyse striber”
echo utf8_decode($client -> Customer_GetCustomerExtraField($CustomerHandle,$CustomerExtraFieldHandle));

Id'et  $JFFId findes i GECKO Booking under Indstillinger -> Journal:

Funktionen til at gemme er:

Customer_SetCustomerExtraField($CustomerHandle,$CustomerExtraFieldHandle,$value)

Dette er funktionen, hvor du kan sætte værdien af et ekstra felt på en specifik kunde. Denne funktion returnerer true, hvis det går godt, eller false, hvis den ikke vil/kan opdatere.

Der er lagt validering ind i funktionen, så man ikke kan sende f.eks. en streng ind i et ja/nej felt.

Følgende værdier er tilladte (alt efter felttype):

  • Lille og stor tekst: Alt. Dog er 'lille tekst' begrænset til 255 tegn
  • Tal: Numeriske værdier
  • Ja / Nej (Radio): 0, 1, 2
  • Ja / Nej / Ved ikke (Radio): 0, 1, 2, 3
  • Ja (Checkbox): 0 , 1

9.1.6 Eksempel 6: PHP - Hente xml med fremtidige bookinger

		$CustomerGroupId = 1439;
$CustomerGroupHandle = $client -> CustomerGroup_FindCustomerGroupById($CustomerGroupId);
$DateFrom = date("Y")."-".date("m")."-".date("d");//YYYY-MM-DD
$DateTo = "2020-12-31";
$xml = $client -> CustomerGroup_GetBookingSchemaAsXML($DateFrom,$DateTo,$CustomerGroupHandle);    

header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Length: ' . strlen($xml));
header('Content-Disposition: attachment; filename="xml_file.xml"');
echo $xml;
exit;

I eksemplet laves først et handle til kundegruppen og derefter kaldes funktionen CustomerGroup_GetBookingSchemaAsXML med datoer for det ønskede udtræk.

Udtrækket, der returneres som en xml-streng, sættes i eksemplet til at starte en download i browser, men xml'en kunne lige så godt være viderebearbejdet på anden vis.


9.1.7 Eksempel 7: PHP - Slette en booking

Forudsætningen for at slette en booking er at bookingId'et er kendt, evt. via xml udtræk eller andet.


		$bookingId = 100;
$BookingHandle = $client -> Booking_FindBookingById($bookingId);
if (!is_null($BookingHandle)){
    if ($client -> Booking_DeleteBooking($BookingHandle)){
        echo "booking deleted with success :) ";
    } else {
        echo "error deleting!";
    }
} else {
    echo "booking not found!";
}

Prøv en gratis og uforpligtende demo af GECKO Booking

Udfyld formularen, og vi sender dig en demo hurtigst muligt.

 

Felter markeret med * er påkrævede