我在编码付款方面遇到了问题。
这是一款网络游戏,我希望付款方式能够实现。
你到了一个网站并点击一个按钮(购买)。您将被重定向到一个网站,该网站会将购买信息发送到服务器,并将购买的商品添加到您的帐户。在此之前,我们有一个WebViewClient来检查所有网址。如果他找到了用于购买的网址,他将发送购买请求。现在,如果我们从Android市场获得一条消息,说明它成功了,他将继续进行重定向。
我对此很陌生,无法掌握这些付款的概念。我使用dungeon示例编写了我的代码。我试着根据自己的需要调整它。如果有人能指出我正确的方向,我将不胜感激。我正在试图弄清楚如何获得成功购买的回应。假设我的其余代码都没问题,它应该正常工作(我希望)。
我的项目文件中有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字符串中获取数据。任何人都知道如何做到这一点?
答案 0 :(得分:2)
2011年11月17日21:56 @Grzegorz'Gatz'Siennicki写道:
我需要从我的应用程序将获得的JSON字符串中获取数据 来自android市场。任何人都知道如何做到这一点?
查看示例中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()
方法中指定字段名称的那些const字符串是“硬编码的”(即您无法将它们命名为任何您想要的名称)
答案 1 :(得分:0)
来自In App Billing的Android文档:
...当请求的交易改变状态时(例如,购买成功向信用卡收费或用户取消购买),Android Market应用程序发送IN_APP_NOTIFY广播意图。此消息包含通知ID,您可以使用该ID来检索REQUEST_PURCHASE请求的事务详细信息。
来自here。