2013-10-22 4 views
13

Ho verificato la ricezione di acquisti in-app (i cosiddetti materiali di consumo) per l'App Store Mac sul lato server. La risposta dai server di Apple di solito è questo:Le ricevute di consumo Mac App Store hanno hash in_app vuoto sulla convalida lato server

{ 
     "status"=>0, 
     "environment"=>"Production", 
     "receipt" => 
     { 
      "receipt_type" => "Production", 
      "adam_id"=>410628904, 
      "bundle_id" => "com.company.product", 
      "application_version"=>"1.0.0", 
      "download_id"=>002141541230420, 
      "request_date"=>"2013-10-22 07:53:11 Etc/GMT", 
      "request_date_ms"=>"1382428391914", 
      "request_date_pst"=>"2013-10-22 00:53:11 America/Los_Angeles", 
      "original_purchase_date"=>"2011-08-22 06:05:47 Etc/GMT", 
      "original_purchase_date_ms"=>"1313993147000", 
      "original_purchase_date_pst"=>"2011-08-21 23:05:47 America/Los_Angeles", 
      "original_application_version"=>"1.0.0", 
      "in_app"=> [ 
      { 
       "quantity"=>"1", 
       "product_id"=>"com.company.product.mac_consumable", 
       "transaction_id"=>"9123912391231", 
       "original_transaction_id"=>"51881235936908", 
       "purchase_date"=>"2013-10-22 07:52:06 Etc/GMT", 
       "purchase_date_ms"=>"1382428326000", 
       "purchase_date_pst"=>"2013-10-22 00:52:06 America/Los_Angeles", 
       "original_purchase_date"=>"2013-10-22 07:52:06 Etc/GMT", 
       "original_purchase_date_ms"=>"1382428326000", 
       "original_purchase_date_pst"=>"2013-10-22 00:52:06 America/Los_Angeles", 
       "bundle_id"=>"com.company.product" 
       } 
     ] 
     } 
    } 

Ma a volte torniamo informazioni senza il set in_app hash:

{ 
     "status"=>0, 
     "environment"=>"Production", 
     "receipt" => 
     { 
      "receipt_type" => "Production", 
      "adam_id"=>312621904, 
      "bundle_id" => "com.company.product", 
      "application_version"=>"1.0.0", 
      "download_id"=>002141541230420, 
      "request_date"=>"2013-10-22 07:53:11 Etc/GMT", 
      "request_date_ms"=>"1382428391914", 
      "request_date_pst"=>"2013-10-22 00:53:11 America/Los_Angeles", 
      "original_purchase_date"=>"2011-08-22 06:05:47 Etc/GMT", 
      "original_purchase_date_ms"=>"1313993147000", 
      "original_purchase_date_pst"=>"2011-08-21 23:05:47 America/Los_Angeles", 
      "original_application_version"=>"1.0.0", 
      "in_app"=> [] 
     } 
    } 

Significa questo le ricevute non sono validi? Il campo in_app dovrebbe sempre essere compilato? O queste ricevute dovrebbero essere considerate valide e perché allora le informazioni in_app sono vuote?

+0

Ho lo stesso problema! Devo sapere cosa è successo! Potrebbe essere che la transazione è stata negata lato mela? Dovrei mostrare un messaggio? Il mio account non sembra essere accreditato quando ciò accade. – Steeve17

risposta

3

Significa che le ricevute non sono valide?

No, il valore status è 0, che secondo the docs significa che la ricevuta è valida. Semplicemente non contiene alcun acquisto in-app "sotto-ricevute".

Il campo in_app deve essere sempre compilato?

No, è possibile che una ricevuta non contenga acquisti in-app.


Quindi a quanto pare il problema è che per qualche motivo la ricevuta la vostra applicazione sta inviando al backend non contiene informazioni per un acquisto in-app, anche se ci si aspetta che.

Quando una transazione di acquisto in-app passa allo stato "acquistato", la ricevuta deve essere aggiornata sul dispositivo client - è necessario assicurarsi di non provare a inviare la ricevuta sul server prima che ciò accada.

Un'altra cosa da considerare è il SKReceiptRefreshRequest (disponibile solo dal 10.9, tuttavia): in alcuni casi la ricezione potrebbe non essere aggiornata e sarà necessario attendere l'aggiornamento prima di inviare la ricevuta. richiesta al tuo back-end.

+0

Non riceviamo alcun contante per queste entrate vuote da Apple, quindi chiaramente questi ordini non sono andati dal lato delle mele. Mi piacerebbe ancora poter riprodurre questo caso, perché potrebbe essere interessante per noi monitorare. Potrebbero essere i dettagli della carta di credito non validi o fondi insufficienti? – Steeve17

+2

@ Steeve17 Abbiamo lo stesso problema. Sei stato in grado di capire esattamente cosa succede quando "in_app \": []? Sarei molto grato per qualsiasi suggerimento. – tyrex

Problemi correlati