gpt4 book ai didi

ios - 当 iOS7 应用程序收据中的交易 ID 发生变化时?

转载 作者:技术小花猫 更新时间:2023-10-29 10:17:41 26 4
gpt4 key购买 nike

对于 iOS 6.1 或更早版本,每次购买或恢复后收到的应用内购买交易 ID 都是唯一的,原始交易 ID 永远不会改变,即使在恢复后也是如此。

但是,对于iOS7,交易id和原始交易id总是一样的!我什至尝试刷新收据,从设备中删除应用程序,然后再放回去。这两个字段始终相同。

有谁知道在什么情况下交易ID会改变?我的服务器逻辑依赖于收据本身的唯一交易 ID,目前在 iOS7 的情况下不起作用。

以下为苹果服务器解密后的应用收据。如果我在本地解密,结果相同。

{
environment = Sandbox;
receipt = {
"adam_id" = 0;
"application_version" = "1.0";
"bundle_id" = "com.###";
"download_id" = 0;
"in_app" = (
{
"is_trial_period" = false;
"original_purchase_date" = "2014-02-18 14:23:40 Etc/GMT";
"original_purchase_date_ms" = 1392733420000;
"original_purchase_date_pst" = "2014-02-18 06:23:40 America/Los_Angeles";
"original_transaction_id" = 1000000101860870;
"product_id" = "com.###";
"purchase_date" = "2014-02-24 09:12:21 Etc/GMT";
"purchase_date_ms" = 1393233141000;
"purchase_date_pst" = "2014-02-24 01:12:21 America/Los_Angeles";
quantity = 1;
"transaction_id" = 1000000101860870;
}
);
"original_application_version" = "1.0";
"original_purchase_date" = "2013-08-01 07:00:00 Etc/GMT";
"original_purchase_date_ms" = 1375340400000;
"original_purchase_date_pst" = "2013-08-01 00:00:00 America/Los_Angeles";
"receipt_type" = ProductionSandbox;
"request_date" = "2014-02-24 09:12:56 Etc/GMT";
"request_date_ms" = 1393233176903;
"request_date_pst" = "2014-02-24 01:12:56 America/Los_Angeles";
};
status = 0;
}

最佳答案

交易日期正确更新

我们可以利用交易日期被正确更新的观察(即使在 Sanbox 环境中,当然在生产环境中):

"in_app":[{"quantity":"1", "product_id":"###",
"transaction_id":"1000000122762089",
"original_transaction_id":"1000000122762089",
"purchase_date":"2014-09-07 16:15:13 Etc/GMT",
"purchase_date_ms": "1410106513000",
"purchase_date_pst":"2014-09-07 09:15:13 America/Los_Angeles",
"original_purchase_date":"2014-09-07 05:35:16 Etc/GMT",
"original_purchase_date_ms":"1410068116000",
"original_purchase_date_pst":"2014-09-06 22:35:16 America/Los_Angeles",
"is_trial_period":"false"}]

您可以看到 purchase_date_msoriginal_purchase_date_ms 不同。

因此:强制交易 ID 和日期组合的唯一性

不仅在您的服务器数据库中存储交易 ID,还存储购买日期(不是原始购买日期)。对于合法的恢复交易,这两个值的组合不会存在于您的数据库中,但如果收据是重播,则会与现有记录冲突。

请注意,我们正在寻找来自验证服务器的响应,这意味着客户将无法更改日期,就像他们无法在不破坏收据有效性的情况下更改交易 ID 一样。

关于ios - 当 iOS7 应用程序收据中的交易 ID 发生变化时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21983928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com