如何在我的服务器上获取有关 Apple 应用内购买的产品信息?

Rad*_*own 5 rest in-app-purchase in-app-billing

事情是这样的。

正在做一些跨平台游戏,出售一些用于我们游戏的虚拟货币,生活真棒。直到出现对 BI 的要求。要求是完全清晰的——这里没有魔法。仅对 Apple 而言,它是(如何温和地说)......地狱。

在这里,我必须报告购买的每个包裹,呈现给用户的价格是多少,以及传递给我们的价格是多少。

所以,好的,在我收到成功购买报告并收到收据后

  • 我将它传递给我的服务器
  • 我用苹果检查收据,解码
  • 在收据中,我找到了包裹 ID - 很棒。

但是没有关于总和的信息:o

在为信用卡进行计费集成时,所有这些都可用。苹果应用内购买的等价物是什么?

更多信息?好的。

我可以作弊并解决一半的问题,将包命名为

com.example.vc100
com.example.vc100_promo1
Run Code Online (Sandbox Code Playgroud)

在这两个包中,用户购买了 100 个 VC 硬币,但是

  • vc100在通常的情况下,按照对我们的游戏平衡器有意义的某个等级的价格出售,并且
  • vc100_promo1通过促销以对我们的营销有意义的更便宜的层的价格出售。

因此,后备方案是维护两个列表。一个在我们的服务器上,一个在苹果后端,在两端重复包和层之间的关系。

另一个回退是对名称中的 VC-sum 和层进行编码。但这将是一个部分解决方案,因为我们仍然不知道向用户呈现什么价格,并且需要在我们这边维护一个列表,该列表会在每次重新定义价格层时更新。

哎呀。我拒绝相信没有更好的方法来做到这一点!

我的目标是营销人员可以在一个地方创建他们希望销售的任何产品 SKU。显然,Apple 不会让我这样做,所以至少让每个平台有一个列表:iTunes 后端的 apple-skus,以及我们的计费合作伙伴的集成层中的跨计费供应商 skus,他们比我们的合作伙伴更加合作。苹果的……苹果漏洞。

基本上,如果客户端可以提取此信息并将其呈现给用户 -必须有一种方法可以在我们的服务器上执行此操作,并为 BI 事件收集此信息。

获得苹果从美国价格中扣除固定百分比的佣金 - 我们所需要的只是在我们的服务器上以当地货币和美元显示所售 SKU 的价格。

有人吗?

gmc*_*ton 5

不幸的是 - 令人难以置信的是 - 苹果没有将价格等级作为收据的一部分包含在内,因此您概述的方法是唯一的选择:

  1. 客户端可以存储价格等级+本地货币价格并在购买时将其发送到服务器
  2. 服务器可以维护一个单独的列表,其中包含[产品 ID -> 价格等级],以及每层的[价格等级 -> 本地货币价格],这两个列表都需要与 iTunes 保持同步。

看起来 iTunes connect 有一个(非官方)JSON API,可用于自动化#2(保持服务器与 iTunes 同步)。不过我还没试过!

请参阅iTunes Connect APIhttps://github.com/fastlane/itc-api-docs


Rad*_*own 1

所以,没多久——没有答案。

我们无法找到通过点对点请求从 Apple 获取此信息的方法。

我们最终要做的是在客户端收集总和并将其与收据一起传递到服务器,使用散列签名保护这些值,然后通过 ssl 发送。

如果有更好的解决方案 - 我仍然想了解它