如何在 iOS 上查找用户丢失的应用内购买?

Posted

技术标签:

【中文标题】如何在 iOS 上查找用户丢失的应用内购买?【英文标题】:How to find user's lost in-app purchases on iOS? 【发布时间】:2019-10-03 14:22:50 【问题描述】:

所以我按照官方手册,实现了这个:

https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW1

    用户在应用内付款 应用从 Apple 获取收据信息 此收据信息已发送到我的服务器 我的服务器通过调用 Apple API 验证收据并为客户端激活会员资格

明显的问题是 3. 可能会失败。我有客户抱怨他们付款了,他们向我发送了被扣除金额的 SS,但我的服务器从未收到通知。而且我没有办法找到这些用户。是否有一些 CP,我可以通过客户电子邮件或交易 ID 进行搜索,以检查这是 Photoshop 截图还是有效截图?

是否有一些 API 可以调用来按产品和客户的电子邮件列出交易?

https://appstoreconnect.apple.com/ - Apple CP 对这个没用

【问题讨论】:

【参考方案1】:

没有任何方法可以将客户详细信息与您的交易详细信息关联起来。只有苹果可以做到这一点。

我的第一个怀疑是您的购买过程中可能存在逻辑问题。如果正确实施,步骤 3 中的暂时性故障无关紧要。

你应该:

    在您的应用程序启动后立即创建您的事务队列观察器。这将使任何待处理的交易都能够交付给您的观察者 当您在观察者中获得购买交易时,您会与您的服务器进行验证 只有在您从服务器收到成功记录购买的响应后,您才会致电finishTransaction

这样,如果您的服务器出现问题或应用程序崩溃,事务仍会在队列中等待处理。

如果您使用的是自动续订和/或非消耗性 IAP,那么我 强烈建议您在您的 用户界面。如果出现问题或何时 他们转移到新设备上。

如果您有用户声称他们没有得到他们所支付的费用,那么您可以将他们推荐给可以为交易退款的 Apple App Store 支持。

【讨论】:

【参考方案2】:

如果第三步失败,您可以退回到本地验证,然后让用户通过此会话(或在您要求它成功之前的一些会话)。不幸的是,本地身份验证很麻烦,因为收据是加密的。有关示例,请参见此链接:https://github.com/andrewcbancroft/SwiftyLocalReceiptValidator。您还可以将第 3 步的失败报告给您的分析工具,这样您就可以看到谁实际上受到了此问题的影响(显然,这仅在分析最终获得 Internet 连接时才有效。

【讨论】:

以上是关于如何在 iOS 上查找用户丢失的应用内购买?的主要内容,如果未能解决你的问题,请参考以下文章

如何在两个 iOS 应用之间共享应用内购买数据?

iOS:我如何确定用户是不是仍有资格免费试用应用内购买订阅?

如何根据每个用户存储应用内购买以供离线使用

如何恢复消耗品应用内购买?

如何使用华为手机查找

如何在不使用 ios 应用中的应用内购买的情况下处理付款? [关闭]