【问题标题】:Do I have to verify the receipt for every SKPaymentTransaction for subscriptions?我是否必须验证每个 SKPaymentTransaction 订阅的收据?
【发布时间】:2021-02-15 16:21:31
【问题描述】:

我正在我的 iOS 应用中实现自动更新订阅。我的事务处理看起来像这样的伪代码:

func paymentQueue(_queue: SKPaymentQueue, updatedTransactions transactions:[SKPaymentTransaction]) {
  for (t in transactions) {
    let data = Data(contentsOf: getReceiptUrl())

    //this is actually async, but for simplicity here it's just a straight return
    if verifyReceiptWithServer(data) == .success {
      print("Verified receipt successfully!")
    }
    queue.finishTransaction(t)
  }
}

如果在我的应用未激活时订阅多次续订,我可以在此处为每个产品获得不止一次的交易。有时,该应用程序在重新安装时也会同时获得大量旧交易。我需要验证每笔交易吗?还是每个productIdentifier 只做一个更好?或者甚至每次调用paymentQueue:updatedTransactions: 一次?如果磁盘上的收据数据始终相同,那么我每次向服务器发送相同的二进制数据,有时可能很多。

文档链接在答案中表示赞赏。

【问题讨论】:

    标签: ios storekit receipt-validation skpaymenttransaction


    【解决方案1】:

    对于订阅,您只需为所有交易拨打 1 次电话。重要的是您正在验证收据上的权利。因此,只要您的服务器正在查看整个收据,您就应该没问题。

    对于其他 IAP 类型,在为每个更新的交易进行验证之后。

    【讨论】:

      猜你喜欢
      • 2020-06-08
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多