开发者负载

时间:2014-09-22 15:53:13

标签: android in-app-purchase

当用户想要继续进行应用内购买时,我不确定如何设置开发者有效负载字段。情况如下:

  1. 非消耗品(例如:解锁高级功能)
  2. 没有可用的服务器后端(我只能进行本地检查)
  3. 没有可用的用户登录名/密码
  4. 关于第3点,我更倾向于不要求用户输入其电子邮件或任何其他类型的信息。

1 个答案:

答案 0 :(得分:1)

你需要生成一个随机字符串,任何随机字符串都可以。例如,一个选项是使用设备ID:

String deviceId = Settings.Secure.getString(context.getContentResolver(),
                                            Settings.Secure.ANDROID_ID))

比你把它作为IInAppBillingService上getBuyIntent的最后一个参数提供给iab API:

public android.os.Bundle getBuyIntent(int apiVersion, java.lang.String packageName, java.lang.String sku, java.lang.String type, java.lang.String developerPayload) throws android.os.RemoteException;

你在onActivityResult()中读到它:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    ...
    String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");

purchaseData是从应用内结算API返回的数据,结构为json:

JSONObject o = new JSONObject(purchaseData);
String developerPayload = o.optString("developerPayload");

您需要验证onActivityResult中返回的developerPayload是否是您在getBuyIntent中提供的那个。如果您使用任意String,则可以将其存储在调用之间的应用程序共享首选项中。