我正在尝试与基于Django的网络应用中的现有商家帐户的Yahoo!Checkout API集成。我已经成功地集成了他们的Catalog API,但由于某种原因,我根本无法使Checkout API工作。我根据他们的文档中的示例制作了一个XML请求,但它总是只返回一个10009 Auth Required错误。我已经确认我的合作伙伴帐户确实拥有正确的授权,而我无法弄清楚为什么我会收到此错误。我不相信这是一个格式错误的请求,因为当我复制并粘贴他们的示例请求时,我得到了完全相同的结果(显然更改了API令牌等)。
这就是我的请求(商店ID和令牌已清理):
<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>
这就是我的Partner API Access的样子:
答案 0 :(得分:0)
在这里疯狂猜测,但值得一试。
您声明了一个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命名空间。
答案 1 :(得分:0)
原来,雅虎存在内部问题!这阻止了这种工作。在我联系他们的小型业务支持团队后,他们能够解决问题,我的代码突然开始工作。
如果其他人遇到类似的问题,我发现获得这些问题的最佳途径是通过他们的Twitter帐户:@YSmallBizCare。