IAP Reference Server API - ONE-store/inapp-sdk GitHub Wiki

< μ°Έκ³  >

λ³Έ λ¬Έμ„œλŠ” μ›μŠ€ν† μ–΄ 인앱 SDK v16(API v4)에 λŒ€ν•œ κ°€μ΄λ“œ λ¬Έμ„œμž…λ‹ˆλ‹€. μ΅œμ‹  μ›μŠ€ν† μ–΄ 인앱 SDK v17(API v5)에 λŒ€ν•œ κ°€μ΄λ“œ λ¬Έμ„œλŠ” μ›μŠ€ν† μ–΄ κ°œλ°œμžμ„Όν„°μ—μ„œ 제곡되고 μžˆμŠ΅λ‹ˆλ‹€.

μ΅œμ‹  인앱 SDK v17 κ°€μ΄λ“œ λ¬Έμ„œ 링크 : https://dev.onestore.co.kr/devpoc/reference/view/IAP_v17


Server API

μ›μŠ€ν† μ–΄λŠ” μ‚¬μš©μžκ°€ μ •λ‹Ήν•˜κ²Œ ν•΄λ‹Ή Item을 κ΅¬λ§€ν–ˆλŠ”μ§€μ— λŒ€ν•œ μ—¬λΆ€λ₯Ό μ‘°νšŒν•  수 μžˆλŠ” μ„œλ²„ APIλ₯Ό 2가지 ν˜•νƒœλ‘œ μ œκ³΅ν•œλ‹€.

TID ꡬ맀이λ ₯ 쑰회 API

ꡬ맀 μš”μ²­ μ‹œμ μ— κ°œλ°œμ‚¬κ°€ λ°œκΈ‰ν•œ TIDλ₯Ό ν™œμš©ν•΄μ„œ μ‚¬μš©μžμ˜ μΈμ•±μƒν’ˆ ꡬ맀 이λ ₯을 μ‘°νšŒν•˜κΈ° μœ„ν•œ API 이닀.

μ „μžμ˜μˆ˜μ¦ 검증 API

ꡬ맀 μ™„λ£Œ μ‹œμ μ— μ›μŠ€ν† μ–΄κ°€ λ°œκΈ‰ν•œ TxID와 receipt 을 ν™œμš©ν•΄μ„œ 검증 Serverλ₯Ό 톡해 μ‹€μ œ IAP Serverμ—μ„œ λ°œκΈ‰λœ 것인지λ₯Ό κ²€μ¦ν•˜κ³  λ™μ‹œμ— ꡬ맀 이λ ₯이 μ‘΄μž¬ν•˜λŠ”μ§€ 확인 κ°€λŠ₯ν•˜λ‹€. (SDKμ—μ„œλ„ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯μ΄μ§€λ§Œ, κ°œλ°œμ‚¬ μ„œλ²„κ°€ λ³„λ„λ‘œ μ‘΄μž¬ν•  경우 Server to Server ν˜ΈμΆœμ„ ꢌμž₯ν•œλ‹€)


TID ꡬ맀이λ ₯ 쑰회 API

κ΅¬λ§€μš”μ²­(sendPaymentRequest)μ‹œ κ°œλ°œμ‚¬κ°€ μƒμ„±ν•΄μ„œ λ„˜κ²¨μ£ΌλŠ” TID λ₯Ό key둜 ꡬ맀내역을 μ‘°νšŒν•œλ‹€.

API 연동 흐름

alt text

주의 사항

  • App μ„œλ²„λ₯Ό μš΄μ˜ν•˜μ§€ μ•ŠλŠ” 경우, μ „μžμ˜μˆ˜μ¦ 검증 APIλ₯Ό μ΄μš©ν•˜λŠ” 것을 ꢌμž₯ν•œλ‹€.
  • κ°œλ°œμ‚¬λŠ” TID 값을 μœ λ‹ˆν¬ κ°’μœΌλ‘œ 관리해야 ν•œλ‹€.
  • λ§Œμ•½ μ€‘λ³΅λœ TID둜 ꡬ맀 μš”μ²­μ„ ν•˜λŠ” 경우, 맨 λ§ˆμ§€λ§‰μ— μš”μ²­λœ request에 ν•΄λ‹Ή TIDκ°€ ν• λ‹Ήλ˜λ©° 이전 κ΅¬λ§€ν•œ 내역은 μ‘°νšŒκ°€ λΆˆκ°€λŠ₯ν•˜λ‹€.

TID ꡬ맀이λ ₯ 쑰회 Request

μš”μ²­URI

ꡬ뢄 URI
μƒμš© http://iap.tstore.co.kr:8090/billIntf/billinglog/billloginquiry.action
개발 http://iapdev.tstore.co.kr:8082/billIntf/billinglog/billloginquiry.action

Reference

Parameter Limit sample Description
DATE 8 20101130 μƒν’ˆκ΅¬λ§€ 일자
APPID 10 OA00012345 Application ID
TIDCNT 2 20 κ²°μ œμ •λ³΄ 확인을 μœ„ν•œ TID 개수, μ΅œλŒ€ 20κ±΄κΉŒμ§€ μ‘°νšŒκ°€λŠ₯
TID 100 `TIDCNT=2&TID=12313 12324`

TIDλŠ” TIDCNT κ°œμˆ˜μ— 맞좰 μ΅œλŒ€ 20κ°œκΉŒμ§€ μš”μ²­μ΄ κ°€λŠ₯ν•˜λ©°, β€˜|’ 둜 κ΅¬λΆ„ν•œλ‹€.

Sample

  • Example: 개발용 IAP Server둜 μš”μ²­
http://iapdev.tstore.co.kr:8082/billIntf/billinglog/billloginquiry.action?DATE=20160715&APPID=OA00027256&TIDCNT=2&TID=12313|12324
  • Example: μƒμš© IAP Server둜 μš”μ²­
http://iap.tstore.co.kr:8090/billIntf/billinglog/billloginquiry.action?DATE=20160715&APPID=OA00027256&TIDCNT=2&TID=12313|12324

TID ꡬ맀이λ ₯ 쑰회 Response

Reference

Parameter Limit sample Description
type BillingLog μš”μ²­ κ΅¬λΆ„μž "BillingLog" κ°’μœΌλ‘œ κ³ μ •
result - κ²°μ œμ •λ³΄ κ·Έλ£Ή Tag
status 4 <status>0</status> κ²°μ œμ •λ³΄ 쑰회결과 μ½”λ“œ
detail 4 <detail>0000</detail> κ²°μ œμ •λ³΄ 쑰회결과 μƒμ„Έμ½”λ“œ
message - <message>μ •μƒμ μœΌλ‘œ μ‘°νšŒλμŠ΅λ‹ˆλ‹€.</message> κ²°μ œμ •λ³΄ 쑰회결과 λ©”μ‹œμ§€
appid 10 <appid>OA00027256</appid> AID
count 2 <count>20</count> ν™•μΈλœ κ²°μ œμ •λ³΄ 개수
billing_log - <billing_log>
<item>... </item>
</billing_log>
IAP Server μ—μ„œ ν™•μΈν•œ κ°œλ³„ 결제 이λ ₯ μ •λ³΄μ˜ λͺ¨μŒμœΌλ‘œ 볡수의 <Item> element λ₯Ό 포함
Item - <item>
<tid>...</tid>
<product_id>...</product_id>
</item>
Billing log 둜 μ œκ³΅λ˜λŠ” κ°œλ³„ 결제 ν•­λͺ©μœΌλ‘œ μ„ΈλΆ€ 결제 λ‚΄μ—­μ˜ μ„€λͺ…을 μœ„ν•΄ μ•„λž˜μ™€ 같은 ν•˜μœ„ element λ₯Ό 포함
tid 100 <tid>201012226_01047637315_00000239</tid> TID
product_id 10 <product_id>0000044056</product_id> μΈμ•±μƒν’ˆID
log_time 10 <log_time>20101227103643</log_time> μƒν’ˆ κ΅¬λ§€μ‹œκ°
charging_id 11 <charging_id>11111111111</charging_id > κ²°μ œμ„±κ³΅ μ½”λ“œ (κ³ μ •κ°’)
charge_amount 7 <charge_amount>300000</charge_amount> μƒν’ˆκΈˆμ•‘
detail_pname 100 <detail_pname>μ»€μŠ€ν…€ μƒν’ˆλͺ…</detail_pname> κ΅¬λ§€μš”μ²­μ‹œ ν•„μš”ν•œ 상세 μƒν’ˆλͺ…(product_name)을 μž…λ ₯ν–ˆμ„ 경우 λ¦¬ν„΄λ˜λŠ” κ°’
선택 μž…λ ₯된 값이 없을 λ•ŒλŠ” β€˜X’ κ°€ 섀정됨
bp_info 1024 utm_source=onestore&utm_medium=iap&utm_campaign=20160325_promotion 개발자의 Application Server κ°€ ν™•μΈν•˜κΈ° μœ„ν•œ 정보
tcash_flag 1 <tcash_flag>N</tcash_flag> T store Cash μ‚¬μš© μ—¬λΆ€

Status

Code Description
0 성곡
9 μ‘°νšŒκ²°κ³Όκ°€ μ—†κ±°λ‚˜ νŒŒλΌλ―Έν„° 및 μ‹œμŠ€ν…œ 였λ₯˜

Detail

Code Description
0000 성곡
1000 ν•„μˆ˜ νŒŒλΌλ―Έν„° 였λ₯˜
2000 μ •μ˜λ˜μ§€ μ•Šμ€ μš”μ²­
3000 μš”μ²­κ°œμˆ˜ 였λ₯˜
9100 κ²°μ œμ •λ³΄ 쑰회결과 μ—†μŒ
9200 μš”μ²­κ°œμˆ˜ μ΅œλŒ€κ°’(20) 초과
9999 μ‹œμŠ€ν…œ 였λ₯˜

μ „μž 영수증 검증 API

인앱 μƒν’ˆμ— λŒ€ν•œ ꡬ맀 μ™„λ£Œ ν›„ λ°œκΈ‰λ˜λŠ” μ „μž 영수증(receipt)의 검증을 μˆ˜ν–‰ν•  수 μžˆλŠ” API둜 SDKλ₯Ό ν†΅ν•΄μ„œ App2Server둜 μš”μ²­/응닡을 받을 수 μžˆλ‹€. μ „μž 영수증 검증은 ꡬ맀 μ™„λ£Œ ν›„ 10λΆ„ μ΄λ‚΄μ˜ λ‚΄μ—­λ§Œ 쑰회 κ°€λŠ₯ν•˜λ©° ν˜„μž¬λŠ” 단일 쑰회만 κ°€λŠ₯ν•˜λ‹€.

API 연동 흐름

Built-in Model

μ„œλ²„μ—†μ΄ λ™μž‘ν•˜λŠ” Built-in Model의 경우, Appλ‚΄μ—μ„œ IAP Libraryλ₯Ό 톡해 결제 μ™„λ£Œ 톡보λ₯Ό λ°›κ²Œ λ˜λŠ”λ°, Applicationμ—μ„œλŠ” λ³Έ 연동 흐름을 톡해 μ•„μ΄ν…œ λ°œκΈ‰(κΆŒν•œ λΆ€μ—¬ λ“±) 처리 전에 μ‹€μ œ IAP Serverλ₯Ό 톡해 ν•΄λ‹Ή μƒν’ˆμ— λŒ€ν•œ κ²°μ œκ°€ μ •μƒμ μœΌλ‘œ μ™„λ£Œλ˜μ—ˆλŠ”μ§€λ₯Ό 확인할 수 μžˆλ‹€.

alt text

μ‹€μ„ : ν•„μˆ˜

점선: 선택

Server to Server

μ„œλ²„ μ—°λ™ν˜• μƒν’ˆμ˜ 경우, App μ„œλ²„μ—μ„œ IAP μ„œλ²„μ™€ 연동을 ν†΅ν•˜μ—¬ λ°œκΈ‰λœ μ „μž 영수증 검증 μš”μ²­ν•˜λ„λ‘ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯이닀. μ•„λž˜ μ‹œλ‚˜λ¦¬μ˜€λŠ” μ˜ˆμ‹œμ΄λ©°, App의 μ„œλΉ„μŠ€ μ‹œλ‚˜λ¦¬μ˜€μ— 따라 적절히 κ΅¬ν˜„λ  수 μžˆλ‹€.

alt text

μ‹€μ„ : ν•„μˆ˜

점선: 선택


μ „μžμ˜μˆ˜μ¦ 검증 Request

μš”μ²­ λ°μ΄ν„°λŠ” JSON ν˜•μ‹μ„ 가지며 상세 κ·œκ²©μ€ λ‹€μŒκ³Ό κ°™λ‹€.

μš”μ²­URI

ꡬ뢄 URI
μƒμš© https://iap.tstore.co.kr/digitalsignconfirm.iap
개발 https://iapdev.tstore.co.kr/digitalsignconfirm.iap

Reference

Parameter Type Mandatory Limit sample Description
txid String M 40 TSTOREXXXX_20150515102510XXXXXXXXXXXXXXX 영수증 번호
appid String M 10 OA00012345 AID
signdata String M ~5kb - μ „μžμ˜μˆ˜μ¦ 데이터

Sample

{
	"txid":"TSTORE0004_20150515102510XXXXXXXXXXXXXXX",
	"appid":"OA00012345",
	"signdata":"MIIH7QYJKoZIhvcNAQcCoIIH3jCCB9oCAQExDzANBglghkgBZQMEAMIIH7QYJKdDFDFFEFEFEFoZIhvcNAQcCoIIH3jCCB9oCAQExDzANBglghkgBZQMEA" 
}  

μ „μžμ˜μˆ˜μ¦ 검증 Response

IAP μ„œλ²„λŠ” μš”μ²­ ν”„λ‘œν† μ½œλ‚΄μ— ν¬ν•¨λœ μ „μž μ˜μˆ˜μ¦μ— λŒ€ν•œ 검증 μˆ˜ν–‰ ν›„ 결과값을 JSON 데이터 둜 μƒμ„±ν•˜μ—¬ μš”μ²­μžμ—κ²Œ μ „λ‹¬ν•œλ‹€.

Reference

Parameter Type Mandatory Limit sample Description
status Number M 1 0 검증 κ²°κ³Ό 리턴 μ½”λ“œ
detail String M 4 0000 검증 κ²°κ³Ό 상세 μ½”λ“œ
message String M - μ •μƒκ²€μ¦μ™„λ£Œ 검증 κ²°κ³Ό λ©”μ‹œμ§€
count Number O 1 1 쑰회 μƒν’ˆ 수, ν˜„μž¬λŠ” 1κ±΄μ”©λ§Œ μ‘°νšŒκ°€λŠ₯
product Array O - - ꡬ맀된 μƒν’ˆ 정보 (μ„±κ³΅μ‹œ, ν•„μˆ˜)

Product

Parameter Type Mandatory Limit sample Description
log_time String M 14 20160321154451 ꡬ맀 이λ ₯ μ‹œκ°„ (YYYYMMDDHHMMSS)
appid String M 10 OA00012345 AID
product_id String M 10 0000044056 μΈμ•±μƒν’ˆID
charge_amount Number M 6 300000 ꡬ맀 μƒν’ˆ κΈˆμ•‘
tid String O 100 201012226_01047637315_00000239 κ΅¬λ§€μš”μ²­μ‹œ κ°œλ°œμ‚¬κ°€ λ°œκΈ‰ν•œ TID
detail_pname String O 100 μ»€μŠ€ν…€ μƒν’ˆλͺ… κ΅¬λ§€μš”μ²­μ‹œ ν•„μš”ν•œ 상세 μƒν’ˆλͺ…(product_name)을 μž…λ ₯ν–ˆμ„ 경우 λ¦¬ν„΄λ˜λŠ” κ°’
선택 μž…λ ₯된 값이 없을 λ•ŒλŠ” β€˜X’ κ°€ 섀정됨
bp_info String O 1024 utm_source=onestore&utm_medium=iap&utm_campaign=20160325_promotion 개발자의 Application Server κ°€ ν™•μΈν•˜κΈ° μœ„ν•œ 정보

Status

Code Description
0 성곡
9 μ‘°νšŒκ²°κ³Όκ°€ μ—†κ±°λ‚˜ νŒŒλΌλ―Έν„° 및 μ‹œμŠ€ν…œ 였λ₯˜

Detail

Code Description Note
0000 성곡
1000 ν•„μˆ˜ νŒŒλΌλ―Έν„° λΆ€μ‘± 쑰회 μš”μ²­μ‹œ TXID, APPID, signdata 쀑 νŒŒλΌλ―Έν„°κ°€ λΆ€μ‘±ν•  λ•Œ λ°œμƒν•˜λŠ” μ½”λ“œ
9100 κ²°μ œμ •λ³΄ 쑰회결과 μ—†μŒ signdata둜 κ΅¬λ§€ν•œ 이λ ₯이 없을 경우
9113 μ „μžμ˜μˆ˜μ¦ 데이터 μœ νš¨μ„± 검증 였λ₯˜
9999 μ‹œμŠ€ν…œ 였λ₯˜ μ‹œμŠ€ν…œ μ—λŸ¬λŠ” IAP λ‚΄λΆ€ 였λ₯˜λ‘œμ¨ λ°œμƒν•  경우 κ°œλ°œμžμ„Όν„°μ— 문의 ν•„μš”

Sample

{
	"status" : 0,
	"detail" : "0000",
	"message" : "μ •μƒκ²€μ¦μ™„λ£Œ", 
	"count" : 1,
	"product" : [{
		"log_time" : "20120321154451", 
		"appid" : "OA12345678", 
		"product_id" : "0900012345", 
		"charge_amount" : 1000,
		"tid" : "201012226_01047637315_00000239",
		"detail_pname" : "μ»€μŠ€ν…€ μƒν’ˆλͺ…",
		"bp_info" : "X"}]
}

μœ μ˜μ‚¬ν•­

Android app μ—μ„œλŠ” λ‹€μ–‘ν•œ 방법을 톡해 μ•„μ΄ν…œμ— λŒ€ν•œ λΆ€μ • 취득을 μ‹œλ„ν•  수 μžˆμœΌλ―€λ‘œ App μ„œλ²„μ—μ„œλŠ” IAP Serverλ‘œλΆ€ν„° μ „λ‹¬λ˜λŠ” μ‘λ‹΅μ˜ λ‚΄μš©μ„ μΆ”κ°€μ μœΌλ‘œ ν™•μΈν•˜μ—¬ μ•„μ΄ν…œ λ°œκΈ‰μ— λŒ€ν•œ 처리λ₯Ό ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€. App μ„œλ²„μ—μ„œλŠ” λ‹€μ–‘ν•œ λΆ€μ • 취득 μ‹œλ„λ₯Ό 막기 μœ„ν•΄μ„œ ν•˜κΈ°μ™€ 같은 방법을 μ‚¬μš©ν•˜κΈ°λ₯Ό κ°•λ ₯ ꢌμž₯ν•œλ‹€.

  • Appμ—μ„œ μ•„μ΄ν…œ λ°œκΈ‰μ„ μš”μ²­ν•œ μƒν’ˆμ˜ 정보와 μ „μžμ˜μˆ˜μ¦ 검증APIλ₯Ό 톡해 μ‘λ‹΅λœ 정보 (appid, product_id, charge_amount λ“±)κ°€ μΌμΉ˜ν•˜λŠ”μ§€ μ—¬λΆ€λ₯Ό 확인
  • ꡬ맀 이λ ₯ μ‹œκ°„(log_time)을 ν™•μΈν•˜μ—¬ 일정 μ‹œκ°„ 이상(5λΆ„ 이내 ꢌμž₯) μ§€λ‚œ ꡬ맀 건에 λŒ€ν•΄μ„œλŠ” μ•„μ΄ν…œ λ°œκΈ‰μ„ κ±°λΆ€
  • νŠΉμ • TID에 λŒ€ν•΄ Item λ°œκΈ‰μ΄ μ •μƒμ μœΌλ‘œ 처리된 경우, ν•΄λ‹Ή 이λ ₯을 μ €μž₯ν•œ 후에 λ™μΌν•œ TID둜 Item λ°œκΈ‰ μš”μ²­μ΄ μ˜€λŠ” κ²½μš°λŠ” λΆ€μ •ν•œ μž¬μ‹œλ„λ‘œ νŒλ‹¨ν•˜κ³  ν•΄λ‹Ή μ•„μ΄ν…œ λ°œκΈ‰ μš”μ²­μ„ κ±°λΆ€
  • κ²°μ œμ€‘ Application의 비정상적인 μ’…λ£Œλ‚˜ λ„€νŠΈμ›Œν¬ 였λ₯˜κ°€ λ°œμƒν•˜λŠ” 경우, sendCommandRequest λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ ꡬ맀 내역을 확인 ν›„ κ΅¬λ§€ν•œ μ•„μ΄ν…œμ„ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” λ‘œμ§μ„ ꢌμž₯함.
⚠️ **GitHub.com Fallback** ⚠️