アンドロイドでのアプリ内課金(購入確認、jsonストリング)

私は支払いをコーディングする際に問題があります。

これはウェブゲームであり、支払い方法についてはこちらをご覧ください。

あなたはサイトに行ってボタンをクリックする(購入する)。買い物の情報をサーバーに送信して、購入した商品をアカウントに追加するサイトにリダイレクトされます。その前にすべてのURLをチェックするWebViewClientがあります。購入のためのURLが見つかった場合、購入依頼を送信します。今我々はそれが成功したアンドロイド市場からメッセージを返す場合は、リダイレクトを続行します。

私はこれについて全く新しく、これらの支払いのコンセプトを理解することはできません。私はダンジョンの例を使って自分のコードを書いた。私は自分のニーズに合わせて調整しようとしました。私は誰かが正しい方向に私を指すことができることに感謝します。 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);
       }

私のアプリケーションがアンドロイドマーケットから得るJSON文字列からデータを取得する必要があります。誰でもそれをどうやって考えているのですか?

2
だからあなたの質問は何ですか?
追加された 著者 Kurtis Nusbaum,
develperアカウントの公開鍵を定義しましたか? (Android開発者の公式サンプルを使用している場合は、Security.javaクラスのどこかにあります)これがなければ、購入を確認することはできません。
追加された 著者 yugidroid,
購入リクエストが成功したというアンドロイド市場からの回答を入手するにはどうすればよいですか?
追加された 著者 Grzegorz 'Gatz' Siennicki,

2 答え

11月17日21時21分@Grzegorz 'Gatz' Siennickiは次のように書いています:

私のアプリケーションが取得するJSON文字列からデータを取得する必要があります   アンドロイドマーケットから。誰でもそれをどうやって考えているのですか?

サンプルの Security.java モジュールの verifyPurchase()メソッドを見てください:

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マーケットによって生成されるため、 JSONObject.getXXX()メソッドのフィールド名を指定するconst-stringは「ハードコード」されています(つまり、あなたが欲しいものならなんでも)。

2
追加された

In App Billingのアンドロイドのドキュメント:

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

こちらから入手してください。

0
追加された
あなたに何を伝えるべきか分からない。それは私が知っているすべての情報です。
追加された 著者 Kurtis Nusbaum,
私はそれをすべて読んでいますが、実際の情報をどのように取得するのかまだ分かりません。 ResponsHandlerファイルには、請求サービスによって呼び出され、必要な情報を取得するメソッド "purchaseResponse"があります。方法からそれを得るために私は何をしますか?
追加された 著者 Grzegorz 'Gatz' Siennicki,
私の質問を更新しました。
追加された 著者 Grzegorz 'Gatz' Siennicki,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript