2026/03 9

Apple IAP 서버 검증 in ASP.NET Server

1. 일단 Apple에서 .p8키 파일을 받아야합니다.https://appstoreconnect.apple.com/ https://appstoreconnect.apple.com/ appstoreconnect.apple.com위의 주소로 가서 사용자 및 액세스 > 통합(개인 일 경우 여기로 가야함) > App Store Connect API액세스 요청 보통 보안을 위해 전체 API키 생성보다는 보안상 IAP 전용키를 만드는것이 좋다고합니다.따라서 앱 내 구매 탭으로 이동해 여기서 key을 생성해 줍니다. 파일 다운로드 전 체크!Issuer ID: 액세스 요청 후 화면 상단에 나타나는 값입니다.Key ID: 키를 생성하면 목록에 나타나는 10자리 값입니다.다운로드: .p8 파일은 한 번만 다운로드 가능하..

ASP.NET 2026.03.23

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''' WHERE orderId = '') AS Value

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''' WHERE orderId = '') AS Value 위와 같은 오류가 아래의 코드를 했을 때 일어났습니다.FormattableString sql = $"SELECT EXISTS (SELECT 1 FROM {dbTable} WHERE orderId = {productId}) AS Value";int exists = await _dbContext.Database.SqlQuery(sql).SingleAsync(); 이유는 dbTable을 변수로 넣으려고 해서 그..

ASP.NET 2026.03.20

The query uses the 'First'/'FirstOrDefault' operator without 'OrderBy' and filter operators.

warn: Microsoft.EntityFrameworkCore.Query[10103] The query uses the 'First'/'FirstOrDefault' operator without 'OrderBy' and filter operators. This may lead to unpredictable results. 위와 같은 에러가 아래의 코드에서 나왔는데 해결방법은 OrderBy를 넣거나 Single 결과가 나온다고 명시해주는 것 입니다.FormattableString sql = $"SELECT EXISTS (SELECT 1 FROM dbTable WHERE orderId = {productId}) AS Value";int exists = await _dbContext.Databas..

ASP.NET 2026.03.19

OperationException : Failed to initialize localization, could not preload asset tables

[Error]OperationException : Failed to initialize localization, could not preload asset tables Localization을 쓸 때 preload를 적용했는데 자꾸 앱 시작 초반에 위와 같은 에러가 떠서 해결하기 위해서 찾아보니아래와 같은 링크의 해결법을 찾을 수 있었습니다.https://discussions.unity.com/t/locales-preloadoperation-has-not-been-initialized-in-standalone-build/863013/2 - Localization이 초기화 될 때 까지 기다리게 하는 코드입니다.다만 사용하면 초기화 될 때까지 기다리게 하는 것이라 멈춤이 보일 수 있기에 초기 로딩화면에서 ..

Unity 2026.03.13

Google IAP 정보 호출을 제대로 구현했지만 Google에 설정한 정보가 제대로 불려오지 않을 때

일단 정보 호출코드를 제대로 구현한 상태에서 설정정보대로 값이 넘어오지 않을 때 해봐야할 조치를 적습니다. 저의 경우는 분명 ProductMetadatat를 제대로 가져오는데그 안에 값이 제대로 표출 안되고 default값으로만 출력이 되어서 고민하던 중에 해결했던 경험입니다. 구글 플레이 스토어 앱 '데이터 삭제'폰에 있는 구글 플레이 스토어 앱이 예전의 빈 데이터를 기억(캐싱)하고 있어서 업데이트된 불러오는것일 수 있다고 합니다.해결방법: 스마트폰 설정 > 애플리케이션 > Google Play 스토어 > 저장공간 > 데이터 삭제 (캐시 삭제만으로는 부족할 수 있습니다). 그 후 앱을 다시 실행하면 구글 서버에서 최신 데이터를 다시 가져옵니다.

개발 2026.03.12

Unity IAP Codeless 없이 수동 IAPManager 작성

처음에 Unity에 Codeless를 사용해서 IAP를 사용하고 있었는데처음 Scene이 IAP Button들이 있는 곳이 아니다보니 Android에서 Codeless초기화 때 작동시켜주는 Restore를 얻지 못해서결국 수동으로 IAP를 관리해주는 Manager를 만들었습니다. Manager사용 예시는 다음 게시글에 올리겠습니다. IDetailedStoreListener를 상속받아서 IStoreController, IExtensionProvider를 받을 수 있게 해주었습니다.구매관련은 IStoreController를 사용, Restore는 IExtensionProvider를 사용하였습니다.구매 후에는 ProcessPurchase여기로 Callback이 들어오는데 이때 정확한 delegate를 작동하..

Unity 2026.03.09

Unity Stove PCSDK3 연동과 Rank연동 후기

Unity6로 작업했습니다. Unity Stove PCSDK3 연동방법은 스토브 developers에 자세히 나와 있습니다.따라서 연동하면 되기는 하지만 경험한 에러나 주의할 점에 대해서 적어봅니다.https://developers-beta.onstove.com/ko/docs/Store/PCSDK3/PCSDK_v3_intro 스토브 스토어 개발자 가이드 developers-beta.onstove.com 제가 경험한 것에 따라 적은 것이기에 참고로만 봐주세요! 1. 작성한 전체 StovePCSDK3ManagerUnitask를 사용하였기에 Unitask를 Coroutine으로 변경해서 쓰셔도 됩니다.상속한 Singleton코드도 아래에 같이 올립니다. StovePCSDK3Manager.csusing Sys..

Unity 2026.03.08

Unity Codeless IAP 사용 때 소비아이템 자동 구매 확정 문제 해결

Unity 에서 Codeless IAP를 사용할 때 소비 아이템일 경우 바로 자동 구매확정 되어지도록 세팅이 되어 있어서 문제가 되었습니다. 자동으로 확정되면 오히려 좋지 않냐? 할 수 있는데 아직 이용자에게 보상을 주지 않았는데도 Pending을 안 시키고 그대로 확정 지어버리면사용자는 돈을 써서 구매했지만 아이템은 받지 못했을 경우 문제가 됩니다. 해결하는 방법은 간단하게 IAP Button에서 Consume Purchase를 체크해제해주면 됩니다. 구매확정은 실제 보상 지급 후 꼭 아래의 코드를 사용해서 완료해주세요!CodelessIAPStoreListener.Instance.StoreController.ConfirmPendingPurchase(product);

Unity 2026.03.05

Google IAP Verification(검증) at ASP.Net Server (ASP.Net 서버에서 구글 인 앱 결제 검증)

1. GoogleCloud의 서비스 계정으로 들어가 줍니다.https://console.cloud.google.com/iam-admin/serviceaccounts 2. 서비스 계정을 만들어줍니다.1) 서비스 계정 만들기 클릭 2) 서비스 계정 이름 작성 3) GCP(Google Cloud Platform)에서 권한 설정은 따로 필요없다고 합니다.하지만 Google Play Console에서 금융 데이터 권한이 꼭 필요하다고 합니다재무 데이터 보기, 주문 및 취소 설문조사 응답 관리 (체크 필수)주문 및 구독 관리 (체크 필수)만약 넣는다고 하면 프로젝트 > 뷰어(Viewer) 권한(단순 조회 권한)정도만 넣으면 되다고 하네요 4) 액세스 권한이 있는 주 구성원여기는 프로젝트에서 소유자 외..

ASP.NET 2026.03.05