Verträge über SOAP importieren spinnt - CustomerGet und HostingSubscriptionAdd

  • Ich bin gerade dabei ein Script zu erstellen was Produkte für die Kunden anlegt bzw. deren zuweist. Für dieses Vorhaben gibt es ja die SOAP Schnittstelle und „HostingSubscriptionAdd“. Die setzt allerdings die „customerid“ voraus, die ich ja durch „CustomerGet“ herausbekommen kann. Allerdings bekomme ich es nicht hin (egal was ich da irgendwie versuche) die „customerid“ herauszubekommen. Habt ihr eine Idee was in dem Script falsch ist? Der gibt einfach immer ein Nullwert aus und so lässt sich das Produkt nicht zuweisen .. :(


  • Laut Handbuch gibt CustomerGet ein Array zurück. Also sollte die Zeile in etwa so lauten:

    PHP
    $customer_id = $response->customers[0]->id


    Bekomm dann immer folgendes: PHP Fatal error: Cannot use object of type stdClass as array in /root/testo.php on line 53
    Info: testo.php ist das o.g. Script und Zeile 53 "

    PHP
    $customer_id = $response->customers[0]->id

    " ;)


    einfach ein "var_dump($response);" einstreuen und schauen, was wirklich ausgegeben wird.


    Ich bekomme tatsächlich eine Ausgabe, sogar die id wird angezeigt:
    object(stdClass)#2 (1) {
    ['customers']=>
    object(stdClass)#3 (1) {
    ['CustomerDetails']=>
    object(stdClass)#4 (7) {
    ['id']=>
    string(12) "cAsaMQdGmVAy"
    ['cid']=>
    int(10001)
    ['owner_c']=>
    string(12) "cL4D3Vylwc2X"
    ['admin_c']=>
    string(12) "cL4D3Vylwc2X"
    ['billing_c']=>
    string(12) "cL4D3Vylwc2X"
    ['locked']=>
    int(0)
    ['subscription']=>
    string(9) "web12323"
    }
    }
    }

  • Bekomm dann immer folgendes: PHP Fatal error: Cannot use object of type stdClass as array in /root/testo.php on line 53


    [...]


    Code
    object(stdClass)#2 (1) {
      ['customers'] => object(stdClass)#3 (1) {
        ['CustomerDetails'] => object(stdClass)#4 (7) {
                ['id'] => string(12) "cAsaMQdGmVAy"
    [...]


    Das "Problem" ist, dass PHP das Objekt "customers" in diesem Fall nicht als Array, sondern als einfaches Objekt interpretiert. Daher schlägt der Zugriff via "customers[0]" dann fehl.
    Eine mögliche Lösung wäre, einen expliziten Typecast zu machen:

    Code
    $response->customers = array($response->customers);


    Wenn die Suche (via CustomerGet) so ausgeführt wird dass es nur einen Ergebnisdatensatz geben kann, dann kann man theoretisch auch direkt auf das customers-Objekt zugreifen (also ohne "[0]") - finde ich persönlich aber nicht sehr sauber.

  • Na denn...


    $response->customers->CustomerDetails->id


    Damit hat es funktioniert :) Juhu danke



    Das "Problem" ist, dass PHP das Objekt "customers" in diesem Fall nicht als Array, sondern als einfaches Objekt interpretiert. Daher schlägt der Zugriff via "customers[0]" dann fehl.
    Eine mögliche Lösung wäre, einen expliziten Typecast zu machen:

    Code
    $response->customers = array($response->customers);


    Wenn die Suche (via CustomerGet) so ausgeführt wird dass es nur einen Ergebnisdatensatz geben kann, dann kann man theoretisch auch direkt auf das customers-Objekt zugreifen (also ohne "[0]") - finde ich persönlich aber nicht sehr sauber.


    Ahhhh, okay. Ich muss gestehen ich bin in PHP nicht ganz so fit. Vielen lieben Dank, ich teste das mal! =)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!