davko  
                
                  
                    22. Januar 2024 um 14:55
                   
                  1 
               
             
            
              kurz und knapp wie nutze ich die API um Produkte hinzuzufügen oder preise bzw Lagerbestand zu aktualisieren?
Welche Sprache am besten fürs Skript? JS oder Shell oder vielleicht sogar eine einfache .bat?
bitte kein developer docs  link habe da jetzt 2 tage rumprobiert und es wird trotzdem nichts
             
            
              
            
           
          
            
              
                gaxweb  
              
                  
                    22. Januar 2024 um 15:15
                   
                  2 
               
             
            
              Also wenn dir die Doku so gar  nichts sagt, dann solltest du vielleicht jemanden damit beauftragen.
Du authentifizierst dich und schickst dann HTTP Anfragen an bestimmte URLs mit gewissem Inhalt im Body. Wie so ziemlich jede andere Web-API auch.
Für PHP gibt’s ein SDK: GitHub - vienthuong/shopware-php-sdk: A PHP SDK for Shopware 6 Admin API 
             
            
              1 „Gefällt mir“ 
            
            
           
          
            
              
                davko  
              
                  
                    22. Januar 2024 um 15:23
                   
                  3 
               
             
            
              Ich habe schon das ein oder andere Script geschrieben und auch alles beachtet aber dann kommt zb sowas
Fehler beim Hinzufügen des Produkts: {db_XXXXXXX.product, CONSTRAINT fk.product.tax_id FOREIGN KEY (tax_id) REFERENCES tax (id) ON DELETE RESTRICT ON UPDATE CASCADE)‘
 
             
            
              
            
           
          
            
              
                gaxweb  
              
                  
                    22. Januar 2024 um 15:26
                   
                  4 
               
             
            
              Das bedeutet, dass die Anfrage an die DB eine Fremdschlüssel-Bedingung verletzen würde und daher abgelehnt wurde.
Die HTTP-Anfrage war also prinzipiell korrekt, aber die Daten, die enthalten waren, können so nicht verarbeitet werden.
Jetzt gilt es herauszufinden was SW da nicht gefällt. Ist immer ein Gefummel, wenn das passiert. In dem Fall hat’s wohl irgendwas mit der ID der Steuer zu tun.
             
            
              
            
           
          
            
              
                davko  
              
                  
                    22. Januar 2024 um 15:47
                   
                  5 
               
             
            
              das produkt was er einfügen soll ist ein beispiel aus dem admin api doc
const axios = require('axios');
const apiUrl = 'https://BEISPIEL.de';
const clientId = 'administration';
const clientSecret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const username = 'XXXXXXXXXXXXX';
const password = 'XXXXXXXXXXXXX';
// Funktion, um Access Token zu erhalten
async function getAccessToken() {
  try {
    const response = await axios.post(`${apiUrl}/api/oauth/token`, {
      grant_type: 'password',
      client_id: clientId,
      client_secret: clientSecret,
      username: username,
      password: password,
    });
    return response.data.access_token;
  } catch (error) {
    console.error('Fehler beim Erhalten des Access Tokens:', error.response ? error.response.data : error.message);
    throw error;
  }
}
async function addProduct(accessToken) {
  const productData = {
    name: 'Testprodukt',
    productNumber: 'random',
    stock: 10,
    taxId: 'a5da76b447db4d0aba62e6512dadf45b',
    price: [
      {
        currencyId: 'b7d2554b0ce847cd82f3ac9bd1c0dfca',
        gross: 15,
        net: 10,
        linked: false,
      },
    ],
  };
  try {
    const response = await axios.post(`${apiUrl}/api/product`, productData, {
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${accessToken}`,
      },
    });
    console.log('Produkt erfolgreich hinzugefügt:', response.data.data);
  } catch (error) {
    console.error('Fehler beim Hinzufügen des Produkts:', error.response ? error.response.data : error.message);
  }
}
async function main() {
  try {
    const accessToken = await getAccessToken();
    await addProduct(accessToken);
  } catch (error) {
    console.error('Allgemeiner Fehler:', error);
  }
}
main();
 
            
              
            
           
          
            
              
                gaxweb  
              
                  
                    23. Januar 2024 um 08:18
                   
                  6 
               
             
            
              
Gibt’s denn einen Steuersatz mit der ID?
             
            
              
            
           
          
            
              
                davko  
              
                  
                    23. Januar 2024 um 12:52
                   
                  7 
               
             
            
              hallo ja die gibt es habe auch produkt export gemacht und andere ausprobiert trotzdem keine chance, hast du vielleicht einen code snippet egal in welcher sprache wo man drauf aufbauen könnte?