Plugins & Modules

Custom verbinding met Abeta

Body (JSON)

 1{
 2  "username": "string",       // The user's username
 3  "password": "string",       // The user's password
 4  "session_id": "string",     // A unique session identifier
 5  "return_url": "string",     // The URL to redirect to after login
 6  "api_key": "string"         // Your API key for authentication
 7}

#Login Request

Om een gebruiker te authenticeren wordt het volgende request gestuurd. Als antwoord verwacht de middleware een URL die gebruikt kan worden om de klant in te loggen. (In verband met de veiligheid raden wij aan om deze link een beperkte geldigheid te geven.)

#Request

Method / URL

POST /abeta/setup-request

Headers

  • Content-Type: application/json

Body (JSON)

 1{
 2  "username": "string",       // The user's username
 3  "password": "string",       // The user's password
 4  "session_id": "string",     // A unique session identifier
 5  "return_url": "string",     // The URL to redirect to after login
 6  "api_key": "string"         // Your API key for authentication
 7}

#CURL Voorbeeld

 1curl -X POST "https://example.com/abeta/setup-request" \
 2     -H "Content-Type: application/json" \
 3     -H "Authorization: Bearer <token>" \
 4     -d '{
 5           "username": "John Doe",
 6           "password": "john.doe@example.com",
 7           "session_id": "123-123",
 8           "return_url": "https://www.abeta.io",
 9           "api_key": "ABC123"
10         }'

#Succes Response

 1{
 2  "one_time_url": "https://example.com/redirect-url"
 3}

#Error response

Indien er een fout optreedt in het proces verwacht Abeta één van de volgende reponses terug:

 1{
 2  "error": "invalid_api_key"
 3}

Waar de foutcodes uit onderstaande lijst gehanteerd kunnen worden. Let op, om op een correcte manier vanuit Abeta de statussen te controleren is het noodzakelijk dat deze codes één op één worden overgenomen!

Foutcode Beschrijving
invalid_api_key De opgegeven API-sleutel is ongeldig.
invalid_credentials De gebruikersnaam of het wachtwoord is onjuist.
unknown_error Er is een onbekende fout opgetreden.

#Overige

Zodra Abeta de one_time_url ontvangt zal de gebruiker daar direct naartoe worden doorgestuurd. Wij raden aan om deze gebruiker direct als een abeta_punchout_user te identificeren, voor de volgende stap in het proces.

#Winkelwagen retourneren

Om de winkelwagen en de gebruiker succesvol te retourneren naar het inkooppakket zijn er twee stappen nodig.

#POST winkelwagen

De URL die gebruikt mag worden voor de post is de return_url die is meegegeven tijdens de Login Request. Deze URL is per sessie uniek, en mag dus niet hardcoded worden opgeslagen.

Headers

  • Content-Type: application/json

Body (JSON)

 1{
 2    "general": {
 3        "cart_id": "12345", //id van de cart in de winkel
 4        "total": 150, //totaal bedrag van de order
 5        "currency": "EUR", 
 6        "delivery_datetime": "2024-11-10 20:29" //verwachte leverdatum
 7    },
 8    "products": [
 9        {
10            "id": 1, //id van het product
11            "sku": "PROD-001", //productnummer
12            "name": "Product Name",
13            "description": "Product description here",
14            "price_ex_vat": 50,
15            "price_inc_vat": 60,
16            "vat_percentage": 20,
17            "quantity": 2,
18            "price_unit": 30,
19            "unit": "pcs",
20            "brand": "Brand Name",
21            "weight": 1.5,
22            "image_url": "http://example.com/image.jpg",
23            "manufacturer_number": "MANUF-001",
24            "category_codes": [
25                "47101501",
26                "47101502",
27            ],
28            "categories": [
29                "Category 1",
30                "Category 2"
31            ]
32        }
33    ]
34}

General

Veld Type Verplicht Beschrijving Voorbeeldwaarde
cart_id string ID van de winkelwagen "12345"
total number Totaalbedrag van de bestelling 150
currency string Valuta van de bestelling "EUR"
delivery_datetime string Verwachte leverdatum en -tijd "2024-11-10 20:29"

Products

Veld Type Verplicht Beschrijving Voorbeeldwaarde
id number ID van het product 1
sku string Productnummer "PROD-001"
name string Naam van het product "Product Name"
description string Beschrijving van het product "Product description here"
price_ex_vat number Prijs exclusief btw 50
price_inc_vat number Prijs inclusief btw 60
vat_percentage number BTW-percentage 20
quantity number Aantal producten 2
price_unit number Eenheidsprijs 30
unit string Eenheidstype "pcs"
brand string Merknaam "Brand Name"
weight number Gewicht van het product 1.5
image_url string URL naar de productafbeelding "http://example.com/image.jpg"
manufacturer_number string Fabrikantnummer "MANUF-001"
category_codes array Productcategoriecodes ["47101501", "47101502"]
categories array Lijst met productcategorieën ["Category 1", "Category 2"]

#Succes Response

Zodra er een success response is ontvangen mag de klant teruggestuurd worden naar de return_url via de GET methode. M.a.w. de browser mag de gebruiker doorsturen naar return_url.

 1{
 2  "success": true
 3}

#Error Response

 1{
 2  "success": false,
 3  "message": "... foutmelding ..."
 4}

#Purchase Order

De resulterende orderbevestiging kan door Abeta standaard in JSON formaat worden aangeleverd. (Er kunnen eventueel uitzonderingen gemaakt worden op de standaard implementatie die hieronder uitgelegd wordt.)

#Request

Method / URL

POST /abeta/order-confirmation

Headers

  • Content-Type: application/json

Body (JSON)

 1{
 2    "api_key": "123321123",
 3    "cart_id": "12345",
 4    "total": 250.50,
 5    "currency": "EUR",
 6    "delivery_datetime": "2024-12-24 10:00:00",
 7    "order_reference": "ORD-001",
 8    "customer_reference": "CUST-REF-001",
 9    "billing": {
10        "first_name": "John",
11        "last_name": "Doe",
12        "company": "Tech Corp",
13        "address_1": "123 Main Street",
14        "address_2": "Suite 200",
15        "city": "San Francisco",
16        "state": "CA",
17        "postcode": "94105",
18        "country": "USA",
19        "email": "john.doe@example.com",
20        "phone": "+123456789"
21    },
22    "shipping": {
23        "first_name": "Jane",
24        "last_name": "Smith",
25        "company": "Global Tech",
26        "address_1": "456 Market Street",
27        "address_2": "Floor 10",
28        "city": "Los Angeles",
29        "state": "CA",
30        "postcode": "90001",
31        "country": "USA",
32        "email": "jane.smith@example.com",
33        "phone": "+987654321"
34    },
35    "products": [
36        {
37            "id": 1,
38            "sku": "PROD-001",
39            "name": "Product A",
40            "price_ex_vat": 50.00,
41            "price_inc_vat": 55.00,
42            "vat_percentage": 10.00,
43            "quantity": 2,
44            "price_unit": null,
45            "unit": "pcs",
46            "weight": 1.00,
47        },
48        {
49            "id": 2,
50            "sku": "PROD-002",
51            "name": "Product B",
52            "price_ex_vat": 75.00,
53            "price_inc_vat": 82.50,
54            "vat_percentage": 10.00,
55            "quantity": 1,
56            "price_unit": null,
57            "unit": null,
58            "weight": 2.0,
59        }
60    ]
61}

#Succes response

Als de order in goede orde ontvangen is ontvang je de volgende response:

 1{
 2    "status": "success",
 3    "message": "Order confirmed successfully."
 4}

#Error reponse

Als de order niet goed ontvangen is ontvangt je de volgende response:

 1{
 2    "status": "error",
 3    "message": "Api key is invalid" //Of een andere foutmelding
 4}

Er zijn binnen Abeta zelf verschillende mogelijkheden om met de error om te gaan. Zie hiervoor de documentatie over de orderbevestiging.