与Apple的verifyReceipt JSON混淆以实现自动续订

问题描述

我使用以下URL获得了JSON: table.setRowFactory(tv -> { TableRow<Donation> row = new TableRow<>() { // Listener that updates style when the actionproperty() changes private final changelistener<Donation.Action> listener = (obs,oldAction,newAction) -> updateStyle(); { // make sure listener above is registered // with the correct actionproperty() itemproperty().addListener((obs,oldDonation,newDonation) -> { if (oldDonation != null) { oldDonation.actionproperty().removeListener(listener); } if (newDonation != null) { newDonation.actionproperty().addListener(listener); } }); } @Override protected void updateItem(Donation donation,boolean empty) { super.updateItem(donation,empty); updateStyle(); } private void updateStyle() { Donation donation = getItem(); PseudoClass add = PseudoClass.getPseudoClass("add-row"); pseudoClassstateChanged(add,donation != null && donation.getAction() == Donation.Action.NEW_DONATION); PseudoClass delete = PseudoClass.getPseudoClass("delete-row"); pseudoClassstateChanged(delete,donation != null && donation.getAction() == Donation.Action.DELETE_DONATION); } }; return row ; }); ,所以它是关于沙盒而不是生产的。
我对此JSON有一些疑问,因为它对我来说还不是很清楚,而且我认为很多人也是第一次使用IAP。

如果他的高级帐户已结束(他取消了订阅),我将删除一些用户功能。就我而言,订阅是1周免费试用,然后每月0.99美元。

  1. 该JSON中应该检查哪些对象?
  2. 为什么https://sandBox.itunes.apple.com/verifyReceiptexpire_date相同(仅相差几分钟)?它只取决于沙盒吗?
  3. 我与测试用户进行了订阅,获得了7天的免费试用期,然后进入设置并取消了订阅,然后再次打开应用程序,看到对象purchase_date设置为is_trial_period吗?这是对的吗?然后,我更改了手机的日期,并将其设置为购买日期之后的10天(试用期应该是true,然后我认为呢?),但是对象仍然是false
  4. 此外,我用这部手机多次测试了购买的商品,似乎我在json中得到了所有这些收据,我应该只检查最后一张吗?
  5. 任何人都可以清除数组中称为“状态”的最后一个对象。就我而言,它是true的值。
  6. 我要购买订阅时,它始终是[environment:sandBox]版本。当应用程序投入生产时,这会自动改变吗?

    我想我已经阅读了所有Apple文档以及关于自动更新的IAP 0 ...的问与答...

    我希望有人对此很了解,可以清除有关自动更新的IAP的所有信息。

JSON的一部分,用于@Kishan:
please don't paste links

解决方法

我认为您忘记阅读此document

  1. 我应该检查JSON中的哪些对象?

    您必须从JSON中检查latest_receipt_info,该JSON提供有关您最近交易的信息

  2. 为什么expire_datepurchase_date相同(仅相差几分钟)?只是取决于沙盒吗?

enter image description here

  1. 我与测试用户进行了订阅,获得了7天的免费试用期,然后进入设置并取消了订阅,然后再次打开该应用程序,然后看到将is_trial_period对象设置为true?正确吗?

    据我所知,测试用户无法访问设置页面来管理其iPhone上的订阅。重复5或6次后,沙盒订阅将取消。

  2. 任何人都可以清除数组中名为“状态”的最后一个对象。在我的情况下,该值为0。

    如果收据有效,则为0;如果有错误,则为状态码。

  3. 当我想购买订阅时,它始终是[environment:sandbox]版本。当应用程序投入生产时,这会自动改变吗?

    据我所知,当您将产品(要以IAP形式出售)上载到iTunes connect上时,一旦您的产品获得批准,沙盒中的消息就会被删除。