Eksempel: WooCommerce
En betalt ordre i WooCommerce blir en forespørsel i vbeslag. Hver vare blir en linje i ord, externalRef er woo-<nummer>, og samme ordre to ganger blir aldri to.
Vil verkstedet bare vise sin egen vbeslag-butikk på WordPress-siden, trengs ingen kode. Se Nettbutikken på nettsiden.
Få en nøkkel fra verkstedet
Verkstedet lager en nøkkel under Innstillinger › Koblinger (API) med formålet «Nettsiden min sender inn ordre». Start med en testnøkkel (vb_test_). Se Nøkler og tilgang.
Legg nøkkelen i wp-config.php
Nøkkelen står i wp-config.php, aldri i en temafil.
define('VBESLAG_API_KEY', 'vb_test_…');Lim inn koden
Koden går i temaets functions.php eller i en egen liten utvidelse. Den kjører når en ordre i WooCommerce er betalt og får statusen processing.
add_action('woocommerce_order_status_processing', function ($order_id) {
$o = wc_get_order($order_id);
$lines = [];
foreach ($o->get_items() as $item) {
$lines[] = ['kind' => 'text', 'description' => $item->get_name(), 'quantity' => (int) $item->get_quantity(), 'unit' => 'stk'];
}
wp_remote_post('https://vbeslag.com/api/v1/orders', [
'headers' => [
'Authorization' => 'Bearer ' . VBESLAG_API_KEY, // i wp-config.php, aldri i en temafil
'Content-Type' => 'application/json',
'Idempotency-Key' => sha1('woo-' . $order_id),
],
'body' => wp_json_encode([
'intent' => 'request',
'contact' => ['name' => $o->get_formatted_billing_full_name(), 'email' => $o->get_billing_email(), 'mobile' => $o->get_billing_phone()],
'note' => $o->get_customer_note() ?: 'Fra nettbutikken',
'lines' => $lines,
'externalRef' => 'woo-' . $order_id,
]),
'timeout' => 15,
]);
});Prøv med en testordre
Lag en ordre i WooCommerce og sett den til processing. Med en testnøkkel får forespørselen et testnummer (T-…) og vises ikke i verkstedets lister. Når alt virker, bytter verkstedet til en ekte nøkkel.
Slik virker koden
- En linje per vare. Hver vare blir en linje med
kind: "text": varens navn i ord og antallet. Linjen har ingen pris ennå (priceStatus: "pending"). - Aldri to ordre.
Idempotency-Keyer laget av WooCommerce-nummeret, så samme ordre sendt to ganger gir samme svar. Se Regler. - Du finner den igjen.
externalReferwoo-<nummer>. Kommer sammeexternalRefigjen med en annenIdempotency-Key, svarer API-et 409duplicate_external_refmed ordrenummeret iexistingNumber. - Kunden. Navn, e-post og mobil fra fakturaadressen blir kontakten på forespørselen.