Skip to Content
GuiderWooCommerce

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.

wp-config.php
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.

functions.php
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-Key er laget av WooCommerce-nummeret, så samme ordre sendt to ganger gir samme svar. Se Regler.
  • Du finner den igjen. externalRef er woo-<nummer>. Kommer samme externalRef igjen med en annen Idempotency-Key, svarer API-et 409 duplicate_external_ref med ordrenummeret i existingNumber.
  • Kunden. Navn, e-post og mobil fra fakturaadressen blir kontakten på forespørselen.