Node.jsでYahoo!ショッピングの注文APIを叩いてみる
概要
業務でYahoo!ショッピングのAPIを利用しているのですが、注文APIは少し苦戦したのでメモを残します。 とりあえず立たけるようになったので良かった・・
ちなみに、マニュアルは以下のページにあります。
ショッピング:注文に関するAPI - Yahoo!デベロッパーネットワーク
なお、アクセストークンについては既に取れている前提で記載しています。
注文ステータス別件数参照
注文ステータス別の件数を取得するAPIです。こちらは簡単でした。
サンプル
const request = require('request') const accessToken = '<ACCESS_TOKEN>' const sellerId = 'snbx-xxxxx' const url = 'https://test.circus.shopping.yahooapis.jp/ShoppingWebService/V1/orderCount' const options = { method: 'GET', url: url, headers: { 'Authorization': 'Bearer ' + accessToken }, qs: { seller_id: sellerId, }, ignore_errors: true } request.get(options, (err, res, body) => { if (!err && res.statusCode === 200) { console.log(body) } else { console.log('Error!') console.log(res) } })
レスポンス
<?xml version="1.0" encoding="UTF-8" ?> <ResultSet totalResultsAvailable="1" totalResultsReturned="1" firstResultPosition="1"> <Result> <Status>OK</Status> <Count> <NewOrder>1</NewOrder> <NewReserve>0</NewReserve> <WaitPayment>0</WaitPayment> <WaitShipping>0</WaitShipping> <Shipping>0</Shipping> <Reserve>0</Reserve> <Holding>0</Holding> <WaitDone>0</WaitDone> <Suspect>0</Suspect> <SettleError>0</SettleError> <Refund>0</Refund> <AutoDone>1</AutoDone> <AutoWorking>0</AutoWorking> <Release>0</Release> <NoPayNumber>0</NoPayNumber> <StoreStatus1>0</StoreStatus1> <StoreStatus2>0</StoreStatus2> <StoreStatus3>0</StoreStatus3> <StoreStatus4>0</StoreStatus4> <StoreStatus5>0</StoreStatus5> <StoreStatus6>0</StoreStatus6> <StoreStatus7>0</StoreStatus7> <StoreStatus8>0</StoreStatus8> <StoreStatus9>0</StoreStatus9> <StoreStatus10>0</StoreStatus10> </Count> </Result> </ResultSet>
注文検索API
注文検索APIの方はちょっと苦労したのですが、何とか値が取れるようになったので良かったです。
サンプル
セラーIDのsnbx-xxxxxx
は任意の値を入れてください。
const request = require('request') const accessToken = '<ACCESS_TOKEN>' const sellerId = 'snbx-xxxxxx' const url = 'https://test.circus.shopping.yahooapis.jp/ShoppingWebService/V1/orderList' const xml = ` <Req> <SellerId>${sellerId}</SellerId> <Search> <Condition> <OrderTimeFrom>20180611000000</OrderTimeFrom> </Condition> <Field>OrderId,Version,OrderStatus</Field> </Search> </Req>` const options = { method: 'POST', url: url, headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': 'Bearer ' + accessToken }, body: xml, ignore_errors: true } request(options, (err, res, body) => { if (!err && res.statusCode === 200) { console.log(body) } else { console.log('Error!') console.log(err) console.log(res) } })
レスポンス
<?xml version="1.0" encoding="UTF-8" ?> <Result> <Status>OK</Status> <Search> <TotalCount>2</TotalCount> <OrderInfo> <OrderId>snbx-xxxxx-10000001</OrderId> <Version>1</Version> <OrderStatus>5</OrderStatus> <Index>1</Index> </OrderInfo> <OrderInfo> <OrderId>snbx-xxxxx-10000002</OrderId> <Version>1</Version> <OrderStatus>5</OrderStatus> <Index>2</Index> </OrderInfo> </Search> </Result>