当用户想要继续进行应用内购买时,我不确定如何设置开发者有效负载字段。情况如下:
关于第3点,我更倾向于不要求用户输入其电子邮件或任何其他类型的信息。
答案 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,则可以将其存储在调用之间的应用程序共享首选项中。