2017-09-08 42 views
11

Stworzyłem własny rodzaj odmiany, ale cena nie jest aktualizowana po stronie Amazon.Kod XML przesłany do Amazona MWS, ale cena nie została zaktualizowana

Mój kod wydaje się działać dobrze na podstawie odpowiedzi Amazon po jej przesłaniu. Mam nadzieję, że ktoś tutaj wie więcej o tym, dlaczego tak naprawdę nie aktualizuje ceny.

Oto XML składać:

<?xml version="1.0" encoding="utf-8" ?> 
<AmazonEnvelope 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"> 
    <Header> 
     <DocumentVersion>1.01</DocumentVersion> 
     <MerchantIdentifier>MERCHANTID</MerchantIdentifier> 
    </Header> 
    <MessageType>Price</MessageType> 
    <Message> 
     <MessageID>1</MessageID> 
     <Price> 
      <SKU>mysku</SKU> 
      <StandardPrice currency="USD">350.50</StandardPrice> 
     </Price> 
    </Message> 
</AmazonEnvelope> 

Herezje odpowiedź:

GetFeedSubmissionResultResponse{}(ResponseMetadata: <Element_?/ResponseMetadata_0x7fee61f74248>, GetFeedSubmissionResultResult: <Element_?/GetFeedSubmissionResultResult_0x7fee61f74248>, AmazonEnvelope: 
{'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:noNamespaceSchemaLocation': 'amzn-envelope.xsd'}, DocumentVersion: '1.02', MerchantIdentifier: 'M_EXAMPLE_1234', Header: '\n\t', MessageType: 'ProcessingReport', MessageID: '1', DocumentTransactionID: '4200000000', StatusCode: 'Complete', MessagesProcessed: '1', MessagesSuccessful: '1', MessagesWithError: '0', MessagesWithWarning: '0', ProcessingSummary: '\n\t\t\t', ProcessingReport: '\n\t\t', Message: '\n\t') 

ja nie wiem, czy pokazując mój kod pomoże w tym przypadku, ponieważ mam udaną odpowiedź z Amazon. Tu jest niezależnie:

... 

# Provide credentials. 
conn = MWSConnection(
    aws_access_key_id=AWS_ACCESS_KEY_ID, 
    aws_secret_access_key=AWS_SECRET_ACCESS_KEY, 
    Merchant=AMZ_SELLER_ID 
) 

# Get the service resource 
sqs = boto3.resource('sqs') 

# Get the queue 
queue = sqs.get_queue_by_name(QueueName=SQS_QUEUE_NAME) 

for index, message in enumerate(queue.receive_messages(MaxNumberOfMessages=10)): 

    ... 

    import time 
    from jinja2 import Environment, PackageLoader 

    env = Environment(loader=PackageLoader('repricer', 'xml_templates'), trim_blocks=True, lstrip_blocks=True) 
    template = env.get_template('_POST_PRODUCT_PRICING_DATA_.xml') 

    class Message(object): 
     def __init__(self, s, price): 
      self.SKU = s 
      self.PRICE = round(price, 2) 
      self.CURRENCY = USD_CURRENCY 

    feed_messages = [ 
     Message(sku.sku, new_price), 
    ] 

    namespace = dict(MerchantId=AMZ_SELLER_ID, FeedMessages=feed_messages) 
    feed_content = template.render(namespace).encode('utf-8') 

    print(feed_content) 

    feed = conn.submit_feed(
     FeedType='_POST_PRODUCT_PRICING_DATA_', 
     PurgeAndReplace=False, 
     MarketplaceIdList=[MARKETPLACE_ID], 
     content_type='text/xml', 
     FeedContent=feed_content 
    ) 

    feed_info = feed.SubmitFeedResult.FeedSubmissionInfo 
    print('Submitted product feed: ' + str(feed_info)) 

    while True: 
     submission_list = conn.get_feed_submission_list(
      FeedSubmissionIdList=[feed_info.FeedSubmissionId] 
     ) 
     info = submission_list.GetFeedSubmissionListResult.FeedSubmissionInfo[0] 
     submission_id = info.FeedSubmissionId 
     status = info.FeedProcessingStatus 
     print('Submission Id: {}. Current status: {}'.format(submission_id, status)) 

     if status in ('_SUBMITTED_', '_IN_PROGRESS_', '_UNCONFIRMED_'): 
      print('Sleeping and check again....') 
      time.sleep(60) 
     elif status == '_DONE_': 
      feedResult = conn.get_feed_submission_result(FeedSubmissionId=submission_id) 
      print(feedResult) 
      break 
     else: 
      print("Submission processing error. Quit.") 
      break 

Odpowiedz

0

Skończyło się na tym, że skontaktowałem się z pomocą techniczną Amazon i dowiedziałem się, że zmiana ceny zajmie nawet 15 minut. Miałem też inny skrypt, który przesyłał nowe produkty i aktualizował zapasy o cenie & za istniejące produkty ... ten skrypt konkurował z moim skryptem repricing.

Rozwiązałem problem, zmieniając sposób, w jaki drugi skrypt aktualizuje cenę istniejących produktów.

+0

proszę zamknąć to pytanie –

0

Nie wiem, ale twój Python XML wygląda ok, tutaj jest mój kod PHP, który używam do zrobienia zmiany cen w ciągu ostatnich 5 lat i działa dobrze. Nie wiem, czy to ci pomoże, ponieważ to jest PHP.

$feed = <<< EOD 
<?xml version="1.0" encoding="utf-8"?> 
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"> 
<Header> 
<DocumentVersion>1.01</DocumentVersion> 
<MerchantIdentifier>$merchant_token</MerchantIdentifier> 
</Header> 
<MessageType>Price</MessageType> 
<Message> 
    <MessageID>1</MessageID> 
    <Price> 
    <SKU>$sku</SKU> 
    <StandardPrice currency="$currency">$new_price</StandardPrice> 
    </Price> 
</Message> 
</AmazonEnvelope> 
EOD; 
    $feed = trim($feed); 

    $feedHandle = @fopen('php://temp', 'rw+'); 
    fwrite($feedHandle, $feed); 
    rewind($feedHandle); 
    $parameters = array(
     'Merchant' => $MERCHANT_ID, 
     'MarketplaceIdList' => $marketplaceIdArray, 
     'FeedType' => '_POST_PRODUCT_PRICING_DATA_', 
     'FeedContent' => $feedHandle, 
     'PurgeAndReplace' => false, //Leave this PurgeAndReplace to false so that it want replace whole product in amazon inventory 
     'ContentMd5' => base64_encode(md5(stream_get_contents($feedHandle), true)) 
    ); 
    rewind($feedHandle); 

    $request = new MarketplaceWebService_Model_SubmitFeedRequest($parameters); 
    $return_feed = invokeSubmitFeed($service, $request, $price_change_info_log); 

    fclose($feedHandle); 
4

Istnieje kilka możliwych przyczyn wymienionych w przybliżeniu w kolejności prawdopodobieństwa:

1. Amazon jest wolniejsze zaktualizować wartości niż mówią, że są. Możliwe, że mimo że plik danych zakończył się sukcesem, jest jeszcze okres czasu, zanim ta zmiana odzwierciedli się w Amazon (nawet zmieniające się wartości z SalesCentral pochodzą z wiadomościami, że nie jest to natychmiastowe).
Poczekaj kilka minut i sprawdź, czy zmiana ostatecznie pojawi się.


2. Można mieć alternatywny serwis przeszacowania nadal aktywne. Jeśli obecnie używasz innej wtyczki do tej jednostki SKU, może ona konkurować z Twoimi próbami i przywrócić cenę na podstawie własnego zestawu reguł.
Można użyć wywołania GetFeedSubmissionList, aby sprawdzić, czy inny kanał _POST_PRODUCT_PRICING_DATA_ został przesłany po Twoim (ale bez możliwości przejrzenia przesłanej treści).


3. Nie może być konflikt z min i max ceny na SKU (czy je ustawić, czy nie), a cena próbowałeś ustawiony jest poza dozwolony zasięg. Jest to wynikiem jednej z zasad firmy Amazon wymagających nowych i zaktualizowanych jednostek SKU, które mają te zestawy lub używają domyślnych kryteriów.

W naszych starań w celu zmniejszenia ryzyka błędów cenowych sprzedawców i uniknąć potencjalnie negatywnych doświadczeń z klientami, począwszy od dnia 14 stycznia 2015 roku, nie będzie w stanie wykorzystać swoje preferencje Sprzedawcy Central wybrać koc „opt- poza "wszystkimi potencjalnymi błędami niskich i wysokich cen. Zamiast tego musisz ustawić minimalną i maksymalną dozwoloną cenę sprzedaży dla każdego produktu w ekwipunku, jeśli nie chcesz, aby Amazon domyślne potencjalne reguły cenowe miały zastosowanie do tego produktu.

nie mogę znaleźć stronę ogłoszenie na ten temat więc może to być e-mail, ale to jest cytowany jako taki na forums

W tych okolicznościach pasza będzie sprawozdanie udany (bo jego referencje/format są poprawne), ale zmiana ceny po cichu zakończy się niepowodzeniem z powodu ustawionych limitów przedziałów cenowych.
Możesz sprawdzić, czy to jest Twój problem, wyświetlając SKU na stronie SalesCentral Manage Inventory. Konieczne może być włączenie kolumn min.-maks., Aby wyświetlić bieżące wartości w zależności od preferencji ustawionych dla tej strony.

Niestety, nie ma sposobu, aby wyciągnąć Min/Max cen na pozycji inwentarzowych, aby wiedzieć, czy to będzie problem z wyprzedzeniem:

Drogi Sprzedawcy,

Jestem Sharon z Amazon Sprzedającego Wsparcie i będę ci dzisiaj pomagał w twoich problemach.
Z treści wiadomości e-mail rozumiem, że obawiasz się, że istnieje raport, w którym można pobrać raport "Minimalna cena" i "Maksymalna cena".
Z przykrością informuję, że od teraz dostępne raporty będą zawierały jedynie informacje "standard_price" i "list_price".
Rozumiem, że jest to dla Ciebie rozczarowanie, ale proszę zrozumieć, że z powodu braku tej funkcji, w tym "Minimalna cena" i "Cena maksymalna" w raportach dotyczących inwentaryzacji, nie uwzględniono i szczerze przepraszam za wszystkie niedogodności pod tym względem.

poprzez biletu wsparcia Amazon zespół MWS, lip 03, 2016


4. To może być możliwe Amazon nie pozwala pasza zaktualizować cenę podczas aktywnej promocji. Powinieneś być w stanie sprawdzić, czy produkt jest w sprzedaży, wyświetlając stronę SalesCentral Manage Inventory, gdzie kolumna "cena" będzie oznaczona kolorem zielonym.
Wydaje się to nieprawdopodobne, ponieważ wymaga elementu "StandardPrice" z elementem "Sprzedaż", ale narzędzie Amazon "Automatyzacja cen" wymienia je jako possible reason za awarię narzędzia.


5. Aplikujesz aktualizację cen do niewłaściwego rynku.
Jeśli identyfikator podany pod numerem MarketplaceIdList=[MARKETPLACE_ID], dotyczy innego rynku niż ten, który sprawdzasz, nie zobaczysz zmiany ceny.
Amazon nie może przesłać prośby o przesłanie pliku danych, jeśli zgłosisz się do rynku, do którego nie masz dostępu, więc może to nie być problemem, jeśli masz tylko jeden rynek.


6. Szukasz nowej cenie w niewłaściwym miejscu.
Jeśli przeglądasz na stronie SalesCentral Manage Inventory, upewnij się, że patrzysz na kolumnę "Cena", a nie na kolumnę "Najniższa cena".
Jeśli patrzysz na szczegóły produktu lub stronę oferty (na stronie sklepu Amazon), upewnij się, że patrzysz na swoją ofertę.Nie możesz być główną ofertą pokazaną na stronie szczegółów lub najwyższej ofercie wyświetlanej na stronie z listą ofert.
Oczywiście upewnij się, że masz odpowiedni SKU/ASIN.


7. To jest dla innego kanału, ale user has reported że Amazon po prostu nie aktualizuje informacje czasami wymagające wsadu do ponownego wysłania.


Istnieje alternatywny RSS można spróbować użyć do aktualizacji informacji o cenie _POST_FLAT_FILE_INVLOADER_DATA_, ale jest to płaski typ pliku (zakładka ograniczona) tak schematu XML nie będzie przeniesione. Prawdopodobnie warto spróbować, jeśli uważasz, że problem jest związany z konkretnym plikiem danych, z którego korzystasz.