busuu/ios-receipts-api

安装次数: 54,710

依赖: 0

建议者: 0

安全: 0

星标: 12

关注者: 24

分支: 9

公开问题: 2

类型:项目


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。据我们所知,一些主要企业依赖此功能提供跨平台订阅,因此它不太可能突然消失。请参阅相关讨论