2014-11-20 7 views
6

Sto provando a implementare un'applicazione con abbonamento auto-rinnovabile. Gli utenti dovrebbero pagare per accedere a tutte le funzioni della mia applicazione. Uso già Parse come back-end per la mia applicazione. Fornisce alcuni metodi API per inAppPurchases ma non viene detto nulla sul tipo di auto-rinnovamento. L'unica cosa che ho trovato sono alcuni thread di due anni nel blog, si dice che la verifica delle ricevute sia stata implementata solo per gli acquisti scaricabili.Verifica se l'utente ha sottoscrizione auto-rinnovabile valida con Parse iOS SDK

Ho provato ad usare come si chiama in "Acquisto semplice" e funziona bene ma non riesco a capire come posso controllare se l'utente ha già acquistato l'abbonamento o meno.

Qualcuno sa è il modo per farlo tramite API Parse o Questo dovrebbe essere implementato in un altro modo?

+0

Hai capito? – rpvilao

+0

@rpvilao Purtroppo no. Ho usato l'abbonamento non rinnovabile descritto qui http://www.raywenderlich.com/36270/in-app-purchases-non-renewing-subscription-tutorial –

+0

Grazie per la risposta. Darò un'occhiata. – rpvilao

risposta

4

Come accennato, la convalida della ricevuta è incorporata nell'SDK Parse solo per contenuti scaricabili, ma è abbastanza semplice creare una funzione Codice Cloud che POST convalida la ricevuta dell'app su iTunes Store. Ecco la documentazione Apple per la validazione lato server: Validating Receipts with the App Store

Ecco una cosa una funzione di base sarebbe simile:

Parse.Cloud.define('validateReceipt', function (request, response) { 
    var receiptAsBase64EncodedString = request.params.receiptData; 
    var postData = { 
     method: 'POST', 
     url: 'http://buy.itunes.apple.com/verifyReceipt', 
     body: { 'receipt-data': receiptAsBase64EncodedString, 
       'password': SHARED_SECRET } 
    } 

    Parse.Cloud.httpRequest(postData).then(function (httpResponse) { 
     // httpResponse is a Parse.Cloud.HTTPResponse 
     var json = httpResponse.data; // Response body as a JavaScript object. 
     var validationStatus = json.status; // App Store validation status code 
     var receiptJSON = json.receipt; // Receipt data as a JSON object 

     // TODO: You'll need to check the IAP receipts to retrieve the 
     //  expiration date of the auto-renewing subscription, and 
     //  determine if it is expired yet. 
     var subscriptionIsActive = true; 

     if (subscriptionIsActive) { 
      return response.success('Subscription Active'); 
     } 
     else { 
      return response.error('Subscription Expired'); 
     } 
    }); 
}); 

Vedi Receipt Fields per i dettagli sul interpretare il JSON ricevuta. È abbastanza semplice per iOS 7+, ma i rimborsi di abbonamento con rinnovo automatico per iOS 6 e precedenti sono noiosi.

+0

Il codice sopra non ha funzionato per me; non sono sicuro se questo è dovuto a qualcosa di nuovo in Parse? O forse da parte di Apple? (questo post ha due anni, quindi chi lo sa?) Per farlo funzionare, ho dovuto impostare esplicitamente l'intestazione in 'postData' a' {'Content-Type': 'application/json'} ' –

+0

@AnnaDickinson My sembra che il server parse.com ospitato stia verificando le conferme senza set di tipo di contenuto qui, quindi scommetto che è una modifica in Parse, e in particolare presumo che tu stia usando Parse-Server, dato che Parse.com ospitato sta chiudendo giù in 5 giorni. Poiché puoi utilizzare qualsiasi modulo npm in Parse-Server, ti consiglio vivamente di utilizzare un modulo di richiesta http diverso che offrirà molta più flessibilità di "Parse.Cloud.httpRequest". Axios è la mia raccomandazione personale poiché la sua API basata su promesse si adatta bene al codice cloud. –

Problemi correlati