版本:Unity 6 (6000.0)
语言:英语
发起购买
处理购买失败

处理购买

当购买完成时,您的商店监听器的 ProcessPurchase 函数会被调用。您的应用程序应该完成用户购买的内容;例如,解锁本地内容或将购买收据发送到服务器以更新服务器端游戏模型。

将返回一个结果,指示您的应用程序是否已完成处理购买。

结果 描述
PurchaseProcessingResult.Complete 应用程序已完成处理购买,不应再次通知它。
PurchaseProcessingResult.Pending 应用程序仍在处理购买,并且 ProcessPurchase 将在下一次应用程序启动时再次被调用,除非 IStoreControllerConfirmPendingPurchase 函数被调用。

请注意,ProcessPurchase 可能会在成功初始化后的任何时间被调用。如果您的应用程序在执行 ProcessPurchase 处理程序期间崩溃,那么它将在下一次 Unity IAPUnity 应用内购买 的缩写
请参见 词汇表
初始化时再次被调用,因此您可能希望实现自己的额外去重功能。

可靠性

Unity IAP 需要明确确认购买,以确保在网络中断或应用程序崩溃的情况下可靠地完成购买。在应用程序脱机期间完成的任何购买将在下次初始化时发送到应用程序。

立即完成购买

当返回 PurchaseProcessingResult.Complete 时,Unity IAP 会立即完成交易(如下图所示)。

如果您正在销售消耗性产品并从服务器完成它们(例如,在在线游戏中提供货币),则 必须不 返回 PurchaseProcessingResult.Complete

如果您这样做,如果您的应用程序在云保存发生之前被卸载,则可能会丢失消耗性购买。

Completing immediately
立即完成

将购买保存到云端

如果您将消耗性购买保存到云端,则 必须 返回 PurchaseProcessingResult.Pending,并且仅在您成功持久保存购买后才调用 ConfirmPendingPurchase

当返回 Pending 时,Unity IAP 会在底层商店中保持交易打开,直到确认已处理,从而确保即使用户在消耗性产品处于此状态时重新安装您的应用程序,也不会丢失消耗性购买。

Pending Purchases
待处理的购买
发起购买
处理购买失败