由于我使用服务器来遵循iOS 6的最佳实践,我也想将它用于iOS 7(主要用于订阅).
这是一个报刊杂志的应用程序,所以我在我的服务器上保留收据,我想检查哪些收据包含有效订阅,以便我可以向这些用户发送推送通知,以便后续下载下一期.
对于iOS 6,一切正常,但在iOS 7中存在很多混乱.
在receipt validation documentation中,它表示要验证可自动更新的订阅收据,我们会发送带有共享密钥的JsON对象,然后我们会收到具有特定状态的响应.
这适用于iOS 7吗?这对我来说不是很清楚.
iOS 7收据的状态是指应用程序收据本身(而非应用程序购买中的特定应用程序).那么如果我必须检查应用收据中的每个iap条目(例如,将iap到期日期与当前日期进行比较),我是否必须在我的服务器上实现应用收据解析?
还有办法通知我要检查哪个特定的购买?
我猜不是.
我是否必须使用我的服务器进行iOS 6和iOS 7的设备验证?如果是,怎么样? :S
解决方法 对于iOS7,您不会将SKPaymentTransaction的transactionReceipt发送到您的服务器,而是发送应用收据(在base64编码之后,就像您对transactionReceipt一样).您可以尝试在此answer中运行实现,以查看如何发送它以及查看从App Store返回的JsON响应的结构.
JsON响应有一个latest_receipt_info字段,其中包含用户已进行的应用内购买列表以及有关其过期的信息,例如:
“latest_receipt_info”:({
“quantity”:”1″,
“product_ID”:”com.example.subscription_30″,
“transaction_ID”:”1000000097606958″,
“original_transaction_ID”:”1000000097606821″,
“purchase_date”:”2014-01-01 13:22:25 Etc/GMT”,
“purchase_date_ms”:”1388582545000″,
“purchase_date_pst”:”2014-01-01 05:22:25 America/Los_Angeles”,
“original_purchase_date”:”2014-01-01 11:10:40 Etc/GMT”,
“original_purchase_date_ms”:”1388574640000″,
“original_purchase_date_pst”:”2014-01-01 03:10:40 America/Los_Angeles”,
“expires_date”:”2014-01-01 11:14:35 Etc/GMT”,
“expires_date_ms”:”1388574875000″,
“expires_date_pst”:”2014-01-01 03:14:35 America/Los_Angeles”,
“web_order_line_item_ID”:”1000000027707568″},
…)
JsON响应还包括latest_receipt字段,其中包含您可以存储在服务器上的收据(base64编码),并发送到Apple的验证服务器,就像您存储的iOS6收据一样.
看起来你需要手动计算是否有任何有效订阅.也许是这样的(未经测试):
$desired_product_IDentifIEr = <IDentifIEr of your in-app purchase>;$response = <JsON response you get from Apple verification server>;$receipt = Json_decode($response); $latest_expiration_interval_since_1970 = 0;for ($receipt_info in $receipt['latest_receipt_info']) { if ($receipt_info['product_ID'] != $desired_product_IDentifIEr) continue; $expiration_interval_since_1970 = intval(doubleval($receipt_info['expires_date_ms']) / 1000.0); if ($expiration_interval_since_1970 > $latest_expiration_interval_since_1970) { $latest_expiration_interval_since_1970 = $expiration_interval_since_1970; }}$is_subscription_active = ($latest_expiration_interval_since_1970 > time());
如果这不起作用,并且您需要为iOS7执行本地应用程序收据验证,您可以查看我的github library自动续订订阅或RMStore.希望这有帮助!
@H_419_2@ 总结以上是内存溢出为你收集整理的iOS 7服务器收据验证(php)全部内容,希望文章能够帮你解决iOS 7服务器收据验证(php)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)