繁体   English   中英

Android InApp购买-如何处理待处理状态?

[英]Android InApp Purchase - How to handle Pending Status?

我正在将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));

上面的代码正在使用并打开Goog​​le 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中的Integer值)只有三个值“已购买”,“已取消”和“已退款”。

我来自印度,inapp购买完成后,Google钱包立即接受任何交易。

它始终始终处于待处理状态,然后最多需要48小时才能接受或拒绝交易!

我只允许客户在Google waltet中成功付款后才能使用在应用内购买的产品。

我遇到一位客户从我的应用程序购买了inapp产品,但是他们的数据没有以某种方式发布在服务器上。 客户告诉我,购买交易最初处于待处理状态,并在两天后完成,即使我已经在我的商户帐户中获得了付款,因此我得出结论,Android未响应onActivityResult中的resultCode == RESULT_OK处于待处理状态。

因此,如果有人遇到同样的问题,请向我解释解决未决状态的解决方案或流程! 我是否必须将APN用作未决状态? 但是我需要该待处理状态订单详细信息存储在我的服务器上! 提前致谢!

我知道很久以前就问过这个问题。 但是我也面临着同样的问题(针对巴西市场的应用程序)。

我注意到立即进行处理的购买,一切正常。

但是,某些购买进入“待付款”状态,最多可能需要48个小时才能更改状态。 但是,我的服务器从未被调用-正如OP所述,我怀疑Google Play服务器返回了其他状态(RESULT_OK除外),而我的应用程序未捕获该状态。 然后,我的用户需要付费,但是无法使用PREMIUM功能-因为我的服务器从未收到通知。

因此,从2018年开始,我读到我们可能有另一种选择。 以下链接包含有关如何处理订阅的一些信息

https://developer.android.com/google/play/billing/billing_subscriptions

..并指向以下内容:

https://developer.android.com/google/play/billing/realtime_developer_notifications

实时开发人员通知

这样,每次用户订阅状态更改时,Google Play都会向您的服务器发送通知。 因此,如果您的用户付款需要48小时才能完成,则服务器将收到通知,您可以使用户成为PREMIUM或您需要的任何逻辑。

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM