Results 1 to 14 of 14

Thread: Woocommerce koppeling

  1. #1
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509

    Woocommerce koppeling

    Hallo,

    Ik onderzoek een koppeling met WooCommerce ( Wordpress ).

    Het ophalen van bijvoorbeeld producten of orders is geen probleem (GET), maar het veranderen van bijvoorbeeld de prijs van een product wil niet.

    ik heb de volgende code :

    Code:
    ...
    ...   
        RESTRequest1: TRESTRequest;
        RESTResponse1: TRESTResponse;
        RESTClient1: TRESTClient;
        RESTResponseDataSetAdapter1: TRESTResponseDataSetAdapter;
        OAuth1_FitBit: TOAuth1Authenticator;
    ...
    ...
    procedure TForm7.Button1Click(Sender: TObject);
    var s: String;
        vJSONBytes: TBytes;
        vJSONScenario: TJSONValue;
        vJSONArray: TJSONArray;
        vJSONValue: TJSONValue;
        vJSONObject: TJSONObject;
        vJSONPair: TJSONPair;
        vJSONScenarioEntry: TJSONValue;
        vJSONScenarioValue: TJSONString;
    begin
        RESTRequest1.ResetToDefaults;
        RESTClient1.ResetToDefaults;
        RESTResponse1.ResetToDefaults;
        RESTResponseDataSetAdapter1.ResetToDefaults;
        OAuth1_FitBit.ResetToDefaults;
    
        OAuth1_FitBit.ConsumerKey := User_ID;
        OAuth1_FitBit.ConsumerSecret := User_PW;
    
        RESTClient1.BaseURL := 'http://localhost/WPTest';
        RESTClient1.SetHTTPHeader('cache-control', 'no-cache');
    
        RESTRequest1.Resource := '/wp-json/wc/v3/products/13';
    
        RESTRequest1.AddParameter('oauth_consumer_key', User_ID);
        RESTRequest1.AddParameter('oauth_consumer_secret', User_pw);
        RESTRequest1.AddParameter('oauth_signature_method', 'HMAC-SHA1');
        RESTRequest1.AddParameter('oauth_nonce', OAuth1_FitBit.nonce);
        RESTRequest1.AddParameter('oauth_timestamp', OAuth1_FitBit.timeStamp.DeQuotedString);
        RESTRequest1.AddParameter('oauth_version', '1.0');
    
        RESTRequest1.AddParameter('sale_price', '45');
    
        s := OAuth1_FitBit.SigningClass.BuildSignature(RESTRequest1, OAuth1_FitBit);
        RESTRequest1.AddParameter('oauth_signature', s);
    
    //    RESTRequest1.Method := TRESTRequestMethod.rmGET;
        RESTRequest1.Method := TRESTRequestMethod.rmPUT;
    
        RESTRequest1.Execute;
        s := RESTResponse1.JSONText;
        Memo1.Text := s;
    end;
    bij het uitvoeren van de PUT krijg ik de volgende melding:

    Code:
    {
        "code": "woocommerce_rest_cannot_edit",
        "message": "Je hebt geen toestemming om deze gegevensbron te bewerken.",
        "data": {
            "status": 401
        }
    }
    Nu heb ik mezelf suf geGoogled, maar een oplossing heb ik niet gevonden ( genoeg "oplossingen" gezien, maar niet één waar ik wat aan heb ).
    Ik zie ook nergens in Wordpress of Woocommerce hier een instelling voor.

    mijn twee sleutels ( customer en secret ) zijn zeer zeker juist

    Wie kan mij verder helpen hiermee ?


    ( Delphi Rio, FMX, zaterdag een actuele download van WordPress en WooCommerce en lokaal op de pc geïnstalleerd )
    Erik

  2. #2
    Misschien is je sleutel goed, maar heb je geen authorisatie.

  3. #3
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509
    dat zou kunnen, maar ik niet ontdekken waar ik dat dan kan instellen
    in wordpress ben ik de enige gebruiker met de rol van beheerder
    Erik

  4. #4
    Is het niet een probleem bij de headers in de PHP? Sommige servers ondersteunen bepaalde headers niet - heb dit zelf gehad in niet Wordpress omgevingen dat ik bepaalde zaken moest aanpassen. Meestal kan je dat doen in de HTACCESS file:
    Code:
        # BEGIN WordPress
        <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
        RewriteRule ^index\.php$ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]
        </IfModule>
        # END WordPress
    Het kan ook zijn dat je in de Worpress PHP code moet aanpassen, maar ik kan dat zo niet zien - ik weet niet of Woocommerce bv een API Key gebruikt die in de headers gezet wordt, dan kan het zijn dat je de error reporting even aan moet zetten in de index.php
    Code:
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    dan zie je direct of het probleem daarin zit..

    Wat meer info over AUTH op Woocommerce:
    https://github.com/woocommerce/wooco...h-the-REST-API
    Last edited by Reidinga; 24-Aug-20 at 17:28.

  5. #5
    Heb je bij de API key toevallig alleen read aanstaan?

  6. #6
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509
    Luigi: ja, zeker, 3x gecontroleerd
    Reidinga: dit mag niet baten (ook de link helemaal gevolgd, incl de plug-in )
    Erik

  7. #7
    kan je niet proberen om de curl voorbeeld code te runnen om te zien of die werkt? https://woocommerce.github.io/woocom...date-a-product
    Last edited by Miep; 25-Aug-20 at 13:59.

  8. #8
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509
    Miep, wie weet... maar hoe doe ik dat ?
    open ik een windows console ?
    Erik

  9. #9
    curl installeren en daarna inderdaad in een console draaien https://curl.haxx.se/windows/

  10. #10
    PS Is het niet verplicht om de prijs met twee decimalen te sturen?

  11. #11
    Ik gebruik op Windows Telerik Fiddler, kan je heel gemakkelijk mee HTTP requests sturen en bekijken - dus ook wat je huidige webpagina verstuurd via Ajax calls, of je Applicatie naar je API. Daarin zou je al snel kunnen terug vinden of je HTTP request wel goed gaat

  12. #12
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509
    ik ga het allemaal proberen !
    Erik

  13. #13
    Senior Member ErikB's Avatar
    Join Date
    Aug 2010
    Location
    Biddinghuizen
    Posts
    509
    ik heb Postman gebruikt om te testen. als ik daarin een PUT doe, wordt keurig de aanpassing gedaan. Het lijkt me dat de rechten en dergelijke in wordpress, Woocommerce en mysql voldoende zijn en ligt het niet aan die kant, maar aan mijn code / de instellingen die ik doe.
    Ben nog verder aan het zoeken, maar als iemand een idee heeft, hoor ik dat graag
    Erik

  14. #14
    zoals hierboven gemeld: met fiddler of een andere tool (http debugger) kan je zien of wat je denkt dat je code opstuurt ook echt daadwerkelijk is wat er opgestuurd wordt. Zou dat als eerste vaststellen.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •