J'essaie d'automatiser mon traitement des commandes Amazon. Actuellement, j'utilise Amazon Merchant Transport pour obtenir le fichier XML pour une commande, mais finalement, je veux obtenir les fichiers xml avec un service web directement sur mon compte central du vendeur.php amazon xml traitement des commandes
tableau partiel avec des informations d'ordre Amazon -
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
)
)
Je suis en mesure de récupérer mes ordres sous forme de documents XML et peut les analyser avec le code suivant.
$contents = file_get_contents("amzn-order-sample.xml");
$p = xml_parser_create();
xml_parse_into_struct($p, $contents, $vals, $index);
xml_parser_free($p);
Maintenant, je suis en train de retirer les informations relatives à l'ordre - d'abord une information de temps (nom de l'expéditeur, adresse)
alors je veux être en mesure d'obtenir les « articles commandés/quantité » information, qui pourrait être 1-> beaucoup d'articles pour ce client.
Exemple de code que je travaille - pour récupérer la valeur (que je vais mettre dans un autre tableau pour un traitement ultérieur) (assez laid)
$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);
}
}
je vais analyser les 1 nombreux articles par Commandez dans une boucle avec le code ci-dessus, mais il doit y avoir une meilleure façon, plus propre .. - peut-être quelqu'un a des extraits de code qu'ils peuvent offrir.
Merci à l'avance pour toutes les idées ..
un débutant à PHP
Il doit y avoir beaucoup de meilleures façons de faire ce type de code XML et PHP (ce sera traité sur un serveur Linux) - Toutes les suggestions ou autres idées sont les bienvenues
Quelqu'un peut-il emballer son code s'il vous plaît? – quantumSoup
Formatage fixe. –
Tellement de code, si peu formaté. @newbiephper s'il vous plaît utiliser les options de formatage pour citer ce code afin qu'il soit lisible. Merci @Thomas Owens –