고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.
커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.
문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.
- 뒤끝 SDK 버전 : 5.11.7
- 프로젝트명 : 원소전쟁
- 스테이터스 코드 : 400
- 에러 코드 : BadParameterException
- 에러 메시지 : bad request. 잘못된 request 입니다
jwt 36시간 이후에도 똑같은 증상이 반복되어 jwt를 재발급 받아 수정한지 12시간 경과한 상태이고 같은 에러가 반복해서 뜹니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using BackEnd;
using UnityEngine.UI;
using UnityEngine.Purchasing;
using UnityEngine.Purchasing.Security;
using TMPro;
public class FlaskStore : MonoBehaviour,IStoreListener
{
public GameObject adRemove;
private string productId;
private IStoreController storeController;
public Text owendTBC;
void Start()
{
InitIAP();
}
private void InitIAP()
{
// var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
var module = StandardPurchasingModule.Instance();
ConfigurationBuilder builder = ConfigurationBuilder.Instance(module);
builder.AddProduct("flask30", ProductType.Consumable);
UnityPurchasing.Initialize(this, builder);
}
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
storeController = controller;
// CheckNonConsumable(adRemove)
}
public void OnInitializeFailed(InitializationFailureReason error) // 초기화 실패시
{
Debug.Log("IAP 초기화 실패" + error);
}
public void OnInitializeFailed(InitializationFailureReason error, string message) // 초기화 실패시 + 메시지
{
Debug.Log("IAP 초기화 실패" + error + message);
}
public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason) //구매 실패시
{
throw new System.NotImplementedException();
}
public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) // 결제 성공시
{
//Message2의 inputfield에 영수증을 출력
GameObject.Find("Message2").GetComponent<InputField>().text = args.purchasedProduct.receipt;
Backend.Receipt.IsValidateGooglePurchase(args.purchasedProduct.receipt , "receiptDescription", false, (callback) =>
{
if(callback.IsSuccess())
{
Backend.TBC.ChargeTBC(args.purchasedProduct.receipt, "ChargeTBC 테스트", (callback) =>
{
if (callback.IsSuccess())
{
Debug.Log("구매 성공 " + args.purchasedProduct.definition.id);
}
else
{
Debug.LogError("구매 실패. 오류 코드: " + callback.GetErrorCode() + "\n 오류 메시지: " + callback.GetMessage() + "\n GetStatusCode: " + callback.GetStatusCode());
Debug.Log(args.purchasedProduct.receipt);
GameObject.Find("Message").GetComponent<TextMeshProUGUI>().text = args.purchasedProduct.receipt;
}
});
}
else //이부분으로 빠집니다
{
Debug.Log(string.Format("ProcessPurchase: FAIL. Unrecognized product: '{0}'", args.purchasedProduct.definition.id));
GameObject.Find("Message").GetComponent<TextMeshProUGUI>().text = callback.GetStatusCode() + "\n" + callback.GetErrorCode() + "\n" + callback.GetMessage();
}
});
return PurchaseProcessingResult.Complete;
}
public void Purchase(string productID)
{
//버튼 이벤트 연결
Product p = storeController.products.WithID(productId);
storeController.InitiatePurchase(p);
}
이하생략
Message2에 들어가는 정보는 아래와 같습니다
{"Payload":"{\"json\":\"{\\\"orderId\\\":\\\"GPA.3337-3442-8035-75595\\\",\\\"packageName\\\":\\\"com.FTN_Soft.ElementalWar\\\",\\\"productId\\\":\\\"flask50\\\",\\\"purchaseTime\\\":1716433099080,\\\"purchaseState\\\":0,\\\"purchaseToken\\\":\\\"khkhafkhnpfeockiacnpbocb.AO-J1OxXJwFiHZ2wTX0w1lgOo1i8Pt3jGJHRsMOlUcH-HXdd3XweNeFK-xJreABEnAi4M6A97rnFvhL-9muO2vtSY0SC5g2ozbv5DcRgzhnow407Ngsafus\\\",\\\"quantity\\\":1,\\\"acknowledged\\\":false}\",\"signature\":\"bKmSXtUYx/JoahDaFF7aO8t/k8DgCQKoLhiXL322g/HmxOsNcGBZc/taR3zMDQlxlFZOmgAquVqYx65XN6dgvIoawQh8nhT6SfYdPhE/MY3zVL+ZX+VaE8ol5R0bNKbZoQVg3EldE/qbIyIuKQhhYZjr6cwosasqJiZQFMVC8542PktELyiJTOYGIIsdWDOEhh2Nuf3ZS0FSJCFtJ5ARNTBTE+SUuucDvkzfjyLvTdLSCCSp6E65FxIuWdEewoIfR+kXqKpPsJm/WB2XYdnonnKJlCtKKfI0uGLpiRdCsr1SOGenm4Q/Q8quIl59xOb1gV2ZuhMaO5GszEqh8gESQA==\",\"skuDetails\":[\"{\\\"productId\\\":\\\"flask50\\\",\\\"type\\\":\\\"inapp\\\",\\\"title\\\":\\\"\\ud50c\\ub77c\\uc2a4\\ud06c50 (\\uc6d0\\uc18c\\uc804\\uc7c1)\\\",\\\"name\\\":\\\"\\ud50c\\ub77c\\uc2a4\\ud06c50\\\",\\\"iconUrl\\\":\\\"https:\\\\/\\\\/lh3.googleusercontent.com\\\\/AmhFsteiQ2RAeuUHnWTy0NhNRQTxxqX5O5_fU7XNIPydT03rtcDYm0NDUcylzJSu-w\\\",\\\"description\\\":\\\"\\uae30\\ubcf8 \\ud50c\\ub77c\\uc2a4\\ud06c 50\\uac1c\\\",\\\"price\\\":\\\"\\u20a94,900\\\",\\\"price_amount_micros\\\":4900000000,\\\"price_currency_code\\\":\\\"KRW\\\",\\\"skuDetailsToken\\\":\\\"AEuhp4LKp2pdRwe87ThtrAGfVbnsQ3VxYyTiHC-zhbCR54n0vwcwA60iXN4kOlDwtRwizwckQgaQSY7MoqQ_m6cgTXurIipkoHswC4DPXqhNJjKPBQ0=\\\"}\"]}","Store":"GooglePlay","TransactionID":"khkhafkhnpfeockiacnpbocb.AO-J1OxXJwFiHZ2wTX0w1lgOo1i8Pt3jGJHRsMOlUcH-HXdd3XweNeFK-xJreABEnAi4M6A97rnFvhL-9muO2vtSY0SC5g2ozbv5DcRgzhnow407Ngsafus"}
구매토큰 복사
khkhafkhnpfeockiacnpbocb.AO-J1OxXJwFiHZ2wTX0w1lgOo1i8Pt3jGJHRsMOlUcH-HXdd3XweNeFK-xJreABEnAi4M6A97rnFvhL-9muO2vtSY0SC5g2ozbv5DcRgzhnow407Ngsafus
토큰은 일치하는 것 같은데, 어떤 부분이 잘못 된 걸까요?