Generieke plugin data uitwisseling
De generieke plugin stuurt gestandaardiseerde JSON data naar een instelbare endpoint
De generieke plugin kan worden gactiveerd per account. Voor het activeren van een generieke plugin kan worden gemailed naar onze support afdeling.
Er zijn 2 manieren om de generieke plugin te gebruiken. Met de plugin kunnen statistieken worden uitgelezen, of de plugin kan een JSON pakket sturen naar een vooraf aangegeven endpoint (dit webadres moet worden gecommuniceerd met onze support afdeling zodat deze kan worden ingesteld).
Authenticatie
Een authenticatie sleutel moet worden ingesteld bij het activeren van de plugin. Deze wordt meegestuurd met de JSON verzoeken.
De consumerende partij controleert de header:
api-key
De api-key stuurt Scanfie op naar de consumer/ ontvangende partij.
Aanroepen van de JSON endpoint (statistieken ophalen)
De generieke plugin zal automatisch een JSON endpoints aanroepen, afhankelijk van de geactiveerde 'acties'. De plugin gebruikt altijd een POST http method met application/json als Content-Type.
De plugin verwacht een http status code 200 of 202 terug en zal 2 pogingen doen als deze status niet ontvangen wordt (of bij bijvoorbeeld een timeout).
Data definities
De generieke plugin schrijft prijzen weg als Double, met een maximale precisie van 6 decimalen.
Datum en tijd worden verstuurd in ISO8601 formaat; yyyy-MM-dd'T'HH:mm:ss.SSSZ
Data per financiële transactie (get aanroep)
Deze actie wordt direct na het afrekenen van een sessie (tafel, groep of losse verkoop) uitgevoerd. De JSON payload na een financiële transactie is alsvolgt samengesteld:
{
"receipt": {
"includedInTurnover": true,
"receiptId": "821dd2ed-d5f5-474f-9dd2-edd5f5d74fb1",
"internalId": null,
"totalPrice": 68.25,
"dateTimeReceipt": "2024-09-17T14:44:57.179+0200",
"items": [
{
"internalId": "2879543b-3370-4abf-b954-3b33704abf46",
"quantity": 3,
"storedPrice": 9.75,
"storedNettPrice": 8.944953,
"product": {
"name": "Cappuccino",
"internalId": "2dc286f7-fa71-4bdc-8286-f7fa718bdc3b",
"externalId": "",
"eanSku": null,
"priceIn": 3.25,
"priceEx": 2.981651,
"vat": 9
}
},
{
"internalId": "049f47eb-8e6c-46a6-9f47-eb8e6c46a6f8",
"quantity": 6,
"storedPrice": 58.5,
"storedNettPrice": 53.669724,
"product": {
"name": "Borrelplank 9st",
"internalId": "56f07526-2113-4265-b075-262113826507",
"externalId": "",
"eanSku": null,
"priceIn": 9.75,
"priceEx": 8.944954,
"vat": 9
}
}
]
},
"payment": {
"paymentId": "821dd2ed-d5f5-474f-9dd2-edd5f5d74fb1",
"paymentMethodExternalId": "1005",
"paymentAmount": 68.25,
"paymentTypeName": "Pin",
"dateTimePayment": "2024-09-17T14:49:41.869+0200"
}
}
De receipt node is een consolidatie van de bestellingen van een sessie (bijvoorbeeld een tafelrekening of groeprekening). De payment node is de financiële transactie geassocieerd met de bijbehorende omzet.
De includedInTurnover waarde geeft aan of de omzet mag worden meegeteld, bij bijvoorbeeld Derving of Representatie zal deze waarde false zijn.
Data per verkoop (push methode)
De generieke plugin kan losse bestelling direct doorsturen naar een JSON endpoint, indien deze actie actief is. De inhoud van deze JSON ziet er alsvolgt uit:
{
"order": {
"orderId": 29,
"internalId": null,
"totalPrice": 9.75,
"items": [
{
"internalId": "7d4715e6-b0b3-4781-8715-e6b0b3c7811d",
"quantity": 1,
"storedPrice": 9.75,
"storedNettPrice": 8.944954,
"product": {
"name": "Borrelplank 9st",
"internalId": "56f07526-2113-4265-b075-262113826507",
"externalId": "",
"eanSku": null,
"priceIn": 9.75,
"priceEx": 8.944954,
"vat": 9
}
}
]
}
}
De inhoud van deze JSON is compacter en is vaak een onderdeel van een onderliggende sessie (tafel of groepsrekening).