1

这个问题之前可能已经被问过,但我在任何地方都找不到答案,我不知道亚马逊 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);
    }
}
4

1 回答 1

1

无法区分取消和其他类型的故障。

但是,根据Amazon IAP UX 指南

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

于 2013-08-13T05:30:20.320 回答