반응형
쿠팡파트너스 API 사용 예제로
제품을 검색하는 search 를 하는 예제 입니다.
쿠팡파트너스 API 에 POST 방식으로만 예제가 나와있어서
C# GET 방식으로 호출하는 예제 입니다.
쿠팡파트너스 API는 POST 방식과 GET 방식의 두가지가 존재합니다.
쿠팡파트너스에서 검색 키워드로 상품정보를 리스트를 가져오기 위해서는
/products/search 로 호출을 해야 합니다.
Parameters 로는 Keyword 는 필수, limit, subId 가 허용됩니다.
Responses 로는 rCode, rMessage, data 의 json 형식으로 받게 됩니다.
Get 방식이라 별문제 없이 코딩이 될줄 알았는데
쿠팡 API 호출 인증키 생성에서 애를 좀 먹었습니다.
영문검색은 대문자
한국어검색은 UrlEnHttpUtility.UrlEncode 을 해줘야 합니다.
C# 쿠팡파트너스 API 로 제품 검색하는 예제 입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Net;
using System.Text;
using System.Web;
using System.Windows.Forms;
namespace Tool
{
public class CoupangSearch
{
private DataTable getCoupangSearchList1()
{
DataTable _dt = new DataTable();
_dt.Columns.Add("RANK", typeof(string));
_dt.Columns.Add("IS_ROCKET", typeof(string));
_dt.Columns.Add("IS_FREE_SHIPPING", typeof(string));
_dt.Columns.Add("PRODUCT_ID", typeof(string));
_dt.Columns.Add("IMAGE_URL", typeof(string));
_dt.Columns.Add("PRODUCT_NAME", typeof(string));
_dt.Columns.Add("PRODUCT_PRICE", typeof(string));
_dt.Columns.Add("PRODUCT_URL", typeof(string));
string _sAccess_key = "xxxxxxxxxxx";
string _sSecret_key = "xxxxxxxxxxxxxxx";
string _sKeyword = HttpUtility.UrlEncode("노트북", Encoding.UTF8).ToUpper().Replace("+", "%20");
string _sLimit = "20"; // 기본 20개
string _sSubID = "xxxxx"; // 채널 아이디
string _sRequestMethod = "GET";
string _sDomain = "https://api-gateway.coupang.com";
string _sURL = "/v2/providers/affiliate_open_api/apis/openapi/v1/products/search";
string _sQuery = string.Format("keyword={0}&limit={1}&subId={2}", _sKeyword, _sLimit, _sSubID);
string _sAccessTokenURL = _sDomain + _sURL;
// API 호출 인증키
string _sSignature = HmacGenerator.GenerateHmac(_sRequestMethod, _sURL, _sQuery, _sAccess_key, _sSecret_key);
WebClient webClient;
webClient = new WebClient();
webClient.QueryString.Add("keyword", _sKeyword);
webClient.QueryString.Add("limit", _sLimit);
webClient.QueryString.Add("subId", _sSubID);
webClient.Headers.Add("Authorization", _sSignature);
Stream _sStream = webClient.OpenRead(_sAccessTokenURL);
string _sResultJson = new StreamReader(_sStream).ReadToEnd();
CoupangSearchItem _resSearchItem = JsonConvert.DeserializeObject<CoupangSearchItem>(_sResultJson);
if (_resSearchItem.rCode == "0")
{
if (_resSearchItem.data.productData.Count > 0)
{
for (int i = 0; i < _resSearchItem.data.productData.Count; i++)
{
DataRow _dr = _dt.NewRow();
_dr["RANK"] = _resSearchItem.data.productData[i].rank;
_dr["IS_ROCKET"] = _resSearchItem.data.productData[i].isRocket;
_dr["IS_FREE_SHIPPING"] = _resSearchItem.data.productData[i].isFreeShipping;
_dr["PRODUCT_ID"] = _resSearchItem.data.productData[i].productId;
_dr["IMAGE_URL"] = _resSearchItem.data.productData[i].productImage;
_dr["PRODUCT_NAME"] = _resSearchItem.data.productData[i].productName;
_dr["PRODUCT_PRICE"] = _resSearchItem.data.productData[i].productPrice;
_dr["PRODUCT_URL"] = _resSearchItem.data.productData[i].productUrl;
_dt.Rows.Add(_dr);
}
_dt.AcceptChanges();
}
}
else
{
MessageBox.Show("[" + _resSearchItem.rCode + "]" + _resSearchItem.rMessage);
}
return _dt;
}
}
public class CoupangSearchItem
{
public string rCode { get; set; }
public string rMessage { get; set; }
public CoupangProductList data { get; set; }
}
public class CoupangProductList
{
public string landingUrl { get; set; }
public List<CoupangProductData> productData { get; set; }
}
public class CoupangProductData
{
public string keyword { get; set; }
public string rank { get; set; }
public string isRocket { get; set; }
public string isFreeShipping { get; set; }
public string productId { get; set; }
public string productImage { get; set; }
public string productName { get; set; }
public string productPrice { get; set; }
public string productUrl { get; set; }
}
}
|
cs |
반응형
'Program > Language' 카테고리의 다른 글
[Python] PIL 이미지 Text 생성 가운데 정렬 (0) | 2021.07.18 |
---|---|
[Python] 코딩 스타일 가이드 #1 (0) | 2021.02.10 |
[Python] 네이버 번역 API 예제 (0) | 2020.12.03 |
[Python] googletrans 'NoneType' object has no attribute 'group' (0) | 2020.12.02 |
[Python] 카카오 지도 API 예제 (0) | 2020.09.27 |
댓글