バリューコマースのAPIを使って注文レポートをCSV保存

バリューコマースの管理画面から良い感じにCSV出力できなかったので、自作しました。

THIS_IS_TEST_CLIENT_KEY_STR|THIS_IS_TEST_CLIENT_SECRET_STR にはご自身の鍵が入ります。

バリューコマースの設定から取得してご設定ください。

※1日100件が上限です。それ以上取得したい場合はカスタマイズしてください。

pub-docs.valuecommerce.ne.jp/docs/as-77-token-api/

resultSet->rowData->bearer_token;


// ストリームを作成します
$opts = array(
    'http'=>array(
        'method'=>"GET",
        'header'=>"Authorization: Bearer ".$response->resultSet->rowData->bearer_token."\r\nAccept: application/json\r\n"

    )
);

$output = [];
$context = stream_context_create($opts);
$startDate = $_GET['start'];
$endDate = $_GET['end'];
$currentDate = $startDate;

while (true) {

    // 上で設定した HTTP ヘッダを使用してファイルをオープンします
    $file = file_get_contents('https://api.valuecommerce.com/report/v2/affiliate/transaction/?from_date='.$currentDate.'&to_date='.$currentDate.'&approval_status=p,a,c,i', false, $context);
    $data = json_decode($file, true);

    //print_r($data);die;

    foreach ($data['resultSet']['rowData'] as $index => $rowDatum) {
        $output[] = $rowDatum;
    }

    $currentDate = date('Y-m-d', strtotime($currentDate . " +1 day"));
    if($currentDate > $endDate) break;
    if($currentDate > date('Y-m-d')) break;
}


header( 'Content-Type: text/csv charset=SJIS-win' );
header( 'Content-Disposition: attachment;filename='.mb_convert_encoding("vc_" . $_GET['start'] . ".csv", "SJIS-win", "utf-8"));

$fp = fopen('php://temp', 'r+b');
foreach ($output as $fields) {
    fputcsv($fp, $fields);
}
rewind($fp);
$tmp = str_replace(PHP_EOL, "\r\n", stream_get_contents($fp));
echo mb_convert_encoding($tmp, 'SJIS-win', 'UTF-8');
die;
よかったらシェアしてね!

この記事を書いた人

目次
閉じる