Apple Pay收据有效性验证及内购低价售卖相关问题咨询
iOS内购第三方低价售卖及交易校验问题解析
先理下你的情况:
你通过Apple的verifyReceipt API校验收据返回了status: 0(说明收据本身是有效的),但还是碰到第三方低价卖你们的内购服务,下面针对你的三个问题逐一拆解:
1. 怎么直接校验内购交易的有效性?
基础的收据校验只是第一步,要彻底确保交易合规,得加几层校验逻辑:
- 核心字段一致性核查:
- 盯紧
product_id,必须和你后台配置的内购商品ID完全一致,防止有人篡改收据套取其他商品权益 - 核对
bid(你的App Bundle ID),避免跨App的无效收据混进来 - 一定要在后台记录所有已处理的
transaction_id和original_transaction_id,防止同一交易被重复兑换
- 盯紧
- Sandbox环境交叉验证:
对可疑交易,切换到Sandbox的校验地址再跑一遍——有些黑产能伪造生产环境的收据,但Sandbox环境下很容易露马脚 - 购买时间合理性检查:
对比purchase_date_ms和当前时间,如果是几年前的旧收据,大概率是被重复利用的,直接拒绝兑换 - 升级到App Store Server API:
别再只用老的verifyReceipt了,Server API能拿到更实时的交易细节,比如退款记录、订阅状态,判断有效性的精度高很多
2. 如果款项没到账,该怎么查?
要是确认交易有效但钱没到,按这个步骤排查:
- 先看结算周期:
Apple不是实时打款,每月结算一次,先确认交易是否已经过了结算周期(去App Store Connect的「付款与财务报告」里查) - 查App Store Connect的交易记录:
在「销售与趋势」里搜对应的transaction_id,看看这笔交易是不是被标记成了退款、取消或者异常状态 - 扒财务报告明细:
下载月度财务报告,筛选对应的交易日期和商品ID,找有没有对应的入账;要是有退款、手续费这类扣除项,报告里也会写清楚 - 找Apple官方支持:
前面都查不出问题的话,直接在App Store Connect提交工单,把transaction_id、product_id这些信息给全,让Apple帮你查钱的流向
3. 第三方为啥能低价卖我们的内购?
这种情况基本都是钻了这些漏洞或者用了灰色手段:
- 家庭共享/账号共享滥用:
黑产买一次内购,用家庭共享分给N个用户,平摊成本后就能低价卖;这种情况下每个用户的收据校验都是有效的,但本质是同一交易被多人使用 - 区域差价套利:
Apple在不同地区的内购定价不一样,黑产在低价区买了之后,通过VPN改地区、转账号的方式把权益卖给高价区的用户,赚差价 - 盗刷信用卡购买:
有些黑产用被盗的信用卡买内购,成本几乎为零,所以能低价卖;但这类交易后面大概率会被银行拒付,你不仅拿不到钱,还可能影响App的评级 - 旧收据重复提交:
要是你后台没记录已处理的交易ID,黑产就会把已经兑换过的旧收据反复提交,骗你给权益
内容的提问来源于stack exchange,提问作者Fish Wu




