Яху! Проблемы с Merchant Checkout API

Я пытаюсь интегрироваться с API-интерфейсом Checkout Yahoo! для существующей учетной записи продавца в веб-приложении на основе Django. Мне уже удалось успешно интегрировать их API-интерфейс каталога, но по какой-то причине я просто не могу заставить работать API-интерфейс Checkout. Я создал XML-запрос на основе примера из их документации, но он всегда просто возвращает ошибку 10009 Auth Required. Я подтвердил, что моя партнерская учетная запись действительно имеет правильную авторизацию, и я просто не могу понять, почему я получаю эту ошибку. Я не верю, что это неправильно сформированный запрос, поскольку я получаю точно такой же результат, когда копирую и вставляю их пример запроса (очевидно, изменение токена API и т. д.).

Вот как выглядит мой запрос (с очищенным идентификатором магазина и токеном):

<ystorews:ystorewsRequest xmlns:ystorews="urn:yahoo:sbs:ystorews">
  <Version>1.0</Version>
  <StoreID>{storeid}</StoreID>
  <SecurityHeader>
        <PartnerStoreContractToken>{token}</PartnerStoreContractToken>
  </SecurityHeader>
  <Verb>create</Verb>
  <ResourceList>
    <CheckoutBasket>
      <ShoppingCart>
        <Item>
          <ID>foo</ID>
          <Quantity>5</Quantity>
        </Item>
      </ShoppingCart>
    </CheckoutBasket>
  </ResourceList>
</ystorews:ystorewsRequest>

И вот ответ, который я получаю:

<?xml version="1.0" encoding="utf-8"?>
<ystorewsResponse>
<ErrorMessages>
<Error>
<Code> 10009 </Code>
<Message> Auth Required </Message>
</Error>
</ErrorMessages>
</ystorewsResponse>

А вот как выглядит мой партнерский доступ к API: Yahoo! Партнерский доступ к API


person Josh Ourisman    schedule 13.07.2012    source источник
comment
Сомнительно, чтобы XML вызвал такую ​​ошибку. Как выглядит код?   -  person Colin Dunklau    schedule 13.07.2012
comment
Это определенно не код, я использую точно такой же код для отправки запроса с помощью API каталога, который отлично работает. Какой бы ни была проблема, она связана с тем, что я им отправляю. Если я удаляю тег или искажаю его, я получаю ответ об ошибке, сообщающий мне, что я пропустил или у меня неверные теги. Однако я использую библиотеку Requests, поэтому код выглядит так: response = requests.post(endpoint, data=request).   -  person Josh Ourisman    schedule 13.07.2012


Ответы (2)


Оказывается, в Yahoo! возникли внутренние проблемы. которые мешали этому работать. После того, как я связался с их командой поддержки малого бизнеса, они смогли решить проблему, и мой код внезапно заработал.

Я обнаружил, что на случай, если кто-то еще столкнется с подобными проблемами, лучший способ связаться с ними — через их аккаунт в Твиттере: @YSmallBizCare.

person Josh Ourisman    schedule 18.07.2012
comment
У меня такие же странные проблемы с аутентификацией, их документация и раздел поддержки не очень помогают. - person bonez; 19.01.2015
comment
Я получал ту же ошибку, используя код PHP по адресу stackoverflow.com/questions/15753012/ Я связался со службой поддержки клиентов Yahoo Small Business по электронной почте, и они сказали, что мы внесли некоторые изменения в серверную часть. Потом ошибка ушла. - person humbads; 06.06.2019

Дикая догадка здесь, но это стоит того.

Вы объявляете пространство имен XML, но вообще его не используете. Я подозреваю, что вы хотели:

<ystorewsRequest xmlns="urn:yahoo:sbs:ystorews">
  <Version>1.0</Version>
  <StoreID>{storeid}</StoreID>
  <SecurityHeader>
        <PartnerStoreContractToken>{token}</PartnerStoreContractToken>
  </SecurityHeader>
  <Verb>create</Verb>
  <ResourceList>
    <CheckoutBasket>
      <ShoppingCart>
        <Item>
          <ID>foo</ID>
          <Quantity>5</Quantity>
        </Item>
      </ShoppingCart>
    </CheckoutBasket>
  </ResourceList>
</ystorewsRequest>

Обратите внимание на отсутствие пространства имен ystorews в корневом элементе.

person Colin Dunklau    schedule 13.07.2012
comment
К сожалению, это не так. Первоначально у меня не было пространства имен (оно не нужно в API каталога), но когда я смог заставить запрос работать, я добавил его, чтобы сделать его максимально совместимым с их примером запроса. Запрос, который я создаю, буквально такой же, как и их пример, за исключением моего идентификатора магазина и токена. :( - person Josh Ourisman; 13.07.2012
comment
То есть, когда я НЕ МОГУ заставить запрос работать, я добавил в пространство имен... - person Josh Ourisman; 13.07.2012