月別アーカイブ: 2018年10月

AmazonMWS 受注リストの取得

< 目的 >

受注状況のみの確認を行いたい。
(セラーセントラルの動作が若干重く、そして若干使いづらいので)

 

< 必要なもの >

Amazonとの出品契約(大口出品者)
MWSアカウント(登録は https://services.amazon.co.jp/services/mws.html から)
C#クライアントライブラリ(AmazonマーケットプレイスWebサービス(MWS)の「API&ドキュメント」、「注文」よりダウンロード)

 

< 手順概要 >

ダウンロードした「C#クライアントライブラリ」を解凍しプロジェクトに下記二つのファイルへの参照を追加する。
・MWSClientCsRuntime-1.0.dll
・MWSOrders_2013-09-01_v2015-09-24.dll

srcフォルダにサンプル等があるので適宜プロジェクトに導入。
尚、他のAPIについても基本手順は同様。

 

< 詳細 >

基本的にはsrcフォルダにある以下4つのファイルをそのままプロジェクトに組み込めばよい。

・MarketplaceWebServiceOrders.cs
・MarketplaceWebServiceOrdersClient.cs
・MarketplaceWebServiceOrdersConfig.cs
・MarketplaceWebServiceOrdersException.cs
・MarketplaceWebServiceOrdersSample.cs

尚、namespaceやMarketplaceWebServiceOrdersSample辺りは名称を変えても良いでしょう。

他、accessKeyやsecretKeyなどを取得したMWSアカウントに従って入力しておく。

が、「注文」APIだけでなく「商品」APIなどでもアカウント情報は使用するので、別のクラスにまとめる。
が、staticにするかシングルトンパターンにするか迷い、結局、シングルトンを採用し、以下のように。

 

尚、サンプルはコンソールアプリとして作られているので、MarketplaceWebServiceOrdersSample.cs 内の下記部分は変更が必要。

そもそもSampleという名称にある通り、上記に限らず、目的に応じてこのファイルに該当する部分は変更または新規に作成していくことになるでしょう。

 

 

ヤフオク 終了したオークションの再出品ツール作成メモ Selenium編

< 目的 >

落札者のありなしに関わらず、自動再出品の回数も消化して終了となったオークションの再出品を行う。
管理は社内PCに限りたいとのことで、クラウド型の管理ツールは使用不可。
「○○にて出品」といったようなツール名称が入るのもNGの理由らしい。
APIの提供は2018年2月で終了している。そもそも出品関連のAPIはなかった模様。

 

< 必要なもの >

・ヤフオクとのストア契約
・Yahoo!IDとパスワード

 

< 手順概要 >

APIの提供がないので若干力業的なところあり。

「マイ・オークション」の「出品終了分」内「落札者あり」または「落札者なし」のページを開く
ログインページに遷移してしまったらログインする
「落札者あり/なし」のHTMLを取得
オークションIDやリンク、タイトル、再出品ボタンのリンク先URLを収集
再出品ボタンのリンク先URLに移動して再出品処理

 

< 詳細 >

VisualStudioの該当プロジェクトに対するSelenium.WebDriverの導入は済んでいて、ブラウザごとのドライバはプログラム本体がある場所に SeleniumDriver というフォルダを作りそこに保存する、という前提。

 

もしログインされていない場合やセッションが切れていたりするとログイン画面に飛ばされるので、その際にはログインする。
ただし、状況によっては画像認証が必要となることがあるため、そのページでは60秒間待つ。
その間に手動で画像認証を行う。

 

落札者あり/なしのページが開いたらHTMLを取得し、必要な情報を収集する。

※ここではオークションIDしか取得していないけど、本来はURLなども対象。

 

再出品ボタンのURLに遷移して出品処理を行う。

尚、終了時間や自動再出品の回数などを再設定したいという要望もあったので、そのような作業も含めている。
aucEndTimeStringやautoReUpNumが該当するが、再出品に当たって共通して他にも再設定したい項目などがあればここで作業。

 

ところで、こうした自動化について回るのは「クリックしたい要素が出ていないのに処理が先に進んでしまい思う通りの動作をしない」ということがある。

今回もIEでは問題ないけどChromeだとそうした状況が発生した。

そこで、ドライバのインスタンスに対して下記のような設定を行うとタイムアウトまでの時間を変更できる。(デフォルトでは0だったような・・・)

 

 

楽天API 楽天ペイで受注情報の取得についてメモ

< 目的 >

特定の注文詳細データを取得する。
ex)ステータスが「発送待ち」となっている受注分から商品名(IDや管理番号なども)を取得したい
ex)ある一定期間内で「あす楽」の受注件数を取得したい

 

< 必要なもの >

・店舗URL
・serviceSecret
・licenseKey

 

< 手順概要 >

認証キー(AuthKey)の作成
リクエストパラメータをJSON で作成
エンドポイントにリクエストを投げる
レスポンスもJSONなので望むように処理

 

< 詳細 >

まずはserchOrderを使って受注番号を取得する。
デフォルトでは30件しか取得できないので、下記でリクエスト用のクラスにて件数を最大の1000件に変更。

認証キーの作成

 

リクエストパラメータをJSONで作成
パラメータは別途パラメータ設定用のクラスを用意。日付はUI上にデータピッカーをおいて設定。

尚、パラメータは下記のようなイメージでクラスを用意しておく。

 

エンドポイントにリクエストを投げる

 

受け取った結果もJSONなので、今回はデシリアライズしてオブジェクトにする。

デシリアライズのためには下記のようなクラスを用意。

 

SearchOrderResponseクラスのorderNumberListに最大1000件分の受注番号が取得できるので、次はその受注番号を使って受注情報を取得する。

受注情報の取得も基本的な手順は同じなので、「認証キー(AuthKey)の作成」「リクエストパラメータをJSON で作成」「エンドポイントにリクエストを投げる」「レスポンスもJSONなので望むように処理」で作業を行う。

尚、受注情報の取得にはgetOrderを利用するが、serchOrderは最大1000件の受注番号リストを取得できるのに対して、100件までとなっているので、対象の受注番号を絞り込む必要も出てくるかと。