영수증 검증질문

public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) 
{
    /*
    뒤끝 영수증 검증 처리
    */
    BackendReturnObject validation = Backend.Receipt.IsValidateGooglePurchase ( args.purchasedProduct.receipt , "receiptDescription", false);
    
    // 영수증 검증에 성공한 경우
    if(validation.IsSuccess())
    {
        // 구매 성공한 제품에 대한 id 체크하여 그에 맞는 보상 
        // A consumable product has been purchased by this user.
        if (String.Equals(args.purchasedProduct.definition.id, kProductIDConsumable, StringComparison.Ordinal))
        {
            Debug.Log(string.Format("ProcessPurchase: PASS. Product: '{0}'", args.purchasedProduct.definition.id));
            // The consumable item has been successfully purchased, add 100 coins to the player's in-game score.
            ScoreManager.score += 100;
        }
        // Or ... a non-consumable product has been purchased by this user.
        else if (String.Equals(args.purchasedProduct.definition.id, kProductIDNonConsumable, StringComparison.Ordinal))
        {
            Debug.Log(string.Format("ProcessPurchase: PASS. Product: '{0}'", args.purchasedProduct.definition.id));
            // TODO: The non-consumable item has been successfully purchased, grant this item to the player.
        }
        // Or ... a subscription product has been purchased by this user.
        else if (String.Equals(args.purchasedProduct.definition.id, kProductIDSubscription, StringComparison.Ordinal))
        {
            Debug.Log(string.Format("ProcessPurchase: PASS. Product: '{0}'", args.purchasedProduct.definition.id));
            // TODO: The subscription item has been successfully purchased, grant this to the player.
        }
    }
    // 영수증 검증에 실패한 경우 
    else 
    {
        // Or ... an unknown product has been purchased by this user. Fill in additional products here....
        Debug.Log(string.Format("ProcessPurchase: FAIL. Unrecognized product: '{0}'", args.purchasedProduct.definition.id));
    }

    // Return a flag indicating whether this product has completely been received, or if the application needs 
    // to be reminded of this purchase at next app launch. Use PurchaseProcessingResult.Pending when still 
    // saving purchased products to the cloud, and when that save is delayed. 
    return PurchaseProcessingResult.Complete;
}

뒤끝 개발자 문서에서 가져온 예시입니다.
ProcessPurchase(PurchaseEventArgs args) 메서드를 이용해서 검증을 하는건 알겠는데,
이 메서드를 호출할때 인자는 어떤것을 넣어줘야 하나요? args에 뭐가 들어가는지 모르겠습니다

안녕하세요 개바랒님.

해당 함수는 UnityIAP 플러그인에서 사용되는 IStoreListener 인터페이스에서 제공하는 함수로,
구매 진행이 완료되었다면 자동으로 호출되는 콜백 함수입니다.(호출X)

인자값인 args에는 구매상품에 대한 정보와 구매 성공/실패 여부가 포함되어있으며, 해당 함수는 함수의 이름을 변경하거나 인자값의 이름을 변경하는 등, 수정이 이루어져서는 안되는 점 참고해주시기 바랍니다.

public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) {

}

저 콜백함수를 스크립트에 넣고 결제를 해서 결제 성공을 했습니다(구글 영수증 받음)
근데 저 콜백함수가 자동으로 호출되지 않아서 그런데
혹시 코드리스 iap버튼을 이용해서 결제시에는 호출되지 않는건가요?

코드리스 IAP의 경우, 해당 버튼의 OnPurchaseComplete등의 콜백 컴포넌트에 직접 넣은 함수가 호출됩니다.

해당 부분에 관해서는 유니티 개발자문서를 참고해주세요.