php amazon xml sipariş işleme

0 Cevap php

Ben Amazon sipariş işleme otomatikleştirmek çalışıyorum. Şu anda ben bir sipariş için XML dosyasını almak için Amazon Merchant Transport kullanılarak değilim, ama sonunda, ben doğrudan benim satıcı merkez hesabına bir web hizmeti ile xml dosyaları almak isteyeceksiniz.

Amazon sipariş bilgi ile Kısmi dizi -

Array
(
...
        [37] => Array
        (
            [tag] => NAME
            [type] => complete
            [level] => 6
            [value] => John Smith
        )
...
    [39] => Array
        (
            [tag] => ADDRESSFIELDONE
            [type] => complete
            [level] => 6
            [value] => 100 N MAIN St.
        )
...
    [41] => Array
        (
            [tag] => CITY
            [type] => complete
            [level] => 6
            [value] => PLANO
        )
...
    [43] => Array
        (
            [tag] => STATEORREGION
            [type] => complete
            [level] => 6
            [value] => TX
        )
...
    [45] => Array
        (
            [tag] => POSTALCODE
            [type] => complete
            [level] => 6
            [value] => 75075-1948
        )

)

Ben XML belgeleri olarak benim emir almak mümkün ve aşağıdaki kodla onları ayrıştırmak olabilir.

$contents = file_get_contents("amzn-order-sample.xml");
$p = xml_parser_create();
xml_parse_into_struct($p, $contents, $vals, $index);
xml_parser_free($p);

Şimdi sipariş ile ilgili bilgi çekin çalışıyorum - ilk bir saat bilgisi (nakliyeci isim, adres)

Bu müşteri için> birçok öğe - sonra ben 'sipariş öğeleri / miktar' bilgisi, 1 olabilir elde edebilmek istiyorum.

(Çok çirkin) (Ben daha fazla işlem için başka bir diziye koyacağız) değerini almak için - Ben çalışma var Örnek kod

$arrIt = new RecursiveIteratorIterator(new RecursiveArrayIterator($vals));

// shipper name
 foreach ($arrIt as $sub) {
    $subArray = $arrIt->getSubIterator();
    if ($subArray['tag'] === 'NAME') {
        $outputArray[] = iterator_to_array($subArray);
    echo "Shipper Name\n";
    print_r($outputArray);
    }
}

// shipper phone
 foreach ($arrIt as $sub) {
    $subArray = $arrIt->getSubIterator();
    if ($subArray['tag'] === 'BUYERPHONENUMBER') {
        $outputArray[] = iterator_to_array($subArray);
    echo "Shipper Phone\n";
    print_r($outputArray);
    }
}

// shipper addresslineone
 foreach ($arrIt as $sub) {
    $subArray = $arrIt->getSubIterator();
    if ($subArray['tag'] === 'ADDRESSFIELDONE') {
        $outputArray[] = iterator_to_array($subArray);
    echo "Shipper Address\n";
    print_r($outputArray);
    }
}

// shipper city
 foreach ($arrIt as $sub) {
    $subArray = $arrIt->getSubIterator();
    if ($subArray['tag'] === 'CITY') {
        $outputArray[] = iterator_to_array($subArray);
    echo "Shipper City\n";
    print_r($outputArray);
    }
}

// shipper state
 foreach ($arrIt as $sub) {
    $subArray = $arrIt->getSubIterator();
    if ($subArray['tag'] === 'STATEORREGION') {
        $outputArray[] = iterator_to_array($subArray);
    echo "Shipper State\n";
    print_r($outputArray);
    }
}

// shipper zip
 foreach ($arrIt as $sub) {
    $subArray = $arrIt->getSubIterator();
    if ($subArray['tag'] === 'POSTALCODE') {
        $outputArray[] = iterator_to_array($subArray);
    echo "Shipper Zip\n";
    print_r($outputArray);
    }
}
//  items
 foreach ($arrIt as $sub) {
    $subArray = $arrIt->getSubIterator();
    if ($subArray['tag'] === 'POSTALCODE') {
        $outputArray[] = iterator_to_array($subArray);
    echo "Shipper Zip\n";
    print_r($outputArray);
    }
}

Ben yukarıdaki kod ile bir döngü içinde sipariş başına 1-birçok öğe ayrıştırmak için gidiyordu, ama daha iyi, daha temiz bir yolu olmalı .. - belki birileri sunabilir kod parçacıkları vardır.

Herhangi bir fikir için şimdiden teşekkürler ..

PHP bir Newbie

(Bu bir Linux sunucu üzerinde işlenecektir) XML ve PHP kod bu tür yapmak için çok daha iyi yollar var olmalıdır - herhangi bir öneri ya da diğer fikirler büyük are welcome

0 Cevap