2014년 8월 26일 화요일

SInAppPurchase for GooglePlay - 아이템 타입 에따른 처리 방법

아이템 타입에 따른 처리 방법  


구글플레이에서 인앱결제 시스템으로 제공해주는 아이템타입

구글 개발자 콘솔에서 아이템 추가시 선택가능
아이템 추가 완료후 화면


1. 관리되는 제품(소모 불가능 제품) 

   - 한번 구매후 다시 구매할수 없는 상품 입니다.(프리미엄 계정및, 광고 제거 아이템)

2.관리되지 않는 제품(소모 가능 제품)

   - 소모후 다시 구매가 가능한 상품 입니다. (게임머니, 특수 기능 아이템)

3. 구독 제품

   - 월, 년 기준으로 일정금액이 지속적으로 청구되는 상품 입니다.








아이템 타입에 따른 처리 방법

아이템 타입에 따른 구매 처리 방식

1. 관리되는 제품(소모 불가능 제품)

    - 클라이언트 실행시 구글빌링서버에 인벤토리 정보를 요청하여 관리되는 제품의 구매정보가 있거나, 관리되는 제품을 구매 완료 했을 경우 해당 유료 아이템을 적용, 사용하도록 합니다


2. 관리되지 않는 제품(소모 가능 제품)

    - 클라이언트 실행시 구글빌링서버에 인벤토리 정보를 요청하여 관리되지 않는 제품의 구매정보가 있거나, 관리되지 않는 제품을 구매 완료했을 경우 해당 유료 아이템을 사용하고 구글 빌링서버에 소모통보(Consume) 를 해야 다시 재구매가 가능합니다.

3. 구독 제품

    - 클라이언트 실행시 구글빌링서버에 인벤토리 정보를 요청하여 구독 제품의 구매 정보가 있거나, 구독 제품을 구매 완료 했을 경우 해당 유료 아이템을 적용, 사용 하도록 합니다

SInAppPurchase for GooglePlay - GooglePlayConsumeRequestDataAPI설명

namespace SPlugins
{
 public class GooglePlaySKUDetailData
 {
  //아이템 아이디
  public string sku { get; set; }

  //구매 완료후 받아온 아이템 정보의 token 
  //GooglePlayPurchaseData.token 값 사용
  public string token { get; set; }
 }
}/*namespace SPlugins*/

2014년 8월 25일 월요일

SInAppPurchase for GooglePlay - GooglePlaySKUDetailData API설명

namespace SPlugins
{
 public class GooglePlaySKUDetailData
 {
  //아이템 아이디
  public string sku { get; set; }

  //아이템 타입 "inapp" - 구매 제품, "subs" - 구독 제품
  //Value must be “inapp” for an in-app product or "subs" for subscriptions.
  public string ItemType { get; set; }

  //판매 가격
  //Formatted price of the item, including its currency sign. 
  //The price does not include tax.
  public string price { get; set; }

  //판매 아이템 이름
  //Title of the product.
  public string title { get; set; }

  //판매 아이템 설명
  //Description of the product.
  public string description { get; set; }

  //빌링 서버에서 보내준 JSON 형식 데이터
  public string originalJsonData { get; set; }
 }
}/*namespace SPlugins*/

SInAppPurchase for GooglePlay - GooglePlayPurchaseData API설명

namespace SPlugins
{
 public class GooglePlayPurchaseData
 {
  //아이템 타입 "inapp" - 구매 제품, "subs" - 구독 제품
  //Value must be “inapp” for an in-app product or "subs" for subscriptions.
  public string ItemType { get; private set; }

  //결제 아이디
  //A unique order identifier for the transaction. 
  //This corresponds to the Google Wallet Order ID.
  public string orderID { get; private set; }

  //APK 패키지 이름
  //The application package from which the purchase originated.
  public string packagaeName { get; private set; }

  //아이템 아이디
  public string sku { get; private set; }

  //구매한 시간
  //The time the product was purchased, 
  //in milliseconds since the epoch (Jan 1, 1970).
  public string purchaseTime { get; private set; }

  //구매 목록 상태 0-구매완료, 1-구매취소, 2-환불
  //The purchase state of the order. Possible values are 
  //0 (purchased), 1 (canceled), or 2 (refunded).
  public string purchaseState { get; private set; }

  //구매 처리시 생성한 developerPayload
  //A developer-specified string that contains supplemental information 
  //about an order. You can specify a value for 
  //this field when you make a IAP.PurchaseAsync
  public string developerPayload { get; private set; }

  //Consume처리시 사용하는 토큰, 
  //A token that uniquely identifies a purchase 
  //for a given item and user pair.
  public string token { get; private set; }

  public string originalJsonData { get; private set; }

  //보안 검증에 사용하는값, 어플리케이션 마다 할당 받은 키값과
  //signature 값을 통해 영수증 유효 여부를 처리할수 있습니다
  public string signature { get; private set; }
 }
}/*namespace SPlugins*/

SInAppPurchase for GooglePlay - IAP API설명

namespace SPlugins
{
 public static class IAP
 {
  /// 로그 콜백 함수를 지정합니다
  /// enable_ : 로그 여부 셋팅값 입니다
  /// delegateLog_: 로그 정보를 받아올 콜백 함수 입니다
  public static void EnableLog(bool enable_, 
   Action〈unityengine .logtype="" string=""> delegateLog_)
  

  /// 결제 시스템을 초기화 합니다. 결제 관련 모든 명령어 전에 초기화 되어야 합니다
  /// 키값이 NULL 또는 empty 일경우 보안 검증을 하지 않습니다
  /// base64PublicKey_ : 구글 개발자 콘솔에서 어플리케이션 마다 
  /// 할당받은 키값을 적용합니다.
  public static IAPResult Initialize(string base64PublicKey_)
  

  /// 결제 처리를 더이상 하지 않을때 호출 합니다
  public static void Terminate()
  
  /// 구매한 아이템 정보및 판매중인 아이템의 세부 정보를 얻어올수 있습니다
  /// querySubscription_ : 구독 아이템 정보를 포함할지 여부 입니다
  /// queryDetailSKUList_ : 세부 정보를 받아올 아이템 아이디 리스트 입니다
  /// delegateCompleted_ : 인벤토리 정보의 결과값을 받아올 콜백 함수 입니다
  public static void QueryInventoryAsync(bool querySubscription_, 
   List〈string> queryDetailSKUList_, 
   Action〈GooglePlayQueryInventoryResultData> delegateCompleted_)
  

  /// 아이템 구매시 사용하는 함수입니다
  /// sku_ : 구매할 아이템 아이디 입니다
  /// developerPayload_ : 구매 완료 영수증 정보에 포함되는 값입니다. 
  /// 이값을 이용하여 보안검증을 할수 있습니다
  /// isSubscription_ : 구매 하려는 아이템이 구독 아이템인지 여부 입니다
  /// delegateCompleted_ : 구매 완료시 호출되는 콜백 함수 입니다
  public static void PurchaseAsync(string sku_, 
   string developerPayload_,
   bool isSubscription_, 
   Action〈GooglePlayPurchaseResultData> delegateCompleted_)
  

  /// 소모성 아이템을 경우 구글빌링서버에 아이템을 소모하겠다고 통보하는 함수 입니다
  /// consumeRequestDataList_ : 소모 요청 아이템이 여러개 일경우 
  /// 리스트에 아이템 정보를 담아서 요청 합니다
  /// delegateCompleted_ : 소모 완료 콜백 함수 입니다
  public static void ConsumeAsync(
   List〈GooglePlayConsumeRequestData> consumeRequestDataList_, 
   Action〈GooglePlayConsumeResultData> delegateCompleted_)
  

  /// 소모성 아이템을 경우 구글빌링서버에 아이템을 소모하겠다고 통보하는 함수 입니다
  /// consumeRequestData_ : 소모 요청할 아이템 정보 입니다
  /// delegateCompleted_ : 소모 완료 콜백 함수 입니다
  public static void ConsumeAsync(
   GooglePlayConsumeRequestData consumeRequestData_, 
   Action〈GooglePlayConsumeResultData> delegateCompleted_)
  
 }/*class IAP*/
}/*namespace SPlugins*/

2014년 8월 22일 금요일

SInAppPurchase for GooglePlay - 설명

특징

- Unity 엔진에서 간단하게 적용가능한 인앱 결제 플러그인 입니다

- 별도의 외부 작업 없이 몇번의 함수 호출로 쉽게 Google Play의 인앱 구매가 가능합니다

- Google Play의 인앱결제 시스템 버전3을 사용합니다

- Google Play 인앱 결제의 자세한 설명은 아래 링크를 참고 바랍니다

https://developer.android.com/google/play/billing/index.html?hl=az


샘플 화면

결제 화면

결제 성공 화면


2014년 7월 28일 월요일

SRemoteConsole-Preferences


Preferences Window
 - 필터 문자를 등록하거나, 레이아웃 구성등을 변경 합니다



Custom Filters
   - 필터 문자열을 등록하거나 삭제할수 있습니다

ProfilerRefreshTimes(S)
   - 실시간 메모리 사용량 및 FPS 정보를 받아오는 간격을 조절합니다

SkipStackFrameCount
   -SPlugins.SRemoteConsole.Log 함수를 사용시 적용됩니다  
   -스택 정보를 얻어올때 무시할 스택프레임 수를 지정합니다
   -Log클래스를 Wrapper 하여 사용할경우 유용합니다
소스 코드

프레임 스킵 이 0일때 CallStack3 함수의 스택 정보가 표시됩니다

프레임 스킵을 1로 변경후 표시되야되는 CallStack3함수가 무시 됩니다


SkipStackFrameCountOnCallback
   -UnityEngine.Debug.Log 함수 사용시 적용 됩니다
   -스택 정보를 얻어올때 무시할 스택프레임 수를 지정합니다
   -Log클래스를 Wrapper 하여 사용할경우 유용합니다
소스 코드

프레임 스킵 이 0일때 CallStack3 함수의 스택 정보가 표시됩니다

프레임 스킵을 1로 변경후 표시되야되는 CallStack3함수가 무시 됩니다


Show Time
   -Log뷰에서 Time 정보 표시 여부

Show FrameCount
   -Log뷰에서 FrameCount 정보 표시 여부

Show ObjectName
   -Log뷰에서 오브젝트 이름 표시 여부

LogFileType
   -Log파일 저장시 포맷 형식을 지정 합니다

SvaeDirectory
   -로그 파일이 저장된 폴더 위치를 표시 합니다

SvaeFile
   -파일 저장 위치를 표시 합니다