iap_purchase_details

将单个产品的购买详细信息添加到 ds_map。

语法:

iap_purchase_details(product_id, ds_map);


参数 描述
product_id 购买的产品 ID 字符串。
ds_map 将存储购买信息的 ds_map。


返回: N/A(无返回值)


描述

使用此函数,你可以使用描述给定产品的购买详细信息的多个键 / 值对填充先前创建的 ds_map。映射中返回以下数据:

映射还将包含另一个键 “status”,可用于检查购买的当前状态。此键将具有以下常量之一作为其值:

常量 描述
iap_available 产品可用或游戏正在等待购买结果。
iap_failed 购买尝试失败。
iap_purchased 该产品已成功购买。
iap_canceled 用户取消了购买。
iap_refunded 购买已被取消。



以下注释与参考目标商店返回的映射的 “token(令牌)” 和 “receipt(收据)” 键有关:

  1. 对于Amazon Store,购买 “token” 和 “receip” 条目被视为同一个。

  2. 对于Google Play,没有 “receipt” 数据,你需要通过返回的 “payload” 验证购买(如果你通过 payload 进行验证,建议你不要使用硬编码值)。GameMaker Studio 2 仍会根据 游戏选项IAP 标签中提供的公钥,验证 Google Play 购买时返回的数据签名。

  3. 对于Google Play,购买时提供的 “token” 旨在用于消费购买。

  4. 对于 iOSMacOS 目标商店,存在可用于购买的 “receipt” 数据,但出于开发目的,在 内部 生成相关联的 “token”。



注意:使用的 ds_map 并不是 iap_product_details 函数创建的,这意味着你必须使用适当的函数先创建它并在不使用时再从内存中删除它。


例如:

var p_map = ds_map_create();
var p_index = ds_map_find_value(iap_data, "index");
iap_purchase_details(p_index, p_map);
if ds_map_find_value(p_map, "status") == iap_purchased
   {
   global.Gold += 100000;
   }
ds_map_destroy(p_map);

上面的代码将创建一个 ds_map,然后用存储在变量 “p_index” 中的产品 ID 填充用于购买的键 / 值对,该变量是我们从专门在 IAP 事件 中创建的 iap_data ds_map 中获得的。如果 “status” 键返回常量 iap_purchasing,那么它将设置一个全局变量。


上一页: 应用内购
下一页: iap_activate
© Copyright YoYo Games Ltd. 2018 All Rights Reserved