You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Flutter应用内购的original transaction id?iOS场景求助

获取iOS订阅的originaltransactionid方法

1. 从in_app_purchase本地购买记录提取

即便你说应用内查询订阅状态有问题,先确认是否正确获取了PurchaseDetails对象:

  • 调用InAppPurchase.instance.queryPastPurchases()后,遍历返回的List<PurchaseDetails>集合,每个对象的originalTransactionId属性(驼峰命名)就是你要的原始交易ID。
  • 如果本地查询无结果或字段缺失,检查App Store Connect的订阅配置是否正确、应用是否开启内购权限,以及用户是否登录了有效Apple ID。

2. 通过App Store Server API获取

如果依赖Server API,有两种可靠路径:

  • 基于交易凭证查询:
    1. 从应用内的PurchaseDetails对象中,取出verificationData.localVerificationData,这是iOS返回的base64编码交易凭证。
    2. 将该凭证发送到你的后端,调用App Store Server API的验证交易凭证接口,响应的latest_receipt_info数组中,每个条目都包含original_transaction_id字段(下划线命名)。
  • 基于用户订阅历史查询:
    若你的后端已通过App Store Connect完成用户身份关联,可调用订阅历史记录接口,通过用户标识符查询,返回结果会包含所有订阅交易的originalTransactionId。

3. 常见问题排查

  • 注意字段命名差异:in_app_purchase包内是originalTransactionId(驼峰),App Store Server API返回的是original_transaction_id(下划线),避免混淆。
  • 沙盒测试时,必须使用沙盒Apple ID,且需手动触发订阅续订或过期操作,才能生成完整的交易记录。
  • 检查Server API权限:确保后端使用的密钥拥有订阅管理相关权限,且请求签名符合Apple的要求。

内容的提问来源于stack exchange,提问作者mehmet yazıcı

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:18:16