月別アーカイブ: 2015年3月

GetMyPriceForSKU の謎

SellerSKUって重複はしない。
SellerSKUがわかれば、その商品の価格もわかる。

まぁ、当たり前のことなんだけど、なぜか一部の商品で「FulfillmentChannel」に「Amazon」と「MERCHANT」の両方が入ってくる。

<GetMyPriceForSKUResult SellerSKU=”ABCDEFG” status=”Success”>
 <Product>
  <Identifiers>
  (省略)
   <SKUIdentifier>
   (省略)
    <SellerSKU>
    ABCDEFG</SellerSKU>
   </SKUIdentifier>
  </Identifiers>
  <Offers>
   <Offer>
   (省略)
    <FulfillmentChannel>
    AMAZON</FulfillmentChannel>
    (省略)
    <SellerSKU>
    ABCDEFG_01</SellerSKU>
   </Offer>
   <Offer>
   (省略)
    <FulfillmentChannel>
    MERCHANT</FulfillmentChannel>
    <SellerSKU>
    ABCDEFG</SellerSKU>
   </Offer>
  </Offers>
 </Product>
</GetMyPriceForSKUResult>

で、SellerSKUが違うんだけど、なにこれ・・・


2015/04/22 追記

SellerSKUは重複しない、という点だけを見ていると上記現象は「不思議」なんだけど、この挙動は起こり得るらしい。

というのも、流れとして GetMyPriceForSKU で投げた SKU が、どの ASIN なのかを特定し、その ASIN を元にして、出品者の販売可能状態にある商品情報を返答するから。

具体的に起こり得る状況としては、通常はFBA出荷だけど、諸事情によりFBA在庫がなくなったら出品者出荷にしたい、けどまたすぐにFBAに納品する、といったような状況で、在庫管理や販売管理上の問題でSKUを別にしたい時がある。
(かかる送料コストがFBA出荷と出品者出荷では当然違うので、出荷チャネルによってコスト計算が変わってくるとか、同一商品でも仕入れ先が異なるとかで、SKUを明確に分けたいといったことがある)

そうなると、ひとつの ASIN に対して複数の SellerSKU を作らざるを得なくなるので、「ASIN を元にした出品者の販売可能状態にある商品情報」が複数出来上がってしまうことがある。

ん~、処理の流れを追えば、ひとつのSellerSKUを投げたのにレスポンスが複数になる、という状況は理解できるけど、「SellerSKUは重複しない」という前提で商品を登録し販売・運用しているのに、その重複しないSellerSKUを投げても、レスポンスに他のSellerSKU情報も含まれるというのはどうも感覚的に不自然。

出品者にとって唯一無二のSellerSKUのはずなのに、返答にはそれ以外の不要な情報までわざわざひっつけてくるんだもの。

しかし、そういった仕様のようなので、「複数のレスポンスがある」ということを考えておかないといけないのね。

C#でAmazonMWSの注文APIを使ってみる

C#でMWSの注文APIを利用する
やりたいことはいろいろあるけれど、C#の勉強がてらAmazonのAPIを使ってみることに。

とりあえず、注文一覧の取得。

名前空間とかインスタンスとか、初歩的なことでかなりつまずいた感はあるけれど、MWSのクライアントライブラリが優秀なおかげか、なんとか動くようにはなるもんだな。

C#を始めて見たんだけど・・・ビルドしたものがWinXPで動かない・・・

Visual Studio Express 2013 for Windows Desktop

これ、無料で使えるのね。すごいわ。

てことで、javaでもなくC++でもなく、C#を始めてみた。なぜC#なのかは謎だけど・・・

さて、Visual Studio をインストールしたのはWindows7の64bit。

出来上がったプログラムはこの環境で使うのはもちろん、32bitなWindowsXPでも使ってみたいな、と。
ふとそう思って出来上がったものをXPにコピーして実行してみたら・・・動きません・・・

「アクティブソリューションプラットフォーム」という項目を「AnyCPU」から「x86」にしてみたりもしたけれど動きません。

というか、調べると「AnyCPU」でも32bitで動くようにビルドされるとのこと。

はて、32bitでも動くようにビルドされるなら32bitなXPで動作しないのはなぜだろう・・・

VS2013_Cpp_forXP_01
調べてみると、C++だとプロジェクトのプロパティから「プラットフォームツールセット」を変更することで出来る模様。

 
 
しかし、C#ではこんな設定項目はない。。。
というわけで、もう少し調べてみると・・・

VisualStudio2013で
「対象のフレームワーク」の変更が必要だった。
というのも、.NET Framework 4.5はWindows7にインストールされてるんだけど、WindowsXPにはインストールされていないから。

というよりも、WindowsXPには4.0までしかインストールできない。

なので、ここを「.NET Framework 4」に変更する。

これでOK。

信書が話題だけど・・・(メモ)

郵便局の人がちょいと会社に来た。

ゆうメールは「新書」「物品」は送れない。管轄は国土交通省。

ゆうパケットは「新書」は送れないが「物品」は送れる。管轄は国土交通省。

定形郵便・定形外郵便は「新書」「物品」も送れる。管轄は総務省。

ゆうパックは「新書」「物品」も送れる。管轄は総務省。

とのこと。

なんだ、改めてみれば簡単な話で、ゆうメールはともかくゆうパケットも総務省じゃなくて国土交通省が監督省庁だったのか・・・

ま、信書は郵便か宅配便を使っておけ、ということですかね。

C#のメモ

VSCSharp_CoreTweet_01
VisualStudio の右上にある 「クイック起動(Ctrl+Q)」に「coretweet」と入力しエンター。
VSCSharp_CoreTweet_02
「インストール」をクリック

あとは、CSファイルで

using CoreTweet;

と追加すればOK。


string TW_API_KEY = “xxxxxxxxxxxxxxxxxxxxxxxxxxxx”;
string TW_API_KEY_S = “xxxxxxxxxxxxxxxxxxxxxxxxxxxx”;
string TW_ACC_TKN = “xxxxxxxxxxxxxxxxxxxxxxxxxxxx”;
string TW_ACC_TKN_S = “xxxxxxxxxxxxxxxxxxxxxxxxxxxx”;

StringBuilder Tweet_text = new StringBuilder();

var tokens = CoreTweet.Tokens.Create(TW_API_KEY, TW_API_KEY_S, TW_ACC_TKN, TW_ACC_TKN_S);

foreach (var status in tokens.Statuses.HomeTimeline(count => 10).Where(x => x.Text.Length > 60))
{
Tweet_text.Append(status.Text + “\r\n\r\n”);
}
TweetArea.Text = Tweet_text.ToString();