protected void SendPurchaseSucceededEvent(string id, string receipt, string transactionID) { #if HIGH_PERMISSION_DATA Product thisProduct = unity.products.WithStoreSpecificID(id); if ((promoPayload != null) && ((id == (string)promoPayload["productId"]) || (id == (string)promoPayload["storeSpecificId"]))) { promoPayload.Add("purchase", "OK"); if (thisProduct != null) { promoPayload.Add("productType", thisProduct.definition.type.ToString()); } var unifiedData = new Dictionary <string, string>(); unifiedData.Add("data", FormatUnifiedReceipt(receipt, transactionID)); promoPayload.Add("receipt", unifiedData); var purchaseEvent = new PurchasingEvent(promoPayload); var profileDict = m_profileData.GetProfileDict(); var eventjson = purchaseEvent.FlatJSON(profileDict); m_EventQueue.SendEvent(eventjson); promoPayload.Clear(); promoPayload = null; } else { // enriched "organic" purchases here // thisProduct can be null if it was an unexpected product. This can happen if you restore a product // that is no longer being requested by the app. if (thisProduct != null) { var purchaseDict = new Dictionary <string, object>(); purchaseDict.Add("type", "iap.purchase"); purchaseDict.Add("iap_service", true); purchaseDict.Add("iapPromo", false); purchaseDict.Add("purchase", "OK"); purchaseDict.Add("productId", thisProduct.definition.id); purchaseDict.Add("storeSpecificId", thisProduct.definition.storeSpecificId); purchaseDict.Add("amount", thisProduct.metadata.localizedPrice); purchaseDict.Add("currency", thisProduct.metadata.isoCurrencyCode); purchaseDict.Add("productType", thisProduct.definition.type.ToString()); var unifiedData = new Dictionary <string, string>(); unifiedData.Add("data", FormatUnifiedReceipt(receipt, transactionID)); purchaseDict.Add("receipt", unifiedData); var purchaseEvent = new PurchasingEvent(purchaseDict); var profileDict = m_profileData.GetProfileDict(); var eventjson = purchaseEvent.FlatJSON(profileDict); m_EventQueue.SendEvent(EventDestType.IAP, eventjson, eventBaseUrl + "/v1/organic_purchase"); } } #endif }
private EventQueue(IUtil util, IAsyncWebUtil webUtil) { m_AsyncUtil = webUtil; Profile = ProfileData.Instance(util); ProfileDict = Profile.GetProfileDict(); AdsIPC.InitAdsIPC(util); }