如何检测用户是否在点燃火上取消了IAP?

时间:2013-07-18 12:12:48

标签: in-app-purchase kindle

之前可能已经问过这个问题,但我无法在任何地方找到答案,我不知道亚马逊IAP SDK是否可行。 当我取消购买时,我将从购买回复中收到 FAILED 。 如果是这样,我如何显示 FAILED是由取消其他无关环境错误引起的?

private class PurchaseAsyncTask extends
        AsyncTask<PurchaseResponse, Void, Boolean> {

    private String [] purchaseResult = null;
    @Override
    protected Boolean doInBackground(final PurchaseResponse... params) {
        final PurchaseResponse purchaseResponse = params[0];
        final String userId = microTrans.getCurrentUser();
        switch (purchaseResponse.getPurchaseRequestStatus()) {
        case SUCCESSFUL:
            /*
             * You can verify the receipt and fulfill the purchase on
             * successful responses.
             */
            final Receipt receipt = purchaseResponse.getReceipt();
            switch (receipt.getItemType()) {
            case CONSUMABLE:
                break;
            case ENTITLED:
                break;
            case SUBSCRIPTION:
                break;
            }

            return true;
        case ALREADY_ENTITLED:
            /*
             * If the customer has already been entitled to the item, a
             * receipt is not returned. Fulfillment is done unconditionally,
             * we determine which item should be fulfilled by matching the
             * request id returned from the initial request with the request
             * id stored in the response.
             */
            // TODO handle already entitled
            Log.v(TAG, "already entitled!");
            return true;
        case FAILED:
            /*
             * If the purchase failed for some reason, (The customer
             * canceled the order, or some other extraneous circumstance
             * happens) the application ignores the request and logs the
             * failure.
             */
            // TODO handle failed of purchase
            Log.v(TAG,
                    "Failed purchase for request"
                            + purchaseResponse.getRequestId());
            return false;
        case INVALID_SKU:
            /*
             * If the sku that was purchased was invalid, the application
             * ignores the request and logs the failure. This can happen
             * when there is a sku mismatch between what is sent from the
             * application and what currently exists on the dev portal.
             */
            // TODO handle invalid sku
            Log.v(TAG,
                    "Invalid Sku for request "
                            + purchaseResponse.getRequestId());
            return false;
        }
        return false;
    }

    @Override
    protected void onPostExecute(final Boolean success) {
        super.onPostExecute(success);
    }
}

1 个答案:

答案 0 :(得分:1)

无法区分取消和其他类型的失败。

但是,按Amazon IAP UX guidelines

  

您的应用不应尝试向任何交易状态或状态发送消息   给客户。 In-App Purchasing API将处理所有确认   并向客户发送消息,包括交易成功和   失败的消息。