using AppsInToss;
using UnityEngine;
public class IAPRecovery : MonoBehaviour
{
async void Start()
{
await RecoverPendingOrders();
}
private async System.Threading.Tasks.Task RecoverPendingOrders()
{
try
{
// 미처리 완료 주문 조회
var result = await AIT.IAPGetCompletedOrRefundedOrders();
if (result.Orders == null || result.Orders.Length == 0)
{
Debug.Log("복구할 주문이 없어요");
return;
}
foreach (var order in result.Orders)
{
if (order.Status == CompletedOrRefundedOrdersResultOrderStatus.REFUNDED)
continue;
// 상품 지급
GrantProduct(order.Sku);
// 지급 완료 처리
var args = new IAPCompleteProductGrantArgs_0
{
Params = new IAPCompleteProductGrantArgs_0Params
{
OrderId = order.OrderId
}
};
bool success = await AIT.IAPCompleteProductGrant(args);
Debug.Log($"주문 {order.OrderId} 복구 {(success ? "성공" : "실패")}");
}
}
catch (AITException ex)
{
Debug.LogError($"주문 복구 실패: {ex.ErrorCode} - {ex.Message}");
}
}
private void GrantProduct(string sku)
{
// SKU에 따른 상품 지급 로직
Debug.Log($"상품 지급: {sku}");
}
}
결제를 진행하고 도중에 강제로 프로세스를 중단하면 미처리 코드가 실행이 되는 건 문제없었습니다.
그러나 해당 미처리 코드가 매번 앱을 실행할때마다 같이 실행이 되는게 잘못된거 같아서 질문을 드렸었습니다.
공식 가이드에 대하여 제가 이해했을 때는 상품을 지급하는 GrantProduct(order.Sku); 코드에 상관없이 미처리 된 결제가 있었으면 1번만 실행이 되어야 하지 않았나 한건데 GrantProduct(order.Sku)이 실행이 되어야지만 더이상 미처리 주문 코드가 실행되지 않는건가요?