PHPを使ってGoogleショッピングAPIを叩きたく、調べていたら、
ZendFrameworkの「ZendGdata」で比較的簡単に出来る。
 
が、、、いかんせんドキュメントが少ない上に、
公式が英語のみでいろいろわけわからんかったけど、なんとかできた。
その覚書。
 

<?php    
require_once( 'Zend/Gdata.php');    
require_once( 'Zend/Gdata/ClientLogin.php');    
require_once( 'Zend/Gdata/Gbase.php');    
    
//クライアントのインスタンス作成。ログインIDとパスワードを設定    
$client = Zend_Gdata_ClientLogin::getHttpClient( 'ログインID(メアド)', 'パスワード', Zend_Gdata_Gbase::AUTH_SERVICE_NAME );    
$service = new Zend_Gdata_Gbase($client);    
    
//新たなエントリーを作るためのインスタンス作成    
$newEntry = $service->newItemEntry();    
    
//商品名(タイトルだけど商品名として扱われる)    
$newEntry->title = $service->newTitle('商品名');    
    
// データの登録先を定義(Googleショッピングの場合はProducts)
$newEntry->itemType = "Products";
  
//概要(コンテンツだけど概要として扱われるらしい    
$content = "概要概要概要概要";    
$newEntry->content = $service->newContent($content);    
$newEntry->content->type = 'text';    
    
//品番    
$newEntry->addGbaseAttribute("id", "品番", "text");    
    
//状態 new|used|refurbished    
$newEntry->addGbaseAttribute("condition", "New", "text");    
    
//商品ページURL    
$newEntry->addGbaseAttribute("link", "URL", 'url');    
    
//価格     
$newEntry->addGbaseAttribute("price", "値段 JPY", "numberUnit");    
    
//対象国(これを忘れるとチェックが通らない。忘れがちなので注意。    
$newEntry->addGbaseAttribute("target_country", 'JP', 'text' );    
    
//データ挿入実行(テスト実行は2番目の引数をtrueにする。    
$createdEntry = $service->insertGbaseItem($newEntry, false);    
    
?>

 
だいたいこんな感じ。
これ以外のフィードアイテムについては、
Googleのフィード仕様の説明をご覧になればわかるかと思います。

なお、注意点として、ZendGdataはAPIでエラーが出たとき、FatalErrorとなります。
エラートラップなどの必要性がありますので、そのへんの実装は各自行ってくださいね。
 
私はこれを直で使うわけでなく、XMLのフォーマットを知りたかったから。
同じ様にAPIのXMLのフォーマットを知りたいという人は、
Zend/Gdata/App.phpのpost()の中で、「$requestData[‘data’]」をecho()すれば幸せになれます。


追記:2010/12/28
上記の方法は「ClientLogin」を利用しています。
ClientLoginの場合、ログイン失敗などするとCaptcha認証が必須となり、
ログインしようとするとHTTPエラーコード403が戻りますが、
ZendGdataでは、これをハンドリングする仕様にはなってないようです。
実際の利用時は、ZendGdataに含まれるHTTPクライアントオブジェクトを拡張するなどして、
Captcha必須のエラーハンドリングを行えるようにしたほうが良いでしょう。