서버 설정 (코딩 없이 결제)

서버 측 IAP 인증을 설정하는 단계입니다.

now.gg 코딩 없이 결제 시스템은 구매의 진위 여부를 확인하기 위해 서버 측 인증을 사용하며 이후 게임은 구매한 상품을 유저에게 전달하고 구매를 소비한 것으로 표시합니다.

방법:

  • nowStudio에서 ‘코딩 없이 결제’을 선택합니다. (자세히)
  • 아래 단계를 통해 ‘코딩 없이 결제’ 관련 서버측 설정을 완료합니다.

순서

now.gg 코딩 없이 결제의 작업 프로세스는 다음과 같습니다.

  • 유저가 구매할 인앱 상품을 선택합니다.
  • now.gg 결제 모듈이 실행됩니다.
  • 결제가 성공적으로 처리되면 게임은 구매 토큰을 수령합니다.
  • 게임은 인증을 위해 구매 토큰을 게임 서버로 보냅니다.
  • 게임 서버는 now.gg 서버를 통해 구매 토큰을 인증합니다.
  • 게임은 인증에 성공하면 구매한 인앱 상품을 유저에게 할당합니다.

서버 설정

아래는 ‘코딩 없이 결제’의 서버 측 설정 단계를 설명합니다.
내용

1. 구매 인증

now.gg 코딩 없이 결제를 사용하여 인앱 구매를 인증하실 수 있습니다.

중요

  • 이미 다른 방식을 통해 구매를 확인하고 있는 경우 이미 사용하고 있는 동일한 URL 핸들러를 통해 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:
        # 다른 방식을 통해 계속 인증합니다.

   # 게임별 응답 처리 로직

now.gg 샘플 인증 코드

다음 샘플 코드는 verifyPurchase API 관련 요청 방식을 보여드립니다.

import requests

  url = "https://cloud-api.bluestacks.cn/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 – URL 핸들러에서 받은 purchaseToken을 사용합니다.
  • API 키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입니다.


2. 상품 소비

구매를 인증한 후에는 소비됨으로 표시해야 합니다.

구매 소비에는 다음이 포함됩니다.

  • 구매한 제품을 유저에게 할당합니다.
  • 제품이 소비되었음을 now.gg에 알립니다.

샘플 코드

다음 샘플 코드는 consumePurchase API를 통한 관련 요청 방법을 보여드립니다.

import requests

  url = "https://cloud-api.bluestacks.cn/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)

Important Information중요

  • PurchaseToken – URL 핸들러에서 받은 purchaseToken을 사용합니다.
  • API 키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 제공된 구매 토큰이 잘못되었습니다.

시퀀스 다이어그램

다음 다이어그램은 ‘코딩 없이 결제’의 전체 흐름을 보여드립니다.

×
클립보드에 복사된 텍스트
copyLinkText
질문이 있으신가요? 다음 주소로 문의하세요. dev-support@now.gg