App Purchase Vault
Takeout · 技术说明

Google Play Purchase History.json 详解

Purchase History.json 是 Google Play Takeout 导出的核心文件:它用机器可读的方式列出你获取过什么以及时间。本页说明它的用途和总体结构,同时也会强调一个关于“保证”的重要限制。

更新于:2026年9月 · App Purchase Vault 项目 · 阅读约 6 分钟

先说限制:没有公开结构规范

Google 没有为 Play Takeout 文件公开正式、带版本的结构规范。下面所有内容都来自实际导出结果中的观察,包括我们自己的导出以及社区记录的样本。不同账号、内容类型和时间段的字段可能不同,Google 也可能随时修改。这里所说的一切都是“通常存在”,绝不是“契约保证”。

这个文件是做什么的

在导出文件的 Google Play Store 文件夹中,Purchase History.json 记录的是获取行为:你获得过的应用和游戏、进行过的应用内购买、开始过的订阅。可以把它理解为买了什么、什么时候买。而花了多少钱通常在同目录的 Order History.json 中,它更像交易账本:金额、货币、付款和退款相关字段。

总体结构

文件是一个 JSON 记录数组。每条记录描述一次获取行为,通常包含:

价格和付款详情通常不在这个文件里;那是 Order History 的职责。把两个文件关联起来,才能得到某笔购买的“名称 + 日期 + 价格”。

一个虚构示例

下面的片段仅为说明而虚构。它不是真实用户数据,而且只是简化示意,并不保证字段名称。真实导出中的嵌套方式或命名可能不同:

[
  {
    "purchase": {
      "document": {
        "type": "Android App",
        "title": "Example Launcher (fictional)"
      },
      "purchaseTime": "2019-04-12T14:23:00Z",
      "purchaseType": "App"
    }
  },
  {
    "purchase": {
      "document": {
        "type": "In-app item",
        "title": "Example Game - Coin Pack (fictional)"
      },
      "purchaseTime": "2021-11-02T09:05:00Z",
      "purchaseType": "In-app purchase"
    }
  }
]

应用、应用内购买、订阅

在实际观察到的导出里,购买类型信息可以帮助你区分用户最关心的三大类别:

类别一条记录代表什么需要注意
应用与游戏一次性获取某个应用或游戏(付费或免费)免费应用也可能出现:获取 ≠ 付款
应用内购买在应用内部购买的项目记录会写明购买项目;所属应用有时需要根据标题推断
订阅订阅相关事件续订与首次订阅可能以不同方式记录;金额请查看 Order History

查看工具应忽略的字段

Order History.json 可能包含与付款方式有关的字段。一个规范的查看器或解析器应该在解析时直接丢弃这些字段:既不显示,也不存储。有价值的记录是“买了什么、什么时候、花了多少”。银行卡详情对这些问题没有帮助,只会增加风险。

分享时也应遵循同样原则:购买记录属于个人数据。尽量让导出文件留在本地,并对任何要求你上传它的工具保持警惕。

我们如何使用这些数据App Purchase Vault(目前处于 Android 测试版)会在你的手机上解析这些文件:Purchase History 提供项目和日期,Order History 提供金额,并在解析时丢弃敏感付款字段。上面提到的“容忍结构变化”是设计要求,不是事后补丁。

JSON 交给我们处理。

App Purchase Vault 正处于 Android 测试版:选择 ZIP,就能得到可搜索归档,而且只在设备上处理。

了解这个思路