UnifiedReceiptExtensions.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System;
  2. using Unity.Services.Analytics;
  3. using UnityEngine;
  4. namespace UnityEngine.Purchasing
  5. {
  6. static class UnifiedReceiptExtensions
  7. {
  8. public static AnalyticsTransactionReceipt ToReceiptAndSignature(this UnifiedReceipt receipt)
  9. {
  10. var analyticsReceipt = new AnalyticsTransactionReceipt();
  11. analyticsReceipt.transactionServer = receipt.ToTransactionServer();
  12. if (analyticsReceipt.transactionServer == TransactionServer.GOOGLE)
  13. {
  14. var googleReceipt = JsonUtility.FromJson<GoogleReceipt>(receipt.Payload);
  15. analyticsReceipt.transactionReceipt = googleReceipt?.json;
  16. analyticsReceipt.transactionReceiptSignature = googleReceipt?.signature;
  17. }
  18. else
  19. {
  20. analyticsReceipt.transactionReceipt = receipt.Payload;
  21. }
  22. analyticsReceipt.transactionReceipt = EscapeEmbeddedQuotationMarks(analyticsReceipt.transactionReceipt);
  23. return analyticsReceipt;
  24. }
  25. static TransactionServer? ToTransactionServer(this UnifiedReceipt receipt)
  26. {
  27. if (receipt.Store == null)
  28. return null;
  29. var store = receipt.Store.ToLower();
  30. if (store.Contains("mac") || store.Contains("apple")) return TransactionServer.APPLE;
  31. if (store.Contains("google")) return TransactionServer.GOOGLE;
  32. if (store.Contains("amazon")) return TransactionServer.AMAZON;
  33. return null;
  34. }
  35. static string EscapeEmbeddedQuotationMarks(string receipt)
  36. {
  37. return receipt?.Replace("\"", "\\\"");
  38. }
  39. }
  40. }