우물안에서 보는 하늘도 맑다

쿠팡 파트너스 프로그램 제작 4일차 그리고 네이버블로그 초기화 신청 본문

쿠팡 파트너스 프로그램 제작 4일차 그리고 네이버블로그 초기화 신청

몽염이 2023. 8. 11. 15:26
반응형
큰 그림 그리기

* 이클립스 시작

* Spring Boot Project 기본 시작

* ChatGPT 에 시작 프로그램 물어보기

* 쿠팡 파트너스 API 연동

* 쿠팡 파트너스 프로그램을 올려둘 워드프로세서 웹 페이지나 aws 웹 페이지 알아보기

- 호스팅?

* 테스트 시작

* SNS나 블로그에 자동으로 글을 올리는 부분 시작

오늘 진척도

 

* 역시 chatGPT 가 준 소스는 동작을 안함....

- chatGPT 유료 계정 결제 할까 고민중.  써본 사람의 말로는 무료 보다는 플러그인 사용이 가능해서 무료보다 나은 소스를 제공한다고 함.

* 쿠팡 파트너스 API 가이드 : https://partners.coupang.com/?gclid=Cj0KCQiAgKzwBRCjARIsABBbFugRgiOLX7hc2FMjTPANwrTvX51EpxTf2k0ag-kP3-371_oZlg5IT64aAhNUEALw_wcB#help/open-api

* 쿠팡 파트너스 기본 예제(쿠팡 파트너스에서 제공하는 예제)

- HmacGenerator.java

package com.coupang;

import org.apache.commons.codec.binary.Hex;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.Charset;
import java.security.GeneralSecurityException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public final class HmacGenerator {
    private static final String ALGORITHM = "HmacSHA256";
    private static final Charset STANDARD_CHARSET = Charset.forName("UTF-8");

    /**
     * Generate HMAC signature
     * @param method
     * @param uri http request uri
     * @param secretKey secret key that Coupang partner granted for calling open api
     * @param accessKey access key that Coupang partner granted for calling open api
     * @return HMAC signature
     */
    
    public static String generate(String method, String uri, String secretKey, String accessKey) {
    	
        String[] parts = uri.split("\\?");
        if (parts.length > 2) {
            throw new RuntimeException("incorrect uri format");
        } else {
            String path = parts[0];
            String query = "";
            if (parts.length == 2) {
                query = parts[1];
            }

            SimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyMMdd'T'HHmmss'Z'");
            dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
            String datetime = dateFormatGmt.format(new Date());
            String message = datetime + method + path + query;

            String signature;
            try {
                SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes(STANDARD_CHARSET), ALGORITHM);
                Mac mac = Mac.getInstance(ALGORITHM);
                mac.init(signingKey);
                byte[] rawHmac = mac.doFinal(message.getBytes(STANDARD_CHARSET));
                signature = Hex.encodeHexString(rawHmac);
            } catch (GeneralSecurityException e) {
                throw new IllegalArgumentException("Unexpected error while creating hash: " + e.getMessage(), e);
            }

            return String.format("CEA algorithm=%s, access-key=%s, signed-date=%s, signature=%s", "HmacSHA256", accessKey, datetime, signature);
        }
    }
}

- OpenApiTestApplication.java

package com.coupang;

import org.apache.http.entity.StringEntity;
import org.apache.http.util.EntityUtils;
import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.impl.client.HttpClientBuilder;

import java.io.IOException;



public final class OpenApiTestApplication {
	
	private final static String REQUEST_METHOD = "POST";
    private final static String DOMAIN = "https://api-gateway.coupang.com";
    private final static String URL = "/v2/providers/affiliate_open_api/apis/openapi/v1/deeplink";
    // Replace with your own ACCESS_KEY and SECRET_KEY
    private final static String ACCESS_KEY = "쿠팡에서 발급받은 access_key 넣기";
    private final static String SECRET_KEY = "쿠팡에서 발급받은 secret_key 넣기";

    private final static String REQUEST_JSON = "{\"coupangUrls\": [\"https://www.coupang.com/np/search?component=&q=good&channel=user\",\"https://www.coupang.com/np/coupangglobal\"]}";

    public static void main(String[] args) throws IOException {
        // Generate HMAC string
        String authorization = HmacGenerator.generate(REQUEST_METHOD, URL, SECRET_KEY, ACCESS_KEY);

        // Send request
        StringEntity entity = new StringEntity(REQUEST_JSON, "UTF-8");
        entity.setContentEncoding("UTF-8");
        entity.setContentType("application/json");

        HttpHost host = HttpHost.create(DOMAIN);
        HttpRequest request = RequestBuilder.post(URL).setEntity(entity)
                				.addHeader("Authorization", authorization)
            					.build();

        HttpResponse httpResponse = HttpClientBuilder.create().build().execute(host, request);

        // verify
        System.out.println(EntityUtils.toString(httpResponse.getEntity()));
    }

}

* Spring boot 3.1.2 에서 @controller 나 @service 로 쿠팡파트너스 예제가 실행 되게 변경중

* @Controller 어노테이션이 자동 import 되지 않아서 chatGPT 에게 원인을 물어보고 update maven project 진행함

- chatGPT : https://chat.openai.com/share/0477ab70-f61d-4e3f-84fd-814acf7c7661

 

ChatGPT

A conversational AI system that listens, learns, and challenges

chat.openai.com

 

* 블로그 방향 고민

- 네이버 블로그로 아예 이사 갈지.. 주제별로 블로그를 나눌지 고민 중

-  둘다 운영하기에는 글을 자주 쓸 자신이 없고,  그렇다고 이미 구글 애드센스 고시를 통과한 블로그를 버리기는 아깝다.  지금 최적화된 건강, 병원 관련으로 티스토리 블로그를 관리하고, 일상과 지금 공부하는 내용들을 네이버로 옮길지 고민중이다.  초기화 신청을 해놓았으니 찬찬히 고민해 보는 것으로 하자.  종이나 블로그에 내가 블로그에서 쓸 수 있는 주제를 모두 쓰고(애써 노력하지 않아도 자주 쓸 수 있는 주제) 중 하거나 돈이 될만한 블로그 주제로 방향을 바꿀지도 생각해 볼 것!!!

 

반응형