Intro
Met de webshop api wordt het mogelijk om orders (facturen) in te schieten in McWin (POS systeem van Microcash) en bepaalde gegevens op te halen.
Er zijn een aantal instellingen en gegevens nodig om de webshop met McWin te kunnen koppelen. Hieronder de benodigdheden.
- McWin moet aan staan op de server. (Wordt geïnstalleerd door Microcash)
- De McAppBridge moet zijn geïnstalleerd en actief zijn. (Wordt geïnstalleerd door Microcash)
- Bedrijfsgegevens moeten zijn aangemaakt. (Wordt aangemaakt door Microcash)
- API Login account (Aan te maken in de Microcash Online Helpdesk portal)
- API-Key (Te vinden in de Microcash Online Helpdesk portal)
- API-Code (Te vinden in de Microcash Online Helpdesk portal)
Artikel stamdata
De artikel stamdata wordt op een FTP locatie van Microcash gezet waar we credentials van aanleveren. Het bestand is een totaalbestand en wordt dagelijks overschreven. Dit bestand kun je gebruiken om de artikeldata up to date te houden binnen de webshop. Verder kun je via de API artikeldata opvragen om tussendoor de meest up to date data te verkrijgen.
API
De API is te bereiken op https://app.microcash.nl en moet worden aangevuld met het call gedeelte van de URL. Bijvoorbeeld: https://app.microcash.nl/api/auth/login
Er is een aantal calls beschikbaar in de API. Deze calls worden hieronder beschreven. Op de Login en Refresh calls na hebben alle calls de volgende headers nodig:
Authorization = Bearer accessToken uit de login call
X-Api-Key = Verstrekte API-Key
X-Api-Code = Verstrekte API-Code
Content-Type = application/json
Alle calls zijn POST calls en hebben JSON input en output. Zorg dat je Encoding UTF-8 hebt voor de input.
Login /api/auth/login
De call om een bearer token te verkrijgen welke nodig is om de daadwerkelijke webshop calls te doen. Het antwoord bevat zowel een Bearer Token (accessToken) als een Refresh Token.
Je hoeft niet voor elke call in te loggen. Het Bearer Token is een bepaalde tijd geldig. Zolang deze geldig is kun je dit Token hergebruiken. Wanneer het Token niet meer geldig is kun je met de Refresh call een nieuw Token opvragen zonder dat je opnieuw hoeft in te loggen. Wanneer ook het Refresh Token verlopen is zul je opnieuw moeten inloggen.
Input
{
"email": "gebruikers email aangemaakt in de Microcash Online Helpdesk portal",
"password": "gebruikers wachtwoord aangemaakt in de Microcash Online Helpdesk portal"
}| Veld | Type | Verplicht | Info |
| string | Ja | Gebruikersnaam | |
| password | string | Ja | Wachtwoord |
Output
{
"tokenType": "Bearer",
"accessToken": "Dit is het Bearer Token",
"expiresIn": 3600,
"refreshToken": "Dit is het Refresh Token"
}
| Veld | Type | Info |
| tokenType | string | |
| accessToken | string |
Dit is het Bearer token dat moet worden gebruikt in de authorization header bij de API calls.
Voorbeeld: Authorization = Bearer EFROKEWR$33_wijoi$FJOKIWIJFIOWJ
|
| expiresIn | integer | Geldigheid van het Bearer token |
| refreshToken | string | Het Refresh token. Zie het Refresh hoofdstuk |
Refresh /api/auth/refresh
Wanneer het Bearer Token verlopen is kun je met het Refresh Token verkregen uit de Login call een nieuw Bearer Token genereren zonder opnieuw in te loggen. Je krijgt dan als antwoord een nieuw Bearer Token plus een nieuw Refresh Token.
Wanneer het Refresh Token ook niet meer geldig is zul je opnieuw de Login call moeten aanroepen.
Input
{
"refreshToken": "Refresh Token verkregen uit de Login call"
}
| Veld | Type | Verplicht | Info |
| refreshToken | string | Ja | Het Refresh Token verkregen bij de Login call of een eerdere Refresh call |
Output
{
"tokenType": "Bearer",
"accessToken": "Dit is het Bearer Token",
"expiresIn": 3600,
"refreshToken": "Dit is het Refresh Token"
}
| Veld | Type | Info |
| tokenType | string | |
| accessToken | string |
Dit is het Bearer token dat moet worden gebruikt in de authorization header bij de API calls.
Voorbeeld: Authorization = Bearer EFROKEWR$33_wijoi$FJOKIWIJFIOWJ
|
| expiresIn | integer | Geldigheid van het Bearer token |
| refreshToken | string | Het Refresh token. Zie het Refresh hoofdstuk |
Get Stock /api/webshop/stock
Opvragen van de voorraad van producten via de barcode een van product.
Input
{
"barcodes": [
"1234567891234",
"2345678912345",
"3456789123456",
]
}
| Veld | Type | Verplicht | Info |
| barcodes | Array van strings | Ja | Array van barcodes |
Output
{
"products": [
{
"barcode": "1234567891234",
"stock": 6
},
{
"barcode": "2345678912345",
"stock": 27
}
],
"messages": [],
"errors": ["Barcode niet gevonden: '3456789123456'"]
}
| Veld | Type | Info |
| products | Array van productobjecten | Array van producten waar de voorraad van is opgehaald |
| products: barcode | string |
Barcode van een product
|
| products: stock | integer | Voorraad van een product |
| messages | Array van strings | Aanvullende meldingen over de call. Op dit moment niet in gebruik. |
| errors | Array van strings | Errormeldingen waarin staat beschreven wat er fout is gegaan. |
Create Invoice /api/webshop/invoice
Aanmaken van een factuur van een bestelling in McWin.
Input
{
"customer":{
"name":"Tinus Test",
"email":"tinustest@gmail.com",
"address":{
"street":"Adres",
"houseNumber":"1",
"houseNumberAddition":"a",
"zipCode":"1234AB",
"city":"Testdorp"
}
},
"lines":[
{
"barcode":"8720181022548",
"price":2.49,
"quantity":1
},
{
"barcode":"3663555004373",
"price":2.49,
"quantity":1
}
],
"reference":"123477",
"webshop":"Web",
"paid":true,
"note":"Extra klantbestelling",
"dropship":false
}
| Veld | Type | Verplicht | Info |
| customer | Klantobject | Ja | Klantobject met informatie over de klant |
| customer: name | string | Ja |
Naam van de klant
|
| customer: email | string | Ja | Emailadres van de klant |
| customer: address | Adresobject | Klantadres | |
| customer: address: street | string | Straatnaam van de klant | |
| customer: address: houseNumber | string | Huisnummer van de klant | |
| customer: address: houseNumberAddition | string | Huisnummertoevoeging van de klant | |
| customer: address: zipCode | string | Postcode van de klant | |
| customer: address: city | string | Woonplaats van de klant | |
| customer: address: country | string | 3 letter code van het land volgens de ISO 3166-1 regel. https://www.iso.org/obp/ui | |
| lines | Bestelregel object | Ja | Array van bestelregel objecten |
| lines: barcode | string | Ja | Productbarcode |
| lines: price | double | Ja | Productprijs |
| lines: quantity | integer | Ja | Aantal van een product |
| reference | string | Ja | Unieke referentie van de bestelling |
| webshop | string | Unieke referentie van de webshop. Deze moet bekend zijn binnen McWin. Standaard leeg | |
| paid | boolean | Ja/nee vraag of de bestelling al betaald is. Standaard nee | |
| note | string | Extra notitie voor de bestelling | |
| dropship | boolean | Ja/nee vraag of de bestelling een dropship bestelling is. Wanneer je hier ja invult wordt betekent dit dat de bestelling door een externe leverancier wordt afgehandeld, en er geen voorraad wordt afgeboekt. |
Output
{
"reference": " 123477",
"invoiceNumber": "11W",
"messages": [],
"errors": []
}
| Veld | Type | Info |
| reference | string | Unieke referentie van de bestelling |
| invoiceNumber | string |
Factuurnummer aangemaakt door McWin
|
| messages | Array van strings | Aanvullende meldingen over de call. Op dit moment niet in gebruik. |
| errors | Array van strings | Errormeldingen waarin staat beschreven wat er fout is gegaan. |
Get Products /api/webshop/product
Live productinformatie ophalen vanuit McWin. In deze call kun je van een lijst van producten (barcodes) een aantal productvelden ophalen.
Input
{
"barcodes": [
"1234567891234"
],
"fields": [
"salesPrice",
"group",
"currentPrice",
"name"
]
}
| Veld | Type | Verplicht | Info |
| barcodes | Array van strings | Ja | Array van productbarcodes |
| fields | Array van strings | Ja |
Array met de productvelden waarvan je informatie wil ontvangen. Zie extra uitleg over de velden wat de input kan zijn.
|
Productvelden:
Name: Productomschrijving
Number: PLU
Stock: Winkelvoorraad (zonder eigen magazijn voorraad. Voor de gehele voorraad gebruik de stock call)
SalesPrice: Verkoopprijs
TemporaryPrice: Tijdelijke verkoopprijs
TemporarySince: Tijdelijke verkoopprijs startdatum
TemporaryUntil: Tijdelijke verkoopprijs einddatum
CurrentPrice: Kassaprijs
VATCode: BTWcode van het artikel. Dit kan N, L, M, H zijn. M wordt niet gebruikt in Nederland
Group: Groepcode van het product
Brand: Merkcode van het product
Category: Categorie van het product
Memo1: Vrije invoer
Memo2: Vrije invoer
Memo3: Vrije invoer
Memo4: Vrije invoer
Webshop: Voor welke webshop is dit product beschikbaar. “NEE” in het geval van niet beschikbaar voor webshops
StockMinimum: Minimale voorraad van het product in de winkel
StockMaximum: Maximale voorraad van het product in de winkel
ProductRange: Assortiment van het product
Output
{
"products": [ {
"barcode": "1234567891234",
"fields": [
{
"field": "SalesPrice",
"value": "0,85"
},
{
"field": "Group",
"value": "404"
},
{
"field": "CurrentPrice",
"value": "0,85"
},
{
"field": "Name",
"value": "Testproduct"
}
]
}],
"messages": [],
"errors": []
}
| Veld | Type | Info |
| products | Array van productobjecten | Array van producten waar de productinformatie van is opgehaald |
| products: barcode | string |
Barcode van een product
|
| products: fields | Array van productveldobjecten | Object met daarin de informatie over het productveld |
| products: fields: field | string | Welk productveld is opgehaald |
| products: fields: value | string | Waarde van het opgehaalde productveld.<UNKNOWN> in het geval van een foutief opgegeven productveld, <NOTINUSE> wanneer een productveld niet in gebruik is |