Можно ли по-прежнему использовать конечные точки API Itunes Connect вместо инструмента Java Reporter?

До последнего обновления Itunes Connect все запросы были HTTP-запросами, сделанными через Curl в нашем приложении. После обновления Apple рекомендует использовать новый инструмент для репортеров.

https://github.com/mikebarlow/itc-reporter Я хочу сделать что-то похожее на это, если это возможно. Предположительно, это работает без инструмента репортера, и похоже, что он все еще только делает HTTP-запросы. Я не буду использовать этот код в своем проекте, потому что он требует, чтобы мы обновили версию PHP, которую мы запланировали в другой раз.

Можно ли делать простые HTTP-запросы, используя Curl для получения данных? Я не хочу использовать Guzzle, если мне не нужно!

$json = '{"userid":"{{USERNAME}}","password":"{{PASSWORD}}","version":"2.0","mode":"Robot.XML","account":"{{VENDOR_ID}}","queryInput":"[p=Reporter.properties, Sales.getReport, {{VENDOR_ID}},Sales,Summary,Weekly,20170108]"}'

CURLOPT_URL => 'https://reportingitc-reporter.apple.com/reportservice/sales/v1',
CURLOPT_HEADER => false,   
CURLOPT_HTTPHEADER => array('Accept: text/xml, text/plain', 'Content-Type: text/xml, text/plain'),  
CURLOPT_USERAGENT => 'Java/1.8.0_92',  
CURLOPT_TIMEOUT => 10,  
CURLOPT_SSL_VERIFYPEER => false,  
CURLOPT_POST => true,  
CURLOPT_POSTFIELDS => $json,

это запрос, который я сделал во время тестирования, и когда я его запускаю, я получаю ответ в формате HTML с надписью "Запрещено, у вас нет доступа к этой странице"

Я пробовал это при urlencoding имени пользователя и пароля, но я получаю тот же результат. Я хотел бы иметь возможность получать эти данные с помощью Curl, иначе нам нужно будет добавить инструмент репортера в наше приложение.

1 ответ

Решение

Пост -поле просто нужно было соответственно изменить

function build_json_request(, $access_token, $account_id, 
$args_arr=array())
{
    $args = $args_arr;

    $json = array(
        'accesstoken' => urlencode($access_token),
        'version'  => '2.2',
        'mode'     => 'Robot.XML',
        'account'  => $account_id
    );

    $queryInput = array(
        'p=Reporter.properties',
        array_shift($args)
    );

    if(! empty($args))
        $queryInput[] = implode(',', $args);

    $json['queryInput'] = '[' . implode(', ', $queryInput) . ']';

    return json_encode($json);
}

$json = build_json_request('Sales.getReport', $access_token, $account_id, array('Sales.getReport', $vendor_id, 'Sales', 'Summary', 'Daily', $date) );

    $output = process_curl(array(
        CURLOPT_URL => 'https://reportingitc-reporter.apple.com/reportservice/sales/v1',
        CURLOPT_HEADER => false,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => 'jsonRequest='.$json,
    ));
Другие вопросы по тегам