【发布时间】:2026-01-10 04:20:03
【问题描述】:
对于 iOS 6.1 或更早版本,购买或恢复后收到的应用内购买交易 ID 每次都是唯一的,原始交易 ID 永远不会改变,即使在恢复后也是如此。
但是,对于 iOS7,事务 id 和原始事务 id 总是相同的!我什至尝试刷新收据,从设备中删除应用程序并重新放回去。两个字段始终相同。
有谁知道在哪些情况下交易 ID 会改变?我的服务器逻辑依赖于收据本身的唯一交易 ID,这在 iOS7 的情况下目前不起作用。
以下是 Apple 服务器解密的应用收据。如果我在本地解密,结果相同。
{
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;
}
【问题讨论】:
-
你是如何解密收据的??
-
我遇到了同样的问题。当我恢复以前的购买时,SKPaymentTransaction transactionIdentifier 和 originalTransaction->transactionIdentifier 与我预期的不匹配。但是,当我从捆绑包中读取收据并根据应用商店验证它时,transaction_id 和 original_transaction_id 在苹果返回的 json 中是相同的。为什么?
标签: ios ios7 in-app-purchase