호출해보기
테스트 키를 사용하여 카탈로그 조회부터 쿠폰 발송까지 한 사이클을 완주합니다. 실제 과금이나 MMS 발송은 발생하지 않습니다.
1단계: 카탈로그 조회
발송 가능한 쿠폰 목록을 조회합니다.
- cURL
- Node.js
- Python
- Java
curl -u "test_sk_your_key_here:" \
https://api.aiconbiz.kr/v1/coupons
const secretKey = 'test_sk_your_key_here';
const encoded = Buffer.from(`${secretKey}:`).toString('base64');
const res = await fetch('https://api.aiconbiz.kr/v1/coupons', {
headers: { 'Authorization': `Basic ${encoded}` },
});
const data = await res.json();
console.log(data);
import base64
import requests
secret_key = "test_sk_your_key_here"
encoded = base64.b64encode(f"{secret_key}:".encode()).decode()
res = requests.get(
"https://api.aiconbiz.kr/v1/coupons",
headers={"Authorization": f"Basic {encoded}"},
)
data = res.json()
print(data)
import java.net.URI;
import java.net.http.*;
import java.util.Base64;
String secretKey = "test_sk_your_key_here";
String encoded = Base64.getEncoder()
.encodeToString((secretKey + ":").getBytes());
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.aiconbiz.kr/v1/coupons"))
.header("Authorization", "Basic " + encoded)
.GET()
.build();
HttpResponse<String> response = client.send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
응답에서 couponId와 capabilities를 확인합니다.
{
"items": [
{
"couponId": "cpn_01JNX8D7W7F6J0QYJ7YQ6G7M2R",
"name": "스타벅스 아메리카노 T",
"brandName": "스타벅스",
"price": 4500,
"capabilities": ["SEND", "PIN"]
}
],
"nextCursor": null
}
capabilities에 "SEND"가 포함되어 있으면 MMS 발송이 가능하고, "PIN"이 포함되어 있으면 PIN 발급이 가능합니다.
2단계: 쿠폰 발송
카탈로그에서 확인한 couponId로 쿠폰을 발송합니다.
- cURL
- Node.js
- Python
- Java
curl -X POST https://api.aiconbiz.kr/v1/coupons/issued/send \
-u "test_sk_your_key_here:" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
-d '{
"couponId": "cpn_01JNX8D7W7F6J0QYJ7YQ6G7M2R",
"receiver": {
"phone": "01012345678"
},
"message": {
"content": "테스트 발송입니다."
}
}'
const res = await fetch('https://api.aiconbiz.kr/v1/coupons/issued/send', {
method: 'POST',
headers: {
'Authorization': `Basic ${encoded}`,
'Content-Type': 'application/json',
'Idempotency-Key': crypto.randomUUID(),
},
body: JSON.stringify({
couponId: 'cpn_01JNX8D7W7F6J0QYJ7YQ6G7M2R',
receiver: { phone: '01012345678' },
message: { content: '테스트 발송입니다.' },
}),
});
const data = await res.json();
console.log(data.issuanceId);
import base64
import uuid
import requests
secret_key = "test_sk_your_key_here"
encoded = base64.b64encode(f"{secret_key}:".encode()).decode()
res = requests.post(
"https://api.aiconbiz.kr/v1/coupons/issued/send",
headers={
"Authorization": f"Basic {encoded}",
"Content-Type": "application/json",
"Idempotency-Key": str(uuid.uuid4()),
},
json={
"couponId": "cpn_01JNX8D7W7F6J0QYJ7YQ6G7M2R",
"receiver": {"phone": "01012345678"},
"message": {"content": "테스트 발송입니다."},
},
)
data = res.json()
print(data["issuanceId"])
import java.net.URI;
import java.net.http.*;
import java.util.Base64;
import java.util.UUID;
String secretKey = "test_sk_your_key_here";
String encoded = Base64.getEncoder()
.encodeToString((secretKey + ":").getBytes());
String body = """
{
"couponId": "cpn_01JNX8D7W7F6J0QYJ7YQ6G7M2R",
"receiver": {
"phone": "01012345678"
},
"message": {
"content": "테스트 발송입니다."
}
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.aiconbiz.kr/v1/coupons/issued/send"))
.header("Authorization", "Basic " + encoded)
.header("Content-Type", "application/json")
.header("Idempotency-Key", UUID.randomUUID().toString())
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> response = client.send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
202 Accepted 응답과 함께 issuanceId를 받습니다. 쿠폰 발송은 비동기로 처리되므로 이 시점에서 실제 발송이 완료된 것은 아닙니다.
{
"issuanceId": "iss_018d8f3a2b4c5d6e7f8a9b0c1d2e3f4a",
"couponId": "cpn_01JNX8D7W7F6J0QYJ7YQ6G7M2R",
"orderId": null,
"orderNumber": "123456789012"
}
3단계: 결과 확인
issuanceId로 발급 상태를 조회합니다.
- cURL
- Node.js
- Python
- Java
curl -u "test_sk_your_key_here:" \
"https://api.aiconbiz.kr/v1/coupons/issued?id=iss_018d8f3a2b4c5d6e7f8a9b0c1d2e3f4a"
const secretKey = 'test_sk_your_key_here';
const encoded = Buffer.from(`${secretKey}:`).toString('base64');
const res = await fetch(
'https://api.aiconbiz.kr/v1/coupons/issued?id=iss_018d8f3a2b4c5d6e7f8a9b0c1d2e3f4a',
{ headers: { 'Authorization': `Basic ${encoded}` } },
);
const data = await res.json();
console.log(data);
import base64
import requests
secret_key = "test_sk_your_key_here"
encoded = base64.b64encode(f"{secret_key}:".encode()).decode()
res = requests.get(
"https://api.aiconbiz.kr/v1/coupons/issued",
params={"id": "iss_018d8f3a2b4c5d6e7f8a9b0c1d2e3f4a"},
headers={"Authorization": f"Basic {encoded}"},
)
data = res.json()
print(data)
import java.net.URI;
import java.net.http.*;
import java.util.Base64;
String secretKey = "test_sk_your_key_here";
String encoded = Base64.getEncoder()
.encodeToString((secretKey + ":").getBytes());
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.aiconbiz.kr/v1/coupons/issued?id=iss_018d8f3a2b4c5d6e7f8a9b0c1d2e3f4a"))
.header("Authorization", "Basic " + encoded)
.GET()
.build();
HttpResponse<String> response = client.send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
coupon.status와 message.status로 발급 및 발송 결과를 확인할 수 있습니다. aicon 콘솔에서도 결과를 확인할 수 있습니다.
{
"id": "iss_018d8f3a2b4c5d6e7f8a9b0c1d2e3f4a",
"type": "SEND",
"coupon": { "status": "ISSUED" },
"message": { "status": "SENT" }
}