Google Checkout报告通过HTTP Auth下载

时间:2012-06-07 05:31:00

标签: perl google-checkout

当我尝试自动google checkout销售订单报告时(为了跟踪我们的andriod应用程序销售之一),我试图通过一个简单的perl脚本(使用Mechanize)来实现这一点。

以下是我要遵循的步骤:

  1. 使用我的Google Checkout订单收件箱进行连接
  2. 登录后访问目标网址:https://checkout.google.com/cws/v2/AndroidMarket-1011/305286585299619/reportsForm?_type=order-list-request&column-style=&date-time-zone=America%2FLos_Angeles&end-date=2012-05-30&query-type=&start-date=2012-05-29。我想使用这些参数和值,而我正在自动执行此脚本。我将动态传递值。对于时间,我已经硬编码了。
  3. 传递身份验证和SID令牌以及标题
  4. 阅读回复并将其存储在CSV文件中。
  5. 注意:我的Google结帐帐户没有商家密钥设施,因为它是经典帐户。所以,我不能使用API​​来下载报告。

    这是我正在使用的Perl脚本..


    #!/usr/bin/perl -w
    use CGI;
    use CGI::Carp;
    use CGI qw'standard';
    use strict;
    use LWP::UserAgent;
    use WWW::Mechanize;
    use HTTP::Cookies;
    print "Content-type: text/html \n\n";
    my $url = 'https://www.google.com/accounts/ServiceLogin';
    my $username = 'xxx@yyy.com';
    my $password = "123456";
    my $cookie_jar = HTTP::Cookies->new(file => 'cookies', autosave => 1, ignore_discard => 1);
    my $mech = WWW::Mechanize->new(cookie_jar => $cookie_jar, autocheck => 0);
    $mech->get($url);
    $mech->form_id('gaia_loginform');
    $mech->field(Email => $username);
    $mech->field(Passwd => $password);
    $mech->submit();
    $cookie_jar->save;
    # Go to the Google checkout orer inbox
    $url = 'https://checkout.google.com/sell/orders';
    $mech->get($url);
    print $mech->content();
    #Retain the cookie through out the page
    $cookie_jar->load;
    print "This request is valid.";
    $mech->form_name('dateInput');
    $mech->field('start-date','2012-05-30');
    $mech->field('end-date','2012-06-01');
    $mech->field('date-time-zone','America/Los_Angeles');
    $mech->field('_type','order-list-request');
    $cookie_jar->load;
    my $results = $mech->submit();
    my $response = $mech->res();
    my $filename = $response->filename;
    if (! open ( FOUT, ">$filename" ) ) {
        die("Could not create file: $!" );
    }
    print( FOUT $m->response->content() );
    close( FOUT );
    print $results->content();
    

    这是结果..

    脚本说“HTTP错误400:错误请求”。据我了解,我发送的URL格式不会产生我想要的输出以及提示错误。

    只是想知道,是否已经通过HTTP调用和查询字符串传递来实现这一点,就像我在脚本中所做的那样,因为我的帐户没有可用的商家密钥。

    谢谢 - 期待收到您的来信。感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您似乎只拥有Android应用内结算商家帐户,但不是Google Checkout商家帐户。

要使用订单API(或其他Google Checkout API),您需要拥有商家密钥,如果您的帐户也是经典的Checkout商家帐户,则可以获得该商家密钥。

使用以下网址注册Checkout商家帐户。请务必使用与现有商家帐户相同的Google登录凭据:

http://checkout.google.com/sell/signup

答案 1 :(得分:0)

您不能将“财务状态”参数留空。

设置有效值

$mech->field('financial-state', 'CHARGEABLE');

或者只是删除它。