yanlongli / app-store-server-api
App Store Server API 的 PHP 客户端。从您的服务器管理客户的 App Store 交易。App Store Server API 是一个 REST API,您可以从服务器调用它来请求并提供有关客户应用内购买的信息。应用商店使用 JSON Web Signature (JWS) 规范签署交易和订阅续订信息。
Requires
- php: >=7.0
- ext-json: *
- firebase/php-jwt: *
- guzzlehttp/guzzle: *
This package is auto-updated.
Last update: 2024-09-26 09:46:46 UTC
README
从您的服务器管理客户的应用商店事务。例如,订阅状态、订单历史记录、退款记录、通知推送记录等
概述
App Store Server API 是一个 REST API,您可以从服务器调用它来请求并提供有关客户应用内购买的信息。应用商店将使用 JSON Web Signature (JWS) 规范签署此 API 提供的交易和订阅续订信息。
App Store Server API 与客户设备上的应用安装状态无关。应用商店服务器根据客户的应用程序内购买历史记录返回信息,无论客户是否已安装、已在其设备上删除或重新安装应用程序。
要使用此 API 请求事务和订阅状态信息,请提供任何属于客户的原始事务标识符。事务历史 API 以每次 20 个的顺序响应完整的事务列表,从最早的开始。订阅状态 API 返回客户所有订阅的状态,按其订阅组标识符组织。
概述
App Store Server API 是一个 REST API,您可以从服务器调用它来请求并提供有关您客户的应用内购买的信息。应用商店将签署此 API 提供的交易和订阅续订信息使用 JSON Web 签名(JWS)规范返回。应用商店服务器 API 独立于客户设备上的应用安装状态。应用商店服务器根据客户的应用程序内购买历史记录返回信息,无论客户是否已安装, 已在其设备上删除或重新安装应用程序。要使用此 API 请求事务和订阅状态信息,请提供任何原始事务标识符那是属于顾客的。事务历史 API 响应一个完整的事务列表,每次 20 个,先从最老的开始。subscription status API 返回客户所有订阅的状态,由其订阅组标识符组织。
使用
使用 Send Consumption Information 端点,在收到应用商店服务器通知后,向应用商店发送客户请求退款的可消耗应用内购买的信息。您的数据有助于通知退款决策。CONSUMPTION_REQUEST
授权您的 API 调用
API 调用需要 JSON Web Tokens (JWT) 进行授权;您可以从组织的 App Store Connect 账户中获取创建令牌的密钥。请参阅 创建用于 App Store Server API 的 API 密钥 来创建您的密钥。请参阅 使用您的密钥生成令牌 以生成令牌并发送 API 请求。在您获得完整并签名的令牌后,请将令牌作为载体令牌提供在请求的授权标题中。
使用沙盒环境进行测试
大多数 App Store Server API 都可在沙盒环境中进行测试。通过向以下基本 URL 发送请求访问沙盒环境
https://api.storekit-sandbox.itunes.apple.com/
例如,要在沙盒环境中调用 Get Transaction History,请向以下地址发送请求
https://api.storekit-sandbox.itunes.apple.com/inApps/v1/history/{originalTransactionId}
注意路径是区分大小写的./inApps
在沙盒环境中不可用查找订单 ID 端点。
Params 参数
IssuerID & private key id & private key 私钥获取方式
为 App Store Connect API 创建 API Keys 的文档
https://appstoreconnect.apple.com/access/api
or
https://appstoreconnect.apple.com/access/api/subs
应用 bundle id 应用 bundle id
如果您只管理单个应用,可以在构造函数中传递默认设置。
如果你仅管理单个应用,可以在构造函数中传递默认设定。
new \yanlongli\AppStoreServerApi\AppStoreServerApi( ... 'bundleId', );
如果您想同时管理多个应用,可以在具体的接口中传递 bundleid 以覆盖构造函数中的设定。
如果你要同时管理多个应用,可以在具体的接口中传递 bundleId 以覆盖构造函数中的设定。
$example->subscriptions(...,'bundleId');
示例
<?php require_once 'vendor/autoload.php'; $example = new \yanlongli\AppStoreServerApi\AppStoreServerApi( Environment::ENDPOINT_PRODUCTION, 'private key id', 'private key', 'IssuerID', 'app bundle id',// Optional,可选的,如果仅管理单个应用可以设定默认值。 ); // Get Subscription Status $example->subscriptions('originalTransactionId','app bundle id'); // app bundle id 是可选的,这里将覆盖构造函数中的设定。 // Get Transaction History $example->getTransactionHistory('originalTransactionId','revision'); // Consumption Information $example->sendConsumptionInformation('originalTransactionId','requestBody'); // Order ID Lookup $example->lookup('orderId'); // Refund Lookup $example->refundLookup('originalTransactionId'); // Extend a Subscription Renewal Date $example->extendASubscriptionRenewalDate('originalTransactionId','requestBody')
主题
基础
创建用于 App Store 服务器 API 的 API 密钥 创建用于签名 JSON Web 令牌并授权 API 请求的 API 密钥。为 API 请求生成令牌 使用您的私钥创建已签名的 JSON Web 令牌以授权 App Store 服务器 API 请求。
应用内购买历史
获取交易历史 获取您应用的客户的内购交易历史。HistoryResponse 对象 包含客户应用交易历史的响应。
订阅状态
获取所有订阅状态 获取您应用中所有客户的订阅状态。StatusResponse 对象 包含您应用中所有客户订阅状态信息的响应。
消费信息
发送消费信息 在您的服务器接收到消费请求通知后,将可消耗内购的消费信息发送到 App Store。ConsumptionRequest 对象 包含消费信息的请求体。
订单 ID 查询
查找订单 ID 使用订单 ID 从收据中获取客户的内购。orderId 类型 来自 App Store 收据的客户订单 ID。OrderLookupResponse 对象 包含订单查找状态和订单中内购的已签名交易数组的响应。
退款查找
获取退款历史 获取客户在您应用中所有已退款内购的列表。RefundLookupResponse 对象 包含已签名 JSON Web 签名 (JWS) 交易数组的响应。
订阅续订日期扩展
扩展订阅续订日期 使用原始交易标识符扩展客户活动订阅的续订日期。ExtendRenewalDateRequest 对象 包含订阅续订扩展数据的请求体。ExtendRenewalDateResponse 对象 表示续订日期扩展是否成功及其相关详情的响应。
JWS 标头和有效载荷
对象 JWSDecodedHeader 包含交易或续订信息的解密 JSON Web Signature 标题。 类型 JWSTransaction 交易信息,由 App Store 签署,以 JSON Web Signature 格式。 对象 JWSTransactionDecodedPayload 包含交易信息的解密有效载荷。 交易数据类型 解密交易有效载荷中使用的数据类型。 类型 JWSRenewalInfo 由 App Store 签署的订阅续订信息,以 JSON Web Signature 格式。 对象 JWSRenewalInfoDecodedPayload 包含订阅续订信息的解密有效载荷。 订阅续订数据类型 解密续订信息有效载荷中使用的数据类型。
错误信息
错误代码 App Store 服务器 API 响应返回的错误代码。
更改
通知升级到 2.5 版本 升级到 1.5 版本 升级到 1.6 版本 升级到 1.8 版本