In-app-биллинг на андроид (подтверждение покупки, строка json) - PullRequest
2 голосов
/ 13 ноября 2011

У меня проблемы с кодированием платежей.

Это веб-игра, и вот как я хотел бы, чтобы платежи работали.

Вы попали на сайт и нажали кнопку (купить). Вы будете перенаправлены на сайт, который отправит информацию о покупке на сервер, добавив купленный товар в вашу учетную запись. До этого у нас есть WebViewClient, который проверяет все URL. Если он найдет URL, предназначенный для покупок, он отправит запрос на покупку. Теперь, если мы получим сообщение от Android Market, что оно прошло успешно, он продолжит перенаправление.

Я довольно новичок в этом и просто не могу понять концепцию этих платежей. Я написал свой код на примере подземелья. Я пытался приспособить его к своим потребностям. Я был бы благодарен, если бы кто-то мог указать мне правильное направление. Я пытаюсь выяснить, как получить ответ об успешной покупке. Предполагая, что остальная часть моего кода в порядке, он должен работать (я надеюсь).

В моем проекте есть файлы BillingReciver.java, BillingSerivce.java, PurchaseObserver.java, ResponseHandler.java, Consts.java и Security.java, которые были в примере. В случае необходимости я могу сообщить их код, но их много, поэтому я надеюсь, что кто-то, кто уже видел пример, сможет помочь.


После некоторых исследований и консультаций с некоторыми людьми я нашел то, что мне нужно:

     /**
     * This is called when Android Market sends information about a purchase state
     * change. The signedData parameter is a plaintext JSON string that is
     * signed by the server with the developer's private key. The signature
     * for the signed data is passed in the signature parameter.
     * @param context the context
     * @param signedData the (unencrypted) JSON string
     * @param signature the signature for the signedData
     */
    private void purchaseStateChanged(Context context, String signedData, String signature) {
        Intent intent = new Intent(Consts.ACTION_PURCHASE_STATE_CHANGED);
        intent.setClass(context, BillingService.class);
        intent.putExtra(Consts.INAPP_SIGNED_DATA, signedData);
        intent.putExtra(Consts.INAPP_SIGNATURE, signature);
        context.startService(intent);
       }

Мне нужно получить данные из строки JSON, которые мое приложение получит с Android Market. У кого-нибудь есть идеи, как это сделать?

Ответы [ 2 ]

2 голосов
/ 08 февраля 2012

17 ноября '11 в 21:56 @Grzegorz 'Gatz' Siennicki писал:

Мне нужно получить данные из строки JSON, которые получит мое приложение. с андроид маркета. У кого-нибудь есть идеи, как это сделать?

Посмотрите на метод verifyPurchase() в модуле Security.java в примере:

JSONObject jElement = jTransactionsArray.getJSONObject(i);
int response = jElement.getInt("purchaseState");
PurchaseState purchaseState = PurchaseState.valueOf(response);
String productId = jElement.getString("productId");
String packageName = jElement.getString("packageName");
long purchaseTime = jElement.getLong("purchaseTime");
String orderId = jElement.optString("orderId", "");
String notifyId = null;
if (jElement.has("notificationId")) {
  notifyId = jElement.getString("notificationId");
}
String developerPayload = jElement.optString("developerPayload", null);

Обратите внимание, что, поскольку JSON генерируется Android Market, те константные строки, которые указывают имена полей в методах JSONObject.getXXX(), являются "жестко запрограммированными" (т. Е. Вы не можете назвать их так, как хотите).

0 голосов
/ 13 ноября 2011

Из документации по Android в разделе Биллинг приложений:

... когда запрашиваемая транзакция меняет состояние (например, покупка успешно списана с кредитной карты или пользователь отменяет покупку)приложение Android Market отправляет намерение IN_APP_NOTIFY.Это сообщение содержит идентификатор уведомления, который можно использовать для получения сведений о транзакции для запроса REQUEST_PURCHASE.

Получено из здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...