【问题标题】:iOS IAP receipt contains old consumable purchasesiOS IAP 收据包含旧的消耗品购买
【发布时间】:2017-04-28 10:08:15
【问题描述】:

在我的应用程序中,我购买了 3 个消耗品,当我购买一个时,我收到 IAP 收据,其中包含 4 个购买:一个是我刚刚购买的,一个是我不久前购买的 3 个旧购买。 3 旧的购买总是 相同。看起来他们从未调用过finishTransaction 方法。我在沙盒模式下进行购买。如果我切换到另一个测试用户,一切正常。我收到一张只有一次购买的收据。为什么我不断收到旧的购买以及如何从收据中删除它们?

这是我收到的收据:

{
  "status" : 200,
  "exectime" : 2032,
  "response" : {
    "status" : 0,
    "receipt" : {
      "receipt_type" : "ProductionSandbox",
      "app_item_id" : 0,
      "receipt_creation_date" : "2017-04-28 04:34:20 Etc\/GMT",
      "bundle_id" : "xxxx",
      "original_purchase_date" : "2013-08-01 07:00:00 Etc\/GMT",
      "in_app" : [
        {
          "product_id" : "xxxx.50Minutes",
          "quantity" : "1",
          "transaction_id" : "xxxx",
          "purchase_date_ms" : "1493289005000",
          "original_purchase_date_pst" : "2017-04-27 03:30:05 America\/Los_Angeles",
          "purchase_date_pst" : "2017-04-27 03:30:05 America\/Los_Angeles",
          "original_purchase_date_ms" : "1493289005000",
          "is_trial_period" : "false",
          "original_purchase_date" : "2017-04-27 10:30:05 Etc\/GMT",
          "original_transaction_id" : "xxxx",
          "purchase_date" : "2017-04-27 10:30:05 Etc\/GMT"
        },
        {
          "product_id" : "xxxx.15Minutes",
          "quantity" : "1",
          "transaction_id" : "xxxx",
          "purchase_date_ms" : "1493289017000",
          "original_purchase_date_pst" : "2017-04-27 03:30:17 America\/Los_Angeles",
          "purchase_date_pst" : "2017-04-27 03:30:17 America\/Los_Angeles",
          "original_purchase_date_ms" : "1493289017000",
          "is_trial_period" : "false",
          "original_purchase_date" : "2017-04-27 10:30:17 Etc\/GMT",
          "original_transaction_id" : "xxxx",
          "purchase_date" : "2017-04-27 10:30:17 Etc\/GMT"
        },
        {
          "product_id" : "xxxx.15Minutes",
          "quantity" : "1",
          "transaction_id" : "xxxx",
          "purchase_date_ms" : "1493354060000",
          "original_purchase_date_pst" : "2017-04-27 21:34:20 America\/Los_Angeles",
          "purchase_date_pst" : "2017-04-27 21:34:20 America\/Los_Angeles",
          "original_purchase_date_ms" : "1493354060000",
          "is_trial_period" : "false",
          "original_purchase_date" : "2017-04-28 04:34:20 Etc\/GMT",
          "original_transaction_id" : "xxxx",
          "purchase_date" : "2017-04-28 04:34:20 Etc\/GMT"
        },
        {
          "product_id" : "xxxx.100Minutes",
          "quantity" : "1",
          "transaction_id" : "xxxx",
          "purchase_date_ms" : "1493289033000",
          "original_purchase_date_pst" : "2017-04-27 03:30:33 America\/Los_Angeles",
          "purchase_date_pst" : "2017-04-27 03:30:33 America\/Los_Angeles",
          "original_purchase_date_ms" : "1493289033000",
          "is_trial_period" : "false",
          "original_purchase_date" : "2017-04-27 10:30:33 Etc\/GMT",
          "original_transaction_id" : "xxxx",
          "purchase_date" : "2017-04-27 10:30:33 Etc\/GMT"
        }
      ],
      "adam_id" : 0,
      "receipt_creation_date_pst" : "2017-04-27 21:34:20 America\/Los_Angeles",
      "request_date" : "2017-04-28 04:34:34 Etc\/GMT",
      "request_date_pst" : "2017-04-27 21:34:34 America\/Los_Angeles",
      "version_external_identifier" : 0,
      "request_date_ms" : "1493354074233",
      "original_purchase_date_pst" : "2013-08-01 00:00:00 America\/Los_Angeles",
      "application_version" : "1",
      "original_purchase_date_ms" : "1375340400000",
      "receipt_creation_date_ms" : "1493354060000",
      "original_application_version" : "1.0",
      "download_id" : 0
    },
    "environment" : "Sandbox"
  },
  "memory" : 649368
}

【问题讨论】:

    标签: ios swift in-app-purchase


    【解决方案1】:

    这些是待处理的交易。解决方案是创建一个新的沙盒用户。然后添加queue.finishTransaction(transaction)所有事务状态

    public func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
            for transaction in transactions {
                switch (transaction.transactionState) {
                case .purchased:
                     queue.finishTransaction(transaction)
                    break
                case .failed:
                    queue.finishTransaction(transaction)
                    break
                case .restored:
                    queue.finishTransaction(transaction)
                    break
                case .deferred:
                    break
                case .purchasing:
                    break
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-30
      • 2021-07-10
      相关资源
      最近更新 更多