네이버 스마트스토어 API(커머스API 센터) PHP인증 참고할것 > PHP
PHP

네이버 스마트스토어 API(커머스API 센터) PHP인증 참고할것

조회 4,255회 댓글 0건
  • 현재 페이지 주소 복사
  • 페이스북으로 공유
  • X 로  공유
  • 트위터로  공유
  • 네이버 블로그로 공유
  • 네이버 카페 공유하기
  • 네이버 라인 공유하기
  • 네이버 밴드 공유하기
  • 링크드인으로 공유하기
  • 핀터레스트에 공유하기

네이버 스마트스토어용 API에 대한것으로 스마트스토어가 있는 경우 가입하여 사용 할 수 있습니다.

아래는 되는지 확인하기 위해서 테스트로 만든것으로서 실제사용은 함수나 클래스로 간략하게 만들 필요가 있습니다.


필요한것들은 아래와 같습니다.

- CURL사용시 HTTP 헤더로 전달(인증등)

- CURL을 GET으로 사용

- CURL을 POST로 사용

- HTTP 헤더를 분리해서 배열에 담아 두었다가 필요한것 있는지 참고



 


<?php

const client_id     = 'sssssssssssss';
const client_secret = '$1111111swssssssssssssssssss';
$timestamp    = (int)(microtime(true) * 1000);
$password     = client_id.'_'.$timestamp;
$hashed       = crypt($password, client_secret);
$b64_hashed   = base64_encode($hashed);
echo $b64_hashed . PHP_EOL;

# 1) 인증토큰
$aGetParm  = [
  "client_id"   => client_id,
  "timestamp"   => $timestamp,
  "grant_type"  => "client_credentials",
  "type"        => "SELF",
  "client_secret_sign" => "$b64_hashed"
];
$queryString  = http_build_query($aGetParm);
echo $queryString . PHP_EOL;

$curl         = curl_init();
curl_setopt_array($curl, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => $queryString,
]);
$response = curl_exec($curl);
$err      = curl_error($curl);
curl_close($curl);
if ($err) {
  echo $queryString . PHP_EOL;
  echo "cURL Error #:" . $err . PHP_EOL;
  exit;
}
else {
  echo '<pre>' . print_r($response, true) . '</pre>';
  $oJson        = json_decode($response);
  $access_token = $oJson->access_token;
  $expires_in   = $oJson->expires_in;
  $token_type   = $oJson->token_type;
}


# 2) 주문조회 > 변경상품 주문내역 조회
// curl --request GET \
//   --header 'Authorization: Bearer 인증토큰'
# &lastChangedTo=SOME_STRING_VALUE&lastChangedType=SOME_STRING_VALUE&moreSequence=SOME_STRING_VALUE&limitCount=SOME_INTEGER_VALUE
# Mon%20Apr%2011%202022%2015%3A21%3A44%20GMT%2B0900%20(%ED%95%9C%EA%B5%AD%20%ED%91%9C%EC%A4%80%EC%8B%9C)
#   > Mon Apr 11 2022 15:21:44 GMT+0900 (한국 표준시)
$lastChangedFrom  = '2023-01-01T01:01:01.000Z';
$curl       = curl_init();
curl_setopt_array($curl, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer $access_token"
  ],
]);
$response   = curl_exec($curl);
$err        = curl_error($curl);
curl_close($curl);
if ($err) {
  echo "cURL Error #:" . $err . PHP_EOL;
  exit;
}
else {
  echo $response . PHP_EOL;
  $oJson        = json_decode($response);
  echo '<pre>' . print_r($oJson, true) . '</pre>';

  # 3) 상품주문 상세내역 조회
  // curl --request POST \
  // --header 'Authorization: Bearer 인증토큰' \
  // --header 'content-type: application/json' \
  // --data '{"productOrderIds":["2022070112121201"]}'
  // $oJson      = json_decode($json_data);
  // echo '<pre>' . print_r($oJson->data->lastChangeStatuses, true) . '</pre>';
  // echo '<pre>' . print_r($oJson, true) . '</pre>';
  $aProductID = array();
  foreach ( $oJson->data->lastChangeStatuses as $aidx => $oList ) {
    // echo '<pre>' . print_r($oList, true) . '</pre>';
    /*
      [orderId] => 2021110221054020
      [productOrderId] => 2021110234567891
      [productOrderStatus] => PURCHASE_DECIDED
      [paymentDate] => 2021-11-01T11:12:12.0+09:00
      [lastChangedDate] => 2022-01-01T12:12:12.0+09:00
      [receiverAddressChanged] =>
      [lastChangedType] => PURCHASE_DECIDED
    */
    $productOrderId = $oList->productOrderId;
    $aProductID[]   = $productOrderId;
  }
  $aPostData    = array();
  if ( isset($aProductID) && count($aProductID) > 0 ) {
    $aPostData['productOrderIds'] = $aProductID;
    $json_data    = json_encode($aPostData, JSON_UNESCAPED_UNICODE);
    // echo $json_data . PHP_EOL;

    # 상품주문 상세내역 조회
    $curl     = curl_init();
    curl_setopt_array($curl, [
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => "POST",
      CURLOPT_POSTFIELDS => $json_data,
      CURLOPT_HTTPHEADER => [
        "Authorization: Bearer $access_token",
        "content-type: application/json"
      ],
    ]);
    $response   = curl_exec($curl);
    $err        = curl_error($curl);
    curl_close($curl);

    if ($err) {
      echo "cURL Error #:" . $err . PHP_EOL;
    } else {
      echo $response . PHP_EOL;
    }
  }
}
 



헤더에서 얻을 정보는 아래 리미트 관련된 부분을 참고하세요.

카카오워크 링크를 확인 하시면 됩니다.

echo 'ratelimit-limit: ' . $aRtnInfo['ratelimit-limit'] . "\n";

echo 'ratelimit-remaining: ' . $aRtnInfo['ratelimit-remaining'] . "\n";

https://www.pabburi.co.kr/content/php/%EC%B9%B4%EC%B9%B4%EC%98%A4%EC%9B%8C%ED%81%AC-api-%EC%B1%84%ED%8C%85%EB%B0%A9-%EB%A7%8C%EB%93%A4%EA%B8%B0/


* HTTP 헤더 배열로 결과 얻기 참고할곳


  • 현재 페이지 주소 복사
  • 페이스북으로 공유
  • X 로  공유
  • 트위터로  공유
  • 네이버 블로그로 공유
  • 네이버 카페 공유하기
  • 네이버 라인 공유하기
  • 네이버 밴드 공유하기
  • 링크드인으로 공유하기
  • 핀터레스트에 공유하기
전체 237건 1 페이지
  • profile_image PHP 설치 되어 있지 아니하여 윈도우PC에 최신버전으로 설치버전은 설치 할 때마다 다르기 때문에 본인이 사용하려는버전을 선택 하면 됩니다.     > 현대적인? 방법으로 설치함.       예전에 압축해 놓은것 풀고 path 설정하고 했던 그런 방법을 쓰지 않고 간단하게 설치가 되었다.      winget install PHP.PHP.8.5    > 아래 명령으로 설치된 위치를 찾음      where php    > php.ini-production…
  • profile_image OP캐쉬 사용하면 괜찮아 보다는 저 같은 경우는 사용하지 않아도 괜찮아를 더 좋아 합니다.▷ 솔리드 캐시(SOLID CACHE)란?솔리드 캐시는 간단히 말해 "비싼 RAM(REDIS) 대신 저렴하고 넉넉한 디스크(DB)에 캐시를 저장하는 전략"으로 원래 루비 온 레일즈(RUBY ON RAILS) 커뮤니티에서 제안된 방식이지만 본질은 어떤 언어에서든 적용 가능한 실용적인 캐싱 철학임.▷ 핵심 철학: "ssd는 생각보다 훨씬 빠르다"과거에는 디스크가 너무 느려서 무조건 데이터를 ram(REDIS MEMCACHED)에 올려야 했지만 지금은 nvme ssd 같은 초고속 저장 장치가 보편화되었습니다. 굳이 복잡하게 별도의 메모리…
  • profile_image MyISAM은 SELECT가 빠르고 InnoDB는 느리다그런 경우도 있고 아닌 경우도 있기 때문에 어떤 용도로 사용하느냐에 따라서 다를 수 있습니다.그리고 처음 데이터 넣은 다음 select만 90% 이상이고 테이블 사용이 업데이트나 인서트는 적은 경우인지 불특정 다수에게 서비스 하기 때문에 불특정한 row를 가져와서 보여줘야 하는것인지에 다를 수 있는 것입니다. 가장 큰 차이: 데이터와 인덱스 구조→ MyISAM  - 데이터 파일(.MYD) 과 인덱스 파일(.MYI) 이 분리됨  - 인덱스 → 데이터 파일을 다시 읽는 구조  - 동작흐름: PK 인덱스 탐색 (.MYI) -> 데이터 위치…
  • profile_image 데이터베이스를 사용하다 보면 이미 존재하는 데이터인지 확인한 후 INSERT 또는 UPDATE를 해야 하는 상황을 자주 만나게 됩니다.이때 매우 유용한 문법이 바로 INSERT ... ON DUPLICATE KEY UPDATE입니다.즉, 쿼리 한번으로 해결 된다는 의미 인데 아무곳에서나 사용 가능한것은 아니고 키 중복이 발생하는 부분에서만 사용 하는 것입니다.그렇기 때문에 unique의 특성을 모르시는 분은 사용 하면 안되겠지요.  장점- 쿼리 수 감소: SELECT → INSERT/UPDATE 두 번 쿼리 날릴 필요 없음- 동시성 문제 감소: SELECT 후 INSERT 방식보다 Race Condition 발…
  • profile_image 웹서버에 접근하는 X-Forwarded-For란?X-Forwarded-For(XFF)는 HTTP 헤더로 클라이언트가 프록시나 로드 밸런서를 거쳐 웹 서버에 접속할 때 원래 클라이언트의 IP 주소를 식별하기 위해 사용 됩니다.로그밸런스도 프록시서버의 변형된 형태가 있기 때문에 쉽게 프록시 서버라고 생각을 하면 쉽습니다.일반적으로 웹 서버는 직접 연결된 IP만 볼 수 있는데 프록시 뒤에 있으면 프록시 서버의 IP만 보이게 되는데 이런 경우 XFF 헤더가 실제 사용자 IP를 전달하는 역할을 합니다. ▷ 헤더 형식X-Forwarded-For: 클라이언트IP 프록시1 프록시2 ...여러 프록시를 거치면 쉼표로 구분되어 …
  • profile_image ifconfig는 초기 한번 정도만 사용하고 interface configuration의 약자로 리눅스/유닉스 시스템에서 네트워크 인터페이스를 설정하고 확인하는 명령어입니다.▷ ifconfig 주요 용도1. 네트워크 인터페이스 정보 조회  - 현재 활성화된 네트워크 인터페이스 목록 확인  - 각 인터페이스의 IP 주소, MAC 주소, 서브넷 마스크 확인  - 네트워크 통계 정보 (전송/수신 패킷 수, 에러 등) 확인2. 네트워크 인터페이스 설정  - IP 주소 할당 및 변경  - 서브넷 마스크 설정  - 브로드캐스트 주소 설정  - MTU(Maximum Tr…
  • profile_image 결론부터 말하면 느리게 다운로드 처리 하는 방식에 대한 것입니다.왜? 느리게 다운로드가 필요한가 하면 지연을 시키면 트래픽이 평탄화 되는 효과가 있는데 갑자기 순간적으로 팍 튀는 그런 현상을 없애기 위해서 필욯나 방법중 하나 입니다. 원리는 간단하며 읽은 만큼 내보내고 약간 지연 시키는 방식 입니다.    /**     * 청크 단위로 지연시키면서 파일 다운로드 (대용량 파일용)     *     * @param string $filePath 다운로드할 파일 경로     * @param …

상업적 이용 금지. 컨텐츠는 개인 용도로만 사용이 가능 합니다.