0

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

以下是我正在遵循的步骤:

  1. 连接到我的 google checkout order 收件箱
  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 文件中。

注意:我的 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 调用和查询字符串传递来实现这一点,就像我在脚本中所做的那样,因为我的帐户没有可用的商家密钥。

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

4

2 回答 2

1

您似乎只有一个 Android In-App Billing Merchant 帐户,但没有 Google Checkout 商家帐户。

为了使用 Order API(或其他 Google Checkout API),您需要有一个商家密钥,如果您的帐户也是经典的 Checkout 商家帐户,您可以获得该密钥。

使用下面的 URL 注册 Checkout Merchant 帐户。确保使用与现有商家帐户相同的 Google 登录凭据:

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

于 2012-06-07T18:26:01.530 回答
0

您不能将 'financial-state' 参数留空。

设置一个有效值

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

或者只是删除它。

于 2012-12-28T04:32:58.793 回答