Exemplo n.º 1
0
        public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
        {
            var iap = IAP.FromSKU(args.purchasedProduct.definition.id);

            if (iap == null)
            {
                Log("IAP - Purchase Failed. Unrecognized product: " + args.purchasedProduct.definition.id);
                iapManager.PurchaseFailed();
                return(PurchaseProcessingResult.Complete);
            }

            Log($"IAP - Purchase Success: {args.purchasedProduct.definition.id}, Purchase Receipt: {args.purchasedProduct.receipt}");
            // {"Store":"GooglePlay","TransactionID":"GPA.1365-0610-5320-80591","Payload":"{\"json\":\"{\\\"orderId\\\":\\\"GPA.1365-0610-5320-80591\\\",\\\"packageName\\\":\\\"com.sundaygames.rhymes\\\",\\\"productId\\\":\\\"com.sundaygames.rhymes.coins2\\\",\\\"purchaseTime\\\":1457679428830,\\\"purchaseState\\\":0,\\\"purchaseToken\\\":\\\"plfjeknfmgggeeoeplhcpccb.AO-J1Oyr-sBdnVXmUwD9JWdvYMXYsjQVVUbJ11HCIf5R6f6E0smmAVj4Lq_LoR79it8MBIc3j7FTN5i97f56UoViJ95k-R6ddJ-OjAxjoYybOsXzBoGGXuHbRBglLf1bJURFTNhYvBME8IbH0YS5Iags61ojxu1oIw\\\"}\",\"signature\":\"1GWVO1alYCTdu0Xxv+bNBNWtXiXX2XVyR+P6ItxWVPI0w7+a2c68AzpGpAVTRg6yXRTPdXX1NPt8pUlQW0vxhNEc2yRX\\/agEGx1CorFMBtNj1xJxiYyoZC85BD6+RU\\/2QnfbJXyPy\\/GzXARsdbFJMwGWmVw7ZzRMLFSEghIAjVCVHcammxgugpkzZcwEaipX6rb9G6ZsETvlBa3EosX+WukzGxiL0w1V4H0mb\\/VTcNqtejdD6akqrsbR\\/UvHcjETJQm1MKqv0K2UEog22HX4CxGCD1saFzxU0fhUTTjxYturLp8z312Qu3FmwTff+6QlPv9QwgPLRsiXC+0UmS9KvA==\"}"}

            var purchaseData = new PurchaseData(iap, transaction: args.purchasedProduct.transactionID);
            var payload      = (Json.Deserialize(args.purchasedProduct.receipt) as Dictionary <string, object>)["Payload"] as string;

            if (platform == Platform.AppStore || platform == Platform.tvOS)
            {
                purchaseData.receipt = payload;
            }
            else if (platform == Platform.GooglePlay)
            {
                purchaseData.receipt   = (Json.Deserialize(payload) as Dictionary <string, object>)["json"] as string;
                purchaseData.signature = (Json.Deserialize(payload) as Dictionary <string, object>)["signature"] as string;
            }
            else if (platform == Platform.WindowsPhone)
            {
                // Payload is an XML string as specified by Microsoft https://msdn.microsoft.com/en-US/library/windows/apps/windows.applicationmodel.store.currentapp.getappreceiptasync.aspx
            }

            if (build.serverPurchaseVerification)
            {
                server.VerifyPurchase(purchaseData, result =>
                {
                    if (result == true)
                    {
                        iapManager.PurchaseSucceed(purchaseData);
                    }
                    else if (result == false)
                    {
                        iapManager.PurchaseFailed();
                    }
                    else
                    {
                        if (build.localPurchaseVerification)
                        {
                            LocalPurchaseVerification.Validate(args.purchasedProduct.receipt, purchaseData,
                                                               success => { if (success)
                                                                            {
                                                                                iapManager.PurchaseSucceed(purchaseData);
                                                                            }
                                                                            else
                                                                            {
                                                                                iapManager.PurchaseFailed();
                                                                            } });
                        }
                        else
                        {
                            iapManager.PurchaseFailed();
                        }
                    }
                });
                return(PurchaseProcessingResult.Complete);
            }

            if (build.localPurchaseVerification)
            {
                LocalPurchaseVerification.Validate(args.purchasedProduct.receipt, purchaseData,
                                                   success => { if (success)
                                                                {
                                                                    iapManager.PurchaseSucceed(purchaseData);
                                                                }
                                                                else
                                                                {
                                                                    iapManager.PurchaseFailed();
                                                                } });
                return(PurchaseProcessingResult.Complete);
            }

            iapManager.PurchaseSucceed(purchaseData);
            return(PurchaseProcessingResult.Complete);
        }
Exemplo n.º 2
0
 public PurchaseData(string product, string transaction = null, string receipt = null)
 {
     this.iap         = IAP.FromSKU(product);
     this.transaction = transaction;
     this.receipt     = receipt;
 }