• Hei!

    Vi bruker Vipps hurtigkasse sammen med en fraktplugin for Logistra Cargonizer. Fraktpluginen bruker denne koden for å lagre valgt fraktmetode etter at Vipps-callbacket har kommet tilbake:

    add_action('woo_vipps_set_order_shipping_details', function($order, $shipping, $user) {
        $method = explode(';', $shipping['shippingMethodId']);
        $method = explode(':', $method[0]);
        writetolog("Info | Order Id" . $order->get_id() . " Shipping method has been saved: woo_vipps_set_order_shipping_details: " . $method[0]);
    
        update_post_meta($order->get_id(), 'sub_shipping_method', $method[0]);
    }, 10, 3);

    Før vi oppdaterte Vipps-pluginen fra 1.3.4 til 1.4.2 fungerte dette fint, og feltet ‘sub_shipping_method’ ble satt til f. eks “BringServicepakke”. Etter oppdateringen dukker det opp tilfeldige tegn i det samme feltet, og en bestilling ser f. eks slik ut: “$BringServicepakke$2c0e861fef146fb6aedf5b2b3fe397b3f91b1352”.

    Er det noen bedre, mer robust måte å hente ut den valgte fraktmetoden på i denne WP-actionen, som ikke inneholder den hashede verdien?

Viewing 2 replies - 1 through 2 (of 2 total)
  • Plugin Author Iver Odin Kvello

    (@iverok)

    Hei,

    Beklager at endringen av frakt skaper problemer for dere. Det finnes to løsninger:

    1. Raskest er å gå tilbake til den gamle fraktmetoden. Dette vil være mulig om dere lager et filter på ‘woo_vipps_shipping_methods‘. Det kan være tomt, som dette:

    add_filter('woo_vipps_shipping_methods', function ($return, $order, $acart) {
     return $return;
    }, 10, 3);

    Dette vil skru på gammel frakthåndtering (med mulighet for å skru dette av og på i settings)

    Alt skal da virke som før, men dere får da ikke med metadata i fraktmetodene og så videre.

    2. I action’en som du nevner, så har fraktmetoden blitt lagt til ordren allerede. Dere kan derfor hente ut shipping-linje objektet fra ordren og bruke dette objektets metoder.

    For å hente ut objektet, kan du gjøre

    $order->get_items( ‘shipping’ );

    Dette vil hente ut en liste av fraktmetoder med kun 1 element. Metodene er da beskrevet her:

    https://docs.woocommerce.com/wc-apidocs/class-WC_Order_Item_Shipping.html

    3. Hvis du bare er ute etter selve metodenavnet, så ligger dette fortsatt i shippingID, men som du ser så er denne nå bare en vilkårlig nøkkel inn i en tabell. Navnet er likevel beholdt, så du kan bruke preg_match med (uprøvet kode:)

    preg_match("!\$(.+)\$.*!", $method, $matches);

    Det raskeste vil være å bruke løsning 1, det riktigste vil være løsning 2; 3 er et kompromiss de to i mellom.

    Thread Starter stianmartinsen

    (@stianmartinsen)

    Tusen takk for raskt og grundig svar! 🙌

Viewing 2 replies - 1 through 2 (of 2 total)

The topic ‘Vipps + Logistra Cargonizer plugin’ is closed to new replies.