之前可能已经问过这个问题,但我无法在任何地方找到答案,我不知道亚马逊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);
}
}
答案 0 :(得分:1)
无法区分取消和其他类型的失败。
您的应用不应尝试向任何交易状态或状态发送消息 给客户。 In-App Purchasing API将处理所有确认 并向客户发送消息,包括交易成功和 失败的消息。