我正在将 Android 应用内购买与 Android 原生应用程序集成。我使用以下代码启动应用内购买意图!
Bundle buyIntentBundle = mService.getBuyIntent(3, getPackageName(),”product_sku”, "inapp",”Some Developer Payload”);
PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
startIntentSenderForResult(pendingIntent.getIntentSender(),REQUEST_CODE, new Intent(),Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));
上面的代码正在使用并打开 Google Play 以进行应用内购买。我重写了 onActivityResult 以获取应用内购买的结果(以下是代码)
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1001) {
if (resultCode == RESULT_OK) {
try {
final JSONObject jo = new JSONObject(purchaseData);
String orderId = jo.getString("orderId");
String productId = jo.getString("productId");
String state = String.valueOf(jo.getInt("purchaseState"));
//POST purchase result to my server for my record!
//Finally Consume the product
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
以下是我们从 InApp 购买中收到的回复
'{
"orderId":"12999763169054705758.1371079406387615",
"packageName":"com.example.app",
"productId":"exampleSku",
"purchaseTime":1345678900000,
"purchaseState":0,
"developerPayload":"bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ",
"purchaseToken":"rojeslcdyyiapnqcynkjyyjh"
}'
我的问题是如何识别应用内购买交易处于“待处理”状态,因为“purchaseState”(JSON 中的整数值)只有“购买”、“取消”和“退款”三个值。
我来自印度,谷歌钱包在应用内购买完成后立即接受任何交易。
它总是先处于待处理状态,然后最多需要 48 小时才能接受或拒绝交易!
我只想让我的客户在 Google waltet 成功付款后才能使用应用内购买的产品。
我遇到了我的一位客户从我的应用程序中购买了应用内产品,但不知何故他们的数据没有发布在服务器上。客户告诉我,购买交易最初处于待处理状态并在两天后完成,即使我在我的商家帐户中收到了付款,所以我得出结论 Android 没有响应 onActivityResult 中的 resultCode == RESULT_OK is purchase is in pending。
因此,如果有人遇到同样的问题,请向我解释处理待处理状态的解决方案或流程!我是否必须将 APN 用于挂起状态?但我需要将待处理状态订单详细信息存储在我的服务器上!提前致谢!