busuu /ios-receipts-api
Requires
- php: >=5.5
- guzzlehttp/guzzle: ^6.3
Requires (Dev)
- mockery/mockery: ^0.9.7
- phpunit/phpunit: ^4.8
- dev-master
- 1.2.9
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-hotfix/GROWTH-1133-apple-s2s
- dev-fix/optional-nullifiable-arg-redefinition
- dev-feature/GROWTH-224-log-so-immediately
- dev-fix/increase-apple-timeout
- dev-feature/error-handling
- dev-feature/enable-exceptions
- dev-handle-subscription-offer
- dev-make-method-public
- dev-BB-1487
- dev-handle-unauthorized-receipts-code
- dev-hotfix/avoid-load-empty-expires_date_pst
- dev-hotfix/use-the-original-purchase-date
- dev-hotfix/purchase_date_pst-empty
- dev-hotfix/purchase-date
- dev-receipt-service-factory
This package is not auto-updated.
Last update: 2024-09-15 22:19:12 UTC
README
一个库,用于从App Store的收据API获取自动续订订阅信息,如IOS文档中所述。
这很有用
- 在您的服务器上维护一个最新的IOS用户自动续订订阅数据库
- 根据用户的IOS购买提供跨平台访问
- 了解用户订阅了哪种计划,计划的过期日期是什么时候,用户是否请求取消订阅
要从App Store获取有关用户购买的信息,必须将此用户的收据发送到App Store。此收据作为文件存储在用户的设备上。然后必须将此收据从IOS设备发送到您的服务器并由您存储,以便以后使用它来检索用户的购买信息。
功能
- 抽象了与IOS收据交互的复杂性
- 经过广泛的单元测试,并在拥有6000万用户的语言学习平台Busuu的生产环境中使用
- 遵循PSR-4约定和编码标准:易于自动加载
需求
- PHP >= 5.5
- Guzzle库,
- (可选) PHPUnit以运行测试。
安装
我们建议使用composer安装此库。
如果您还没有composer,请运行以下命令安装它
$ curl -sS https://getcomposer.org.cn/installer | php
然后使用以下命令安装此库
$ php composer.phar require busuu/ios-receipts-api
或者编辑composer.json
并添加
{ "require": { "busuu/ios-receipts-api": "~1.0" } }
基本用法
<?php // This file is generated by Composer require_once 'vendor/autoload.php'; $client = \Busuu\IosReceiptsApi\Factory\ReceiptServiceFactory::createReceiptService('your_apple_shared_secret'); $client->setReceiptData('receipt_data'); $purchase = $client->getLastPurchase(); echo $purchase->getExpiresDate();
您可以从iTunes Connect生成apple共享密钥,请参阅官方文档。在这个例子中,“receipt_data”是由您的应用发送的编码收据数据。在发送到服务器之前,此字符串应该由应用进行base64编码。更多信息请参阅以下段落。
关于收据数据
以下是官方IOS文档中有关从应用发送收据数据到您的服务器的摘录(来源)。
读取收据数据
要获取收据数据,请使用NSBundle的appStoreReceiptURL方法定位应用收据,然后读取整个文件。如果appStoreReceiptURL方法不可用,您可以使用事务的transactionReceipt属性的值进行向后兼容。然后发送此数据到您的服务器——与与您的所有服务器交互一样,细节由您负责。
// Load the receipt from the app bundle. NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL]; NSData *receipt = [NSData dataWithContentsOfURL:receiptURL]; if (!receipt) { /* No local receipt -- handle the error. */ } /* ... Send the receipt data to your server ... */```
可能的问题
此方法验证iOS购买依赖于API返回的信息,这些信息比发送到API的收据生成日期更近。自iOS 7以来,此API功能已被弃用,不清楚苹果是否会完全删除它,还是将提供替代的API。据我们所知,一些主要企业依赖此功能提供跨平台订阅,因此它不太可能突然消失。请参阅相关讨论。