public void RecordIapTransaction(UnityEngine.Purchasing.Product iap) { // Check that we have a revenue amount to record. if (!string.IsNullOrEmpty(iap.metadata.isoCurrencyCode) && iap.metadata.localizedPrice > 0) { // Add the Cost of the IAP to a productsSpent object var productsSpent = new DeltaDNA.Product() .SetRealCurrency( iap.metadata.isoCurrencyCode, Product.ConvertCurrency(iap.metadata.isoCurrencyCode, iap.metadata.localizedPrice ) ); // Add the items or currency received to a productsReceived object // We have cheated by hardwiring this for this tutorial! // Note that the virtualCurrencyType should be one of these 3 values ["PREMIUM","PREMIUM_GRIND","GRIND"] var productsReceived = new DeltaDNA.Product() .AddVirtualCurrency("Coins", "PREMIUM", 100); // Create a transaction using the products spent and received objects // Note that the transaction type should always be "PURCHASE" for IAPs var transactionEvent = new Transaction( iap.metadata.localizedTitle, "PURCHASE", productsReceived, productsSpent) .SetTransactionId(iap.transactionID) .AddParam("productID", iap.definition.id); // Add the transaction receipt if we have one. if (iap.hasReceipt) { // Populate transaction receipt fields dependig on type of receipt // https://github.com/deltaDNA/unity-sdk#tracking-revenue // https://docs.unity3d.com/Manual/UnityIAPPurchaseReceipts.html TransactionReceipt transactionReceipt = new TransactionReceipt(); transactionReceipt = JsonUtility.FromJson <TransactionReceipt>(iap.receipt); if (transactionReceipt.Store == "AppleAppStore") { transactionEvent.SetServer("APPLE"); transactionEvent.SetReceipt(transactionReceipt.Payload.ToString()); } else if (transactionReceipt.Store == "GooglePlay") { GooglePlayReceipt googleReceipt = new GooglePlayReceipt(); googleReceipt = JsonUtility.FromJson <GooglePlayReceipt>(transactionReceipt.Payload); transactionEvent.SetServer("GOOGLE"); transactionEvent.SetReceipt(googleReceipt.json); transactionEvent.SetReceiptSignature(googleReceipt.signature); } } // Record the transaction event DDNA.Instance.RecordEvent(transactionEvent); Debug.Log(string.Format("Sent IAP transaction event to DDNA : {0}", iap.definition.id)); } }