Estoy tratando de implementar la facturación en la aplicación. He iniciado sesión en una cuenta de prueba registrada en Market y he actualizado mi clave pública en el código. Puedo comprar uno de los ID de productos de prueba.Facturación en la aplicación de Android: datos en blanco recibidos después de la compra
Sin embargo, parece que una firma en blanco se envía en el intento PURCHASE_STATE_CHANGED. El registro aparece como tales:
INFO/BillingReceiver(21437): notifyId: android.test.purchased
WARN/ActivityManager(2513): Duplicate finish request for HistoryRecord{47de4b38 com.android.vending/.billing.InAppBuyPageActivity}
INFO/BillingService(21437): handleCommand() action: com.app.GET_PURCHASE_INFORMATION
DEBUG/BillingService(21437): GetPurchaseInformation
ERROR/BillingService(21437): getPurchaseInformation received RESULT_OK
DEBUG/BillingService(21437): request id: 4241021538346688898
INFO/BillingService(21437): handleCommand() action: com.android.vending.billing.RESPONSE_CODE
DEBUG/BillingService(21437): RequestPurchase: RESULT_OK
INFO/BillingService(21437): handleCommand() action: com.android.vending.billing.PURCHASE_STATE_CHANGED
INFO/Security(21437): signedData: {"nonce":-3927284292945900504,"orders":[{"notificationId":"android.test.purchased","orderId":"transactionId.android.test.purchased","packageName":"com.app","productId":"android.test.purchased","purchaseTime":1301944310410,"purchaseState":0}]}
INFO/Security(21542): signature:
INFO/Security(21437): Purchase not verified
INFO/Security(21437): Purchase count = 0
INFO/BillingService(21437): handleCommand() action: com.android.vending.billing.RESPONSE_CODE
DEBUG/BillingService(21437): GetPurchaseInformation: RESULT_OK
la "Compra no verificado" se debe al código de saltarse la verificación de la firma (porque está en blanco) y tirar que la compra del producto.
¿Alguna idea? No veo en los documentos que la firma esté en blanco o cuál sea el motivo.
Fwiw, esto sólo ocurre en mi Samsung Vibrant Galaxy S (2.2.1). Funciona bien en un Droid (2.2.2).
EDIT: Cuando llego a la Intención PURCHASE_STATE_CHANGED como el resultado de una operación de restauración de transacciones, consigo este lugar en los registros:
INFO/BillingService(24010): handleCommand() action: com.android.vending.billing.PURCHASE_STATE_CHANGED
ERROR/Security(24010): data is null
Esto indica que no hay carga útil firmado fue enviado a todos.
EDIT: En la prueba adicional parece que esto ocurre cuando las versiones de la aplicación subido y la aplicación instalada difieren. http://code.google.com/p/marketbilling/issues/detail?id=15
Interesante. He tenido la misma experiencia, aunque cada vez que subo una nueva APK el problema parece repetirse. He archivado un error: http://code.google.com/p/marketbilling/issues/detail?id=15 – sehugg