Post by omersari » Sun Oct 05, 2014 8:53 pm

Beste,

ik ben bezig met mijn webshop en heb van mijn distributeur een API key gekregen zodat ik realtime de voorraadstatus en dergelijke kan laten opvragen.

ik heb maar 1 topic gezien waar ze hetzelfde mee willen doen maar daar zijn ze waarschijnlijk ook niet meer verder in gaan verdiepen. Ik zit momenteel klem en wil graag hulp vragen van jullie.

Wat ik heb:
Werkende webshop
Een API KEY

Dit zijn de dingen die ik van mijn distributeur heb gekregen:
Mijn Twindis API

Gebruik de Twindis API om op Uw website altijd de correcte gegevens van onze producten te krijgen.
Mijn API Key


API uitleg

Wat is een API?

Momenteel verkeert de API in BETA fase, het is mogelijk dat er veranderingen in geplaatst worden.

mijn API KEY: EE479C65DFD9F6B72AD1CB84CA6FE407

Een API request zal altijd een JSON object terug geven. Een API request ziet er als volgt uit:
http://www.twindis.com/api/functie?apikey=key&andere parameters

Momenteel is alleen de getStatus functie beschikbaar; hierbij hoeft u behalve uw API key alleen de ID variabele mee te geven van het betreffende product.
bijvoorbeeld
http://www.twindis.com/api/getStatus?ap ... d=P0000001
vervolg wat is een api
API staat voor Application Programming Interface, een soort 'tussenvoegsel' waardoor een computerprogramma kan communiceren met een ander programma. Met behulp van een API hoeft bijvoorbeeld een tekenprogramma niet de details te weten van de aansturing van de printer, maar kan het deze printer wel gebruiken; het enige wat het tekenprogramma hoeft te doen is de afdruk-API, een stuk gespecialiseerd software in een bibliotheek, aan te roepen om de tekening te printen.

In dit geval zorgt de Twindis API ervoor dat uw eigen database realtime kan communiceren met de Twindis database, bijvoorbeeld om de real-time voorraad van Twindis direct te linken aan uw eigen voorraad.

Ingelogde gebruikers kunnen sinds kort op https://www.twindis.com/account/mijn-api-key/ hun API key vinden.

Een voorbeeld van een key is "E2EE2E8DE201EFF104DE51E16F867EAF". (Deze key verschilt per klant)
Als u naar de volgende URL gaat:
http://www.twindis.com/api/getStatus?ap ... d=p0002079
dan krijgt u het volgende resultaat terug:

{
"ID": "p0002079",
"STOCK": 1068,
"LEADTIME": 0,
"LEADTIMETEXT": "Op voorraad"
}

Dit resultaat is in JSON formaat voor data-uitwisseling, uw website developer weet wat hiermee moet gebeuren.
De ID is het artikelnummer zoals het bij Twindis bekend is
De STOCK is de realtime actuele voorraad bij Twindis.
De LEADTIME betekent hoeveel dagen dat het duurt voor Twindis het product kan opsturen.
De LEADTIMETEXT is de exacte tekst zoals Twindis die op de website gebruikt.
Hopelijk kan iemand mij hiermee helpen.


EDIT:
dit is het link die ik heb kunnen vinden:

http://forum.opencart.com/viewtopic.php?f=106&t=95645

Newbie

Posts

Joined
Thu Apr 05, 2012 12:31 am

Post by pprmkr » Mon Oct 06, 2014 4:10 pm

Blijkt dat de directe ajax-call geblokkeerd wordt a.g.v. crossdomain restricties.

Dit is te omzeilen door curl te gebruiken.

Bewerk catalog/controller/catalog/product.php
Voor de laatste } voeg toe:

Code: Select all

	public function getStatus(){

		$apiKey = 'E2EE2E8DE201EFF104DE51E16F867EAF';
		$id = $this->request->get['id'];
		
		$url = 'http://www.twindis.com/api/getStatus?apikey='.$apiKey.'&id=' . $id;
		
		$curl = curl_init($url);
		
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
		 		
		$response = curl_exec($curl);
		
		curl_close($curl);
		
		$this->response->setOutput($response);	
	}
De velden in de template zetten.
Bewerk catalog/view/theme/YOUR_THEME/template/product/product.tpl
Voeg in in de buurt van <span><?php echo $text_stock; ?></span> <?php echo $stock; ?></div>

Code: Select all

      Aantal:<span id="stock"></span>
      Levertijd:<span id="leadtime"></span>
      Voorraad:<span id="leadtimetext"></span>
Voor <?php echo $footer; ?> voeg in:

Code: Select all

<script type="text/javascript"><!--
    $(document).ready(function() {
       $.ajax({
          url: 'index.php?route=product/product/getStatus&id=<?php echo $model; ?>',
          dataType: 'json',
          beforeSend: function() {
             $('#stock').after('<span class="wait">&nbsp;<img src="catalog/view/theme/default/image/loading.gif" alt="" /></span>');
          },      
          complete: function(json) {
             $('.wait').remove();
          },         
          success: function(json) {         
             if (json['ID']) {
                $('#stock').html(json['STOCK']);
                $('#leadtime').html(json['LEADTIME']);
                $('#leadtimetext').html(json['LEADTIMETEXT']);
             }
          },
          error: function(json) {
             $('#leadtimetext').html('Onbekend');
          }
       });   
    });
//--></script>
In dit voorbeeld ga ik er van uit dat jouw 'model nummer' hetzelfde is als de twindis ID.

User avatar
Active Member

Posts

Joined
Sat Jan 08, 2011 11:05 pm
Location - Netherlands
Who is online

Users browsing this forum: No registered users and 10 guests