2

支払いのコーディングに問題があります。

これは Web ゲームであり、支払いをどのように機能させたいかを以下に示します。

サイトにアクセスし、ボタン (購入) をクリックします。購入したアイテムをアカウントに追加するサーバーに購入情報を送信するサイトにリダイレクトされます。それが起こる前に、すべての URL をチェックする WebViewClient があります。購入用の URL を見つけたら、購入リクエストを送信します。Androidマーケットから成功したというメッセージが返ってきたら、彼はリダイレクトを続行します。

私はこれにまったく慣れておらず、これらの支払いの概念を理解できません。ダンジョンの例を使用してコードを書きました。私は自分のニーズに合わせて調整しようとしました。誰かが私を正しい方向に向けることができれば幸いです。Atm 購入が成功した場合の応答を取得する方法を理解しようとしています。私のコードの残りの部分が問題ないと仮定すると、それは機能するはずです(願っています)。

私のプロジェクトファイルには、例にあった 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);
       }

アプリが Android マーケットから取得する JSON 文字列からデータを取得する必要があります。誰でもそれを行う方法を知っていますか?

4

2 に答える 2

2

11 年 11 月 17 日 21:56 に、@Grzegorz 'Gatz' Siennicki は次のように書いています。

アプリが Android マーケットから取得する 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 マーケットによって生成されるため、メソッド内のフィールド名を指定する const-stringJSONObject.getXXX()は「ハードコード」されていることに注意してください (つまり、実際に好きな名前を付けることはできません)。

于 2012-02-07T23:51:58.617 に答える
0

In App Billing の Android ドキュメントから:

...要求されたトランザクションの状態が変化した場合 (たとえば、購入がクレジット カードに正常に請求された場合や、ユーザーが購入をキャンセルした場合)、Android マーケット アプリケーションは IN_APP_NOTIFY ブロードキャスト インテントを送信します。このメッセージには、REQUEST_PURCHASE リクエストのトランザクションの詳細を取得するために使用できる通知 ID が含まれています。

hereから取得しました。

于 2011-11-12T23:42:06.783 に答える