Я играл с приложением Dungeons, а также с моим собственным платежным кодом, и почти все работает, за исключением одной странности.
Кажется, что независимо от того, что я делаю, я не могу заставить DEVELOPER_PAYLOAD отображаться в подписанном ответе JSON. Если я правильно понимаю, в документах говорится, что я должен увидеть developer_payload в ответе рынка JSON. Приложение Dungeons, кажется, думает, что должно также видеть developer_payload в json.
Я не заставил его работать в моем коде, и, похоже, он не работает в примере с Dungeons на моем телефоне.
Вот несколько фрагментов моего кода:
Bundle request = makeRequestBundle("REQUEST_PURCHASE");
request.putString(C.DEVELOPER_PAYLOAD, "testing 123");
C.DEVELOPER_PAYLOAD:
public static final String DEVELOPER_PAYLOAD = "DEVELOPER_PAYLOAD";
И вот что я вижу в измененных ответах состояния покупки
05-14 20:13:08.360: INFO/BillingService(715): PurchaseStateChanged получил signedData: {"nonce":9005407554096378381,"orders":[{"notificationId":"android.test.purchased","orderId":" transactionId.android.test.purchased", "packageName": "com.mypackage", "productId": "android.test.purchased", "purchaseTime": 1305429187752, "purchaseState": 0}]}
Заранее спасибо!
РЕДАКТИРОВАТЬ: я, наконец, понял это. Оказывается, developer_payload не проходит, если вы используете какой-либо из тестовых идентификаторов элементов Android. Вы должны использовать реальные предметы для покупки в приложении.