서버 측 IAP 인증을 설정하는 단계입니다.
now.gg 코딩 없이 결제 시스템은 구매의 진위 여부를 확인하기 위해 서버 측 인증을 사용하며 이후 게임은 구매한 상품을 유저에게 전달하고 구매를 소비한 것으로 표시합니다.
방법:
now.gg 코딩 없이 결제의 작업 프로세스는 다음과 같습니다.
now.gg 코딩 없이 결제를 사용하여 인앱 구매를 인증하실 수 있습니다.
purchase token
(구매 토큰)을 받게 됩니다.-nowgg-
로 시작하며 이를 사용하여 now.gg의 인앱 구매를 식별할 수 있습니다.다음은 예시입니다.
def verify_purchase(package_name, product_id, purchase_token): # 게임별 인증 로직 if purchase_token.startswith("-nowgg-"): response = verify_purchase_with_nowgg( package_name, product_id, purchase_token) else: # 다른 방식을 통해 계속 인증합니다. # 게임별 응답 처리 로직
다음 샘플 코드는 verifyPurchase
API 관련 요청 방식을 보여드립니다.
import requests url = "https://payments-api.now.gg/v2/seller/order/verifyPurchase" payload = 'purchaseToken=<nowgg_purchase_token>' headers = { 'Authorization': '<payment_api_key_here>', 'Content-Type': 'application/x-www-form-urlencoded' } response = requests.request("POST", url, headers=headers, data=payload) print(response.text)
purchaseToken
을 사용합니다.Payments API Key
는 nowStudio의 자격 증명에 있습니다. (자세히)다음은 verifyPurchase
API의 샘플 응답 메시지입니다.
{ "success": true, "code": 0, "codeMsg": "success", "data": { "purchaseTimeMillis": "1630529397125", // 이 필드는 더 이상 사용되지 않으므로, purchaseTime을 사용하세요. "purchaseTime": "1630529397125", "purchaseState": 0, "consumptionState": 0, "developerPayload": "<developer_payload>", "orderId": "<orderId_here>", "kind": "nowgg#productPurchase", "regionCode": "US", "currency": "USD", "packageName": "<package_name>", "payStatusTxt": "Paid", "orderAmount": "25.15", "isTestOrder": false, "payTimeTxt": "2024 - 10 - 3006: 08: 01", "sellerGoodsId": "11223343" } }
매개변수 | 유형 | 설명 |
---|---|---|
success | boolean | 성공 여부를 true 또는 false로 반환합니다. |
code | int | 성공 시 0을 반환하고, 실패 시 0이 아닌 값을 반환합니다. |
codeMsg | string | 에러 코드와 관련된 메시지를 반환합니다. (여기에서 제공) |
purchaseTimeMillis (사용 중단 ) | string | 제품이 구매된 시간(밀리초 단위의 epoch 시간)을 반환합니다. 이 필드는 더 이상 사용되지 않으므로, purchaseTime을 사용하세요. |
purchaseTime | string | 제품이 구매된 시간, 에포크 이후의 초 단위 시간입니다. |
purchaseState | int | 주문의 구매 상태를 반환합니다. 가능한 값은 다음과 같습니다: 0: 미지급, 1: 지급됨, 2: 실패 |
consumptionState | int | 인앱 제품의 소비 상태를 반환합니다. 가능한 값은 다음과 같습니다: 0: 아직 소비되지 않음, 1: 소비됨 |
developerPayload | string | 주문에 대한 보충 정보를 포함하는 개발자가 지정한 문자열입니다. |
orderId | string | 각 인앱 구매 제품에 연결된 주문 ID(고유 거래 식별자)입니다. |
kind | string | 하드코딩된 유형인 nowgg#productPurchase 로 구매된 인앱 제품 유형을 나타냅니다. |
regionCode | string | 제품이 할당된 시점의 사용자의 ISO 3166-1 alpha-2 청구 지역 코드입니다. |
currency | string | 구매 통화입니다. 예: USD, KRW |
packageName | string | 앱과 연결된 packageName 입니다. |
payStatusTxt | string | 결제 상태로 결제 완료 또는 미결제입니다. |
orderAmount | string | 구매 관련 orderAmount 입니다. |
isTestOrder | boolean | 테스트 중 주문이 생성될 시 결과를 true 또는 false로 반환합니다. |
payTimeTxt | string | 구매 결제 날짜 및 시간입니다. |
sellerGoodsId | string | 구매한 상품과 연결된 상품 ID입니다. |
구매를 인증한 후에는 소비됨으로 표시해야 합니다.
구매 소비에는 다음이 포함됩니다.
다음 샘플 코드는 consumePurchase
API를 통한 관련 요청 방법을 보여드립니다.
import requests url = "https://payments-api.now.gg/v2/order/consumePurchase" payload = 'purchaseToken=nowgg-_purchase_token' headers = { 'Authorization': 'payment_api_key_here', 'Content-Type': 'application/x-www-form-urlencoded' } response = requests.request("POST", url, headers=headers, data=payload) print(response.text)
purchaseToken
을 사용합니다.Payments API Key
는 nowStudio의 자격 증명에 있습니다. (자세히)다음은 consumePurchase
API의 샘플 응답 메시지입니다.
} "success": true, "code": 0, "codeMsg": "success", "data": {} }
변수 | 형 | 설명 |
---|---|---|
success | boolean | 성공 여부를 true 또는 false로 반환합니다. |
code | int | 성공하면 0을 반환하고 실패하면 0이 아닌 값을 반환합니다. |
codeMsg | string | 오류 코드와 관련된 메시지를 반환합니다. (여기서 제공) |
data | object | 응답 메시지로 반환된 데이터입니다. |
코드 | 메시지 | 설명 |
---|---|---|
3800 | ERROR_CONSUMING_PRODUCT | 제품을 소비하는 중에 오류가 발생했습니다. |
3900 | INVALID_AUTHORIZATION_KEY | 승인을 위해 제공된 API 키가 잘못되었습니다. |
3901 | INVALID_PURCHASE_TOKEN | 제공된 구매 토큰이 잘못되었습니다. |
다음 다이어그램은 ‘코딩 없이 결제’의 전체 흐름을 보여드립니다.
목차
목차
문서 Rev. 1.0