Knowledgebase

Documentație conector eCommerce - trimiterea comenzilor în BOCP CloudSales ERP

Transmiterea comenzilor în BOCP prin API-ul REST

În acest articol prezentăm informațiile necesare pentru implementarea transmiterii comenzilor în BOCP prin API-ul REST.


Concept

  1. În ERP se creează un conector nou pentru fiecare sursă în parte.

  2. Acest conector primește o cheie de acces pentru a putea transmite comenzile în BOCP.

  3. Comenzile vor fi afișate în modulul Comenzi eCommerce, iar sursa va fi denumirea conectorului.

  4. Se configurează un URL pentru notificări de comandă. Pe acest URL se vor trimite actualizări legate de comanda respectivă (emitere AWB și factură).

Sincornizarea stocurilor și prețurilor cu acest conector:

în lucru: la cerere vom expune aici o rută API pentru a trimite la BOCP produsele de pe site, această metodă va înregistra o referință și programa o notificare de stoc și preț pe un URL extern. În caz de nevoie vă rugăm să ne contactați.


Configurare

Se accesează modulul Integrări → Conectori eCommerce.

Se creează un conector nou de tip BOCP REST API Connector.
Atenție: numărul conectorilor disponibili poate varia în funcție de pachet.

Se introduce un nume pentru site, pentru a identifica sursa comenzilor.

După crearea conectorului, se generează automat un user și o parolă pentru API-ul REST și se afișează endpoint-ul API generat pentru acel conector.

Opțional, se poate configura un URL care va primi actualizările legate de comenzile primite.


Acces la serviciul API

Accesul la REST API se face cu autentificare HTTP BASIC, printr-un canal criptat SSL.

Pentru fiecare conector se utilizează un set de credențiale format din username și parolă.

Credențialele permit citirea și scrierea comenzilor.

Pentru termeni, condiții și alte informații generale, consultați articolul de mai jos, care detaliază informațiile necesare:
https://kb.bocp.eu/view/0/684-documentatie-bocp-rest-api-v1-beta.html

 

Endpoint-uri pentru transmiterea comenzilor

 

/connector/$connectorid/order/$orderid/ 

$connectorid -  se va pune id-ul conectorului (linkul comuninicat către partener va conține acest id deja)

$orderid - id-ul comenzii din sistemul partenerului

Exemplu utilizare:

pentru a trimite comanda din sistemul extern, avand nr 122312 se trimite un POST catre:

https://secure.bocp.eu/app/rest/v1/$account/connector/$connectorid/order/122312/

pentru a actualiza comanda se trimite un PUT catre:

https://secure.bocp.eu/app/rest/v1/$account/connector/$connectorid/order/122312/

Actualizare comanda:

se permite trimiterea unui pachet partial la apelul PUT care sa contina:

obligatoriu:

optional una sau mai multe dintre următoarele câmpuri:

 

la trimiterea produselor este important ca la cod produs sa se trimită codurile de la existente, în caz contrar se va returna eroare

pachetul de date cu comanda trebuie sa arate asa:

Sample order do send via post

Steps:

  1. Copy the sample order below
  2. Change the values to match your order
  3. Send the order via POST method using json_encode() to this endpoint
  4. set Content-Type: application/json
[
  'order_unique_id'=> 'ABC123456', //required
  'order_reference'=> 'ABC123456', //may be blank
  'order_date'=> '2024-01-01', //
  'order_status'=> 'new', //required
  'order_mentions'=> 'Please deliver in the morning',
  'shipping_method'=> 'courier', //required: courier, post, personal_pickup, other
  'client'=> [
    'name'=> 'John Doe',//company_name if company
    'representative'=> 'John Doe',//contact person name if name is company, may be blank
    'email'=> '',
    'phone'=> '0722222222',
    'vat_id'=> '',
    'registration_number'=> '',
    'client_unique_id'=> '123456', //recommended if available to identify same client again, will update client details!
    'invoice_address'=> [
      'city'=> 'Bucharest',
      'county'=> 'Bucharest',
      'country'=> 'Romania',
      'zip'=> '123456', //leave blank and we will guess it!
      'street'=> 'Street Name', //put all address details in this field if cannot separate it
      'number'=> '1',
      'building'=> '',
      'stair'=> '',
      'floor'=> '',
      'apartment'=> '',
      'GLN'=> ''
    ],
    'delivery_address'=> [
      'city'=> 'Bucharest',//sector if county is Bucharest
      'county'=> 'Bucharest',
      'country'=> 'Romania',
      'zip'=> '123456',
      'street'=> 'Street Name',
      'number'=> '1',
      'building'=> '',
      'stair'=> '',
      'floor'=> '',
      'apartment'=> '',
      'shipping_contact_name'=> 'John Doe',
      'shipping_contact_phone'=> '0722222222',
      'GLN'=> ''
    ]
  ],
  'items'=> [
    [
      'type'=> 'product', //required
      'code'=> 'ABC123456', //required
      'ean'=> '0789876543210', //may be blank
      'item_name'=> 'Product Name', //required
      'item_quantity'=> 2.00, //required
      'item_price'=> 100.00, //required
      'item_vat_percent'=> 19, //required
      'item_price_with_vat'=> 119, //required
      'line_value_with_vat'=> 238, //required
      'discounted_price_with_vat'=> 98, //optional
      'line_discount_value_with_vat'=> 4, //optional
    ],
    [
      'type'=> 'discount', //required
      'code'=> 'DISCOUNT', //required
      'ean'=> '', //may be blank
      'item_name'=> 'Promo Code: BONUS10', //required
      'item_quantity'=> 1.00, //required
      'item_price'=> -10.00, //required
      'item_vat_percent'=> 19, //required
      'item_price_with_vat'=> -11.9, //required
      'line_value_with_vat'=> -11.9, //required
    ],
    [
      'type'=> 'service', //required
      'code'=> 'SHIPPING', //required
      'ean'=> '', //may be blank
      'item_name'=> 'Shipping via courier', //required
      'item_quantity'=> 1.00, //required
      'item_price'=> 24.00, //required
      'item_vat_percent'=> 19, //required
      'item_price_with_vat'=> 28.56, //required
      'line_value_with_vat'=> 28.56, //required

    ],
    [
      'type'=> 'service', //required
      'code'=> 'SERVICE', //required
      'ean'=> '', //may be blank
      'item_name'=> 'Special gift wrap', //required
      'item_quantity'=> 1.00, //required
      'item_price'=> 50.00, //required
      'item_vat_percent'=> 19, //required
      'item_price_with_vat'=> 59.5, //required
      'line_value_with_vat'=> 59.5, //required

    ]
  ]

]

 

Sample json data:

{
    "order_unique_id": "ABC123456",
    "order_reference": "ABC123456",
    "order_date": "2024-01-01",
    "order_status": "new",
    "order_mentions": "Please deliver in the morning",
    "shipping_method": "courier",
    "client": {
        "name": "John Doe",
        "representative": "John Doe",
        "email": "",
        "phone": "0722222222",
        "vat_id": "",
        "registration_number": "",
        "client_unique_id": "123456",
        "invoice_address": {
            "city": "Bucharest",
            "county": "Bucharest",
            "country": "Romania",
            "zip": "123456",
            "street": "Street Name",
            "number": "1",
            "building": "",
            "stair": "",
            "floor": "",
            "apartment": "",
            "GLN": ""
        },
        "delivery_address": {
            "city": "Bucharest",
            "county": "Bucharest",
            "country": "Romania",
            "zip": "123456",
            "street": "Street Name",
            "number": "1",
            "building": "",
            "stair": "",
            "floor": "",
            "apartment": "",
            "shipping_contact_name": "John Doe",
            "shipping_contact_phone": "0722222222",
            "GLN": ""
        }
    },
    "items": [
        {
            "type": "product",
            "code": "ABC123456",
            "ean": "0789876543210",
            "item_name": "Product Name",
            "item_quantity": 2,
            "item_price": 100,
            "item_vat_percent": 19,
            "item_price_with_vat": 119,
            "line_value_with_vat": 238,
            "discounted_price_with_vat": 98,
            "line_discount_value_with_vat": 4
        },
        {
            "type": "discount",
            "code": "DISCOUNT",
            "ean": "",
            "item_name": "Promo Code: BONUS10",
            "item_quantity": 1,
            "item_price": -10,
            "item_vat_percent": 19,
            "item_price_with_vat": -11.9,
            "line_value_with_vat": -11.9
        },
        {
            "type": "service",
            "code": "SHIPPING",
            "ean": "",
            "item_name": "Shipping via courier",
            "item_quantity": 1,
            "item_price": 24,
            "item_vat_percent": 19,
            "item_price_with_vat": 28.56,
            "line_value_with_vat": 28.56
        },
        {
            "type": "service",
            "code": "SERVICE",
            "ean": "",
            "item_name": "Special gift wrap",
            "item_quantity": 1,
            "item_price": 50,
            "item_vat_percent": 19,
            "item_price_with_vat": 59.5,
            "line_value_with_vat": 59.5
        }
    ]
}

Notificari transmise legate de o comanda inregistrata

La configurare se introduce un URL care va primi o notificare la diferite evenimente.

URL-ul de notificare va fi anuntat prin metoda POST cu un pachet de date in format JSON.

Notificarile primite se pot citi in php prin exemplul:

$json = json_decode(file_get_contents('php://input'));

BOCP așteaptă un răspuns intepretând codul HTTP returnat, în felul urmator:

 

Urmatoarele tipuri de notificari vor fi transmise, ce se pot trata folosind campul notification_type:

Modificare status

exemplu pachet trimis, in format JSON:

stdClass Object
(
    [order_unique_id] => 923
    [notification_type] => status
    [status_text] => Livrată
)

 

Emitere Factura Fiscala

exemplu pachet trimis, in format JSON:

stdClass Object
(
    [order_unique_id] => 923
    [notification_type] => invoice
    [invoice_number] => 5243
    [invoice_date] => 2024-09-12
    [invoice_series] => SLON
    [invoice_total] => 252.00
    [invoice_currency] => RON
    [invoice_total_RON] => 252.00
    [invoice_url_html] => https://secure.bocp.eu/factura-html-linkwillbehere/
    [invoice_url_pdf] => https://secure.bocp.eu/factura-pdf-linkwillbehere/
)

 

Emitere AWB

exemplu pachet trimis, in format JSON:

stdClass Object
(
    [order_unique_id] => 923
    [notification_type] => awb
    [awb_number] => 1ONBLN291059727
    [awb_packet_count] => 1
    [weight] => 
    [awb_service_type] => Standard
    [shipping_payer] => expeditor
    [cash_on_delivery] => 0.00
    [cash_on_delivery_currency] => RON
    [delivery_country] => Romania
    [delivery_country_code] => RO
    [declared_value] => 252.00
    [awb_type] => sameday
    [awb_subtype] => 
    [awb_url_pdf] => https://secure.bocp.eu/awb-pdf-linkwillbehere/
)