关于通过RevenueCat API查询iOS用户优惠码兑换状态及Subscription Offer Codes相关字段的技术咨询
问题2:RevenueCat的PurchaserInfo是否提供类似offer_code_ref_name的字段?如果没有,其他判断方式?
先明确一点:目前PurchaserInfo对象并没有直接暴露offer_code_ref_name字段——RevenueCat没有把Apple收据里的这个特定字段映射到PurchaserInfo的顶层结构中。
不过你可以通过以下几种方式替代:
从
PurchaserInfo的latest_receipt_info中提取latest_receipt_info数组里包含了Apple收据的原始交易数据,你可以遍历这些条目,查找offer_code_ref_name键(如果购买使用了优惠码,这个字段会被包含在交易数据里)。举个iOS Swift的例子:Purchases.shared.getPurchaserInfo { purchaserInfo, error in guard let info = purchaserInfo else { return } for receiptEntry in info.latestReceiptInfo ?? [] { if let offerRefName = receiptEntry["offer_code_ref_name"] as? String { // 找到优惠码标识名 print("已兑换优惠码: \(offerRefName)") } } }服务端解析收据
如果不想在客户端做解析,可以用RevenueCat的服务端API获取用户的完整收据数据,然后在你的后端解析提取offer_code_ref_name。API响应里的original_receipt字段是Base64编码的Apple收据,你可以像用Apple官方验证服务那样解码和验证它。本地记录兑换信息(可选)
当你在APP中发起优惠码兑换流程(调用Purchases.shared.redeemOfferCode(_:completion:))后,一旦兑换成功,你可以在本地做记录(比如把优惠码标识名存到UserDefaults或自己的后端),这样之后需要查询时就不用解析收据,直接读取记录即可。
内容的提问来源于stack exchange,提问作者Sagar Joshi
相关产品推荐
相关产品推荐

