서버 측 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-purchaseToken'
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