• Resolved veigrillen

    (@veigrillen)


    Hei.
    Når kundene logger inn med vipps kommer det automatisk på 47 foran telefonnummeret.
    Andre systemer jeg bruker, slik som fraktguiden fra bring klarer ikke å skille ut disse 2 tallene.

    Hvordan kan jeg konfiguere systemet til å fjerne disse?

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

    (@iverok)

    Ja, det er en litt kinkig sak siden telefonnr også kan starte med “47” uten at det er land-prefiks. Det er et filter du kan bruke til å “normalisere” dette, det vil da påvirke billing_phone (bare) så hvis du bruker noe annet enn WooCommerce så vil du måtte gjøre noe tilsvarende der.

    Det vil da si å legge til dette i en plugin eller et childtheme:

    add_filter('login_with_vipps_woo_phone_number', function ($phoneno, $customer, $userinfo) {
     if (!preg_match("!^47!", $phoneno)) return $phoneno;
     if (strlen($phoneno) < 10) return $phoneno;
     return substr($phoneno,0,2);
    }, 10, 3);

    Det fjerner da “47” fra telefonnr som kommer fra Vipps hvis det har vanlig lengde og starter med “47”.

    Det er litt uklart for meg om dette hører med til en standard-implementasjon eller ikke, så foreløpig er dette nok best å legge til i en plugin.

    Thread Starter veigrillen

    (@veigrillen)

    hmm, okai 🙂
    Tusen hjertelig takk for svar.

    Jeg skal se om jeg klarer å finne ut av å lage en plugin 🙂

    Plugin Author Iver Odin Kvello

    (@iverok)

    Bare lag en vanlig tekstfil i wp-content/plugins, kall den noe ala

    fjern-47-fra-vippsnr.php

    og legg til innholdet

    <?php
    /**
     * Plugin Name: Fjern 47 fra Vipps-telefonnr
     * Description: fjern land-prefikset '47' fra telefonnr som kommer fra vipps
     * Version: 1.0
     */
    
    if ( ! defined( 'ABSPATH' ) ) {
            exit;
    }
    
    add_filter('login_with_vipps_woo_phone_number', function ($phoneno, $customer, $userinfo) {
     if (!preg_match("!^47!", $phoneno)) return $phoneno;
     if (strlen($phoneno) < 10) return $phoneno;
     error_log("Removing phoneno");
     return substr($phoneno,0,2);
    }, 10, 3);

    Logg inn som admin, velg plugins/innstikk, finn pluginen din og “aktiver”.

    Thread Starter veigrillen

    (@veigrillen)

    Way! Fikk til å lage denne fila, men den gir meg kun 47 som telefonnummer nå.
    Men pluginen ligger ligger tilgjengelig å kunne aktiveres 😀

    Plugin Author Iver Odin Kvello

    (@iverok)

    DOH ja det skal være substr($phoneno,2) og ikke 2, 0. Beklager!

    Korrekt skal altså være

    <?php
    /**
     * Plugin Name: Fjern 47 fra Vipps-telefonnr
     * Description: fjern land-prefikset '47' fra telefonnr som kommer fra vipps
     * Version: 1.0
     */
    
    if ( ! defined( 'ABSPATH' ) ) {
            exit;
    }
    
    add_filter('login_with_vipps_woo_phone_number', function ($phoneno, $customer, $userinfo) {
     if (!preg_match("!^47!", $phoneno)) return $phoneno;
     if (strlen($phoneno) < 10) return $phoneno;
     error_log("Removing phoneno");
     return substr($phoneno,2);
    }, 10, 3);
    Thread Starter veigrillen

    (@veigrillen)

    Fungerte perfekt!! 😊

    Tusen takk for hjelpen!

    Hi @iverok

    I also got the same issue here now, that 47 is added in front om the users phone number in the Billing Phone number.

    When using VIPPS Express Checkout this doesn’t happen, which is good!

    Why can’t you just change the behavior to be equal with “VIPPS Express Checkout” to strip out the country code?

    If country code shall have an real meaning in the Billing Phonenumber, we are missing the +sign infront of the country code 🙂

    Perhaps you should add an option in the VIPPS control panel to allow the customer to register the country code or not?

    I guess you will see the value “+47” from VIPPS, so it should be fearly easy to strip it out even though we have phone numbers starting with 47?

    This would be nice instead of having to maintain another plugin 🙂

    Cheers
    Horgster

    Plugin Author Iver Odin Kvello

    (@iverok)

    The value from Vipps passed in the Login API does not in fact contain “+47”, just “47”. The phone number is passed exactly as received, there is no indication that it contains a country code.

    For Express Checkout, the phone number received is without the country prefix, but as mentioned, Login and ECommerce are different APIs and they provide their data differently (currently – Vipps are planning to rectify this going forward).

    It is possible to add the code in the example plugin above as an optional phone canonicalization procedure, but as noted above I’m a bit loath to add this to the core since it uses just heuristics to edit the incoming phone numbers.

Viewing 8 replies - 1 through 8 (of 8 total)
  • The topic ‘Telefonnummer’ is closed to new replies.