首页 > 解决方案 > App Store 服务器到服务器通知的目的?

问题描述

App Store 有所谓的“服务器到服务器”通知。即当您购买应用内功能时,Apple 服务器向您服务器的回调方法(发送收据数据)发出 HTTPS 请求。

问题是 - 收据数据中似乎没有用户信息。例如:

"receipt": {
    "original_purchase_date_pst": "2019-03-11 07:35:59 America/Los_Angeles",
    "unique_identifier": "cca492f511da9fb203600195aadf00b5ad11c2f8",
    "original_transaction_id": "1000000509597835",
    "expires_date": "1552389553000",
    "transaction_id": "1000000509597835",
    "quantity": "1",
    "product_id": "com.quest.subscriptiontest.pack1",
    "bvrs": "3",
    "bid": "com.quest.SubscriptionTest",
    "unique_vendor_identifier": "8F59FA71-A8AC-474F-9967-AC06366BE376",
    "web_order_line_item_id": "1000000043169670",
    "original_purchase_date_ms": "1552314959000",
    "expires_date_formatted": "2019-03-12 11:19:13 Etc/GMT",
    "purchase_date": "2019-03-12 11:16:13 Etc/GMT",
    "is_in_intro_offer_period": "false",
    "purchase_date_ms": "1552389373000",
    "expires_date_formatted_pst": "2019-03-12 04:19:13 America/Los_Angeles",
    "is_trial_period": "false",
    "purchase_date_pst": "2019-03-12 04:16:13 America/Los_Angeles",
    "original_purchase_date": "2019-03-11 14:35:59 Etc/GMT",
    "item_id": "1454809891"
  } 

我在这里只看到有关购买本身的信息,我看不到有关用户(进行此购买)的任何信息。那么在没有用户信息的情况下使用此类通知的场景是什么?它只是用于计算财务统计数据还是什么?

标签: app-store

解决方案


预计您将用户数据存储在自己的服务器上。我就是这样做的。

  1. 从 iOS 应用程序向服务器发送收据
  2. 服务器将收据存储为用户数据
  3. 服务器使用 Apple 的收据验证来获取original_transaction_id并将其存储为用户数据。可能应该索引此列/字段。
  4. 随后的 Apple 服务器到服务器通知将包含original_transaction_id您可以用来查找用户的通知。

我已经开源了一个服务器,它使用服务器到服务器的通知和在https://github.com/carpenterscode/superscribe上的主动轮询来处理 iOS App Store 订阅

随意使用它开箱即用,或参考它来让您自己的解决方案工作。


推荐阅读