开发者控制台

实现待定购买

实现待定购买

如果Amazon Kids中儿童个人资料的用户在应用或游戏内请求应用内购买(IAP),就会发生待定购买。在儿童请求应用内购买之后,会向家长发送一条通知。然后家长可以通过家长控制面板批准或拒绝购买。在等待批准时,购买将处于待定状态。如果家长批准了请求,您的应用就可以交付IAP。有关待定购买流程运作方式的详细信息,请参阅IAP概览中的待定购买

消费品和权利应用内购买支持待定采购状态。订阅IAP不支持待定状态。

要启用待定购买,您的应用必须在发起购买之前的任何时间点调用PurchasingService.enablePendingPurchases()方法。当客户发起待定IAP时,所得的PurchaseResponse对象将具有状态为PENDINGRequestStatus。以下代码展示了如何设定待定IAP的示例。

在您的活动类中:

public class MainActivity extends Activity {

    @Override
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        PurchasingService.registerListener(...);
        //需要为您的应用调用enablePendingPurchases,以接收状态为PENDING的RequestStatus
        PurchasingService.enablePendingPurchases();
    }
    
    @Override
    public void onResume() {
        super.onResume();
        PurchasingService.getPurchaseUpdates(...);
    }

    void requestInAppPurchase() {
        PurchasingService.purchase(...)
    }
}

在您的PurchasingListener实现中:

class MyListener implements PurchasingListener {
      public void onPurchaseResponse(final PurchaseResponse response) {
         if (response.getRequestStatus() == PurchaseResponse.RequestStatus.PENDING) {
             //您可以在这里中断,不做任何操作,或者显示一个指示请求挂起的模式。
             //在向您的应用返回答复之前,亚马逊应用商店也会向用户显示一种模式,
             //指示请求处于待定状态。
         }
     }
     
     // ... 
}

在Fire设备上,如果购买得到批准,客户会收到系统发出的通知。因此,务必要监测购买请求状态。您必须使用实时通知(RTN)或定期调用getPurchaseUpdates(),以便接收有关购买状态的通知并履行购买。有关如何实现getPurchaseUpdates()的详细信息,请参阅实现getPurchaseUpdates方法

如果购买得到批准,RequestStatus则会更新为SUCCESSFUL,然后您的应用将遵照成功交易的常规逻辑。如果采购处于未获得批准的状态,例如家长拒绝购买,或者让购买请求过期,您的应用不需要采取进一步的操作。如果未获得批准,在您调用getPurchaseUpdates()时,不会有来自RTN的通知,也不会有新的交易。

若需查看实现消费品待定购买的示例应用,请转到SDK中的以下路径: Appstore_SDK_<version>/examples/SampleIAPConsumablesApp

若需查看实现权利待定购买的示例应用,请转到SDK中的以下路径: Appstore_SDK_<version>/examples/SampleIAPEntitlementsApp