readdle/app-store-server-api
Pure-PHP library that allows managing customer transactions using the App Store Server API and handling server-to-server notifications using the App Store Server Notifications V2
3.17.0
533K downloads/mo
#4712 most downloaded on Packagist
readdle/app-store-server-api
What this package is like to depend on
Last release 3 months ago
19 May 2026
Release timing varies
gaps range from 1 weeks to 6 months
Most releases are documented
notes for 32 of 42 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
42 releases · first in 2022
4 releases in the last 12 months
see the full history below
Release timeline
42 releases · Oct 2022 to May 2026Releases
latest 42-
3.17.019 May 2026Release notes
Open source →IMPROVEMENTS:
- Added
DecodedRealtimeRequestBody - Added
RealtimeResponseBody
FIXES: - Deleted composer.lock and added to gitignore
- Fixed phpunit version so it is compatible with PHP version
- Added
-
3.16.016 Mar 2026Release notes
Open source →BUGFIX:
composer.json:autoload-devPSR-4 namespace fixedAbstractRequestQueryParams::getQueryString()integer values handling fixed- Unit tests added for
GetTransactionHistoryQueryParams::getQueryString()
IMPROVEMENTS:
setAppAccountToken()support added toAppStoreServerAPI- New request classes for the endpoint:
SetAppAccountTokenRequest,UpdateAppAccountTokenRequestBody
Release notes
Open source →BUGFIX:
composer.json:autoload-devPSR-4 namespace fixedAbstractRequestQueryParams::getQueryString()integer values handling fixed- Unit tests added for
GetTransactionHistoryQueryParams::getQueryString()
IMPROVEMENTS:
setAppAccountToken()support added toAppStoreServerAPI- New request classes for the endpoint:
SetAppAccountTokenRequest,UpdateAppAccountTokenRequestBody
-
3.15.025 Sep 2025 -
3.14.009 Sep 2025 -
3.13.014 Aug 2025 -
3.12.022 May 2025 -
3.11.124 Mar 2025Release notes
Open source →BUGFIX:
TransactionInfo::getAppTransactionId()make it public (silly bug)
Release notes
Open source →BUGFIX:
TransactionInfo::getAppTransactionId()make it public (silly bug)
-
3.11.022 Mar 2025Release notes
Open source →IMPROVEMENTS:
- Introduced new field to
TransactionInfo:appTransactionId - Introduced new fields to
RenewalInfo:appAccountToken,appTransactionId,currency,eligibleWinBackOfferIds,offerDiscountType,offerPeriod,renewalPrice - App Store Server API version compatibility: 1.15 - 2025/02/21
Release notes
Open source →IMPROVEMENTS:
- Introduced new field to
TransactionInfo:appTransactionId - Introduced new fields to
RenewalInfo:appAccountToken,appTransactionId,currency,eligibleWinBackOfferIds,offerDiscountType,offerPeriod,renewalPrice
- Introduced new field to
-
3.10.222 Oct 2024Release notes
Open source →BUGFIX:
- Calling
sendConsumptionInformation()w/o passing optional parameterrefundPreferenceresults in fatal error
IMPROVEMENTS:
- Insignificant refactoring of
AbstractRequestParamsBagclass
Release notes
Open source →BUGFIX:
- Calling
sendConsumptionInformation()w/o passing optional parameterrefundPreferenceresults in fatal error (kudos to @javiermarinros)
IMPROVEMENTS:
- Insignificant refactoring of
AbstractRequestParamsBagclass
- Calling
-
3.10.118 Oct 2024Release notes
Open source →BUGFIX:
AbstractRequestParamsBag::isValueMatchingPropValues()fixed (double negation if value is an array)AbstractRequestQueryParams::getQueryString()fixed (bool values are now explicitly converted to strings)
Release notes
Open source →BUGFIX:
AbstractRequestParamsBag::isValueMatchingPropValues()fixed (double negation if value is an array, kudos to @neoighodaro)AbstractRequestQueryParams::getQueryString()fixed (bool values are now explicitly converted to strings, kudos to @neoighodaro)
-
3.10.018 Oct 2024Release notes
Open source →IMPROVEMENTS:
- New field
consumptionRequestReasonadded toAppMetadata - New field
refundPreference(and corresponding constants) added toConsumptionRequestBody(kudos to @sedlak477)
- New field
-
3.9.007 Oct 2024Release notes
Open source →IMPROVEMENTS:
- In-app purchase history V2 support added (kudos to @anegve)
-
3.8.108 Jul 2024Release notes
Open source →BUGFIX:
- Default TTL for payload introduced and set to 5 min. Previous value of 1 hour (which is the maximum) seems to be the cause of failed responses in some cases.
- Makefile introduced just to have a shortcut 'make shell' for running Docker container using PHP image and having project directory mounted
-
3.8.008 Apr 2024Release notes
Open source →IMPROVEMENTS:
- Nullable properties now are NOT converted to empty int/bool/float/string in AppMetadata, RenewalInfo, ResponseBodyV2, TransactionInfo, kudos to @dbrkv for pointing this out
- ArrayTypeCastGenerator moved to the separate class
- PHPUnit tests introduced (just the first one for ArrayTypeCastGenerator atm)
- Examples reworked a bit (RenewalInfo/TransactionInfo printing moved to the separate helper function)
-
3.7.028 Mar 2024Release notes
Open source →IMPROVEMENTS:
- Now the response content of the HTTP response is available in
HTTPRequestFailedexception usinggetResponseText()method, kudos to @soxft for pointing this out
- Now the response content of the HTTP response is available in
-
3.6.305 Mar 2024Release notes
Open source →BUGFIX:
- Handle empty response headers in case if HTTP request to the API fails (and it fails regularly, kudos to Apple)
-
3.6.225 Jan 2024Release notes
Open source →BUGFIX:
- If the certificate string already has a prefix, there is no need to add it
-
3.6.119 Dec 2023Release notes
Open source →BUGFIX:
- Treat "202 Accepted" as successful response (App Store returns it on "Send consumption information" request), kudos to @teanooki for pointing this out
-
3.6.013 Dec 2023Release notes
Open source →IMPROVEMENTS:
New fields implemented
TransactionInfo:price,currency, andofferDiscountTypefrom App Store Server API version 1.10
-
3.5.210 Oct 2023Release notes
Open source →BUGFIX:
- Logic issue in PageableResponse, after fixing syntax issue in
3.5.1
- Logic issue in PageableResponse, after fixing syntax issue in
-
3.5.105 Oct 2023Release notes
Open source →BUGFIX:
- Syntax issue in PageableResponse for PHP 7.4, kudos to @JamieSTV
-
3.5.021 Sep 2023Release notes
Open source →IMPROVEMENTS:
Missing endpoints added:
- Send Consumption Information
- Extend a Subscription Renewal Date
- Extend Subscription Renewal Dates for All Active Subscribers
- Get Status of Subscription Renewal Date Extensions
-
3.4.117 Sep 2023Release notes
Open source →BUGFIX:
TransactionInfo:storefront,storefrontId, andtransactionReasonare now nullable and null by default, in order to be compatible with old notificationsRenewalInfo:renewalDateis now null by default, in order to be compatible with old notificationsResponse\NotificationHistoryResponse:paginationTokenpresence in response is now optional
-
3.4.016 Sep 2023 -
3.3.215 Sep 2023Release notes
Open source →BUGFIX:
- ASN1SequenceOfInteger: multiple
00bytes in the beginning of integer numbers handled when parsing HEX signature representation
- ASN1SequenceOfInteger: multiple
-
3.3.106 Sep 2023Release notes
Open source →BUGFIX:
AppMetadata:bundleId,bundleVersion,renewalInfo,transactionInfoandstatusnow areNULLby default (to preventTyped property ... must not be accessed before initializationerror)
-
3.3.005 Sep 2023 -
3.2.003 Sep 2023Release notes
Open source →IMPROVEMENTS:
- New fields implemented
RenewalInfo:renewalDateTransactionInfo:storefront,storefrontId,transactionReason
- New fields implemented
-
3.1.103 Sep 2023Release notes
Open source →BUGFIX:
ResponseBodyV2:createFromRawNotification()fix, now it checks incoming notification to be not only a valid JSON, but also to be an array
-
3.1.026 Aug 2023Release notes
Open source →BUGFIX:
ASN1SequenceOfInteger: math fixesStatusResponse:dataarray initialization with[]
IMPROVEMENTS:
HTTPRequest: PUT method added; HTTP method and URL added toHTTPRequestFailedexception messageJWT: additional information in exception message
-
3.0.123 Aug 2023Release notes
Open source →BUGFIX:
- Math bug fixed in
ASN1SequenceOfInteger. In rare cases signature was calculated in a wrong way which led toWrong signatureexception inJWT::verifySignature
- Math bug fixed in
-
3.0.018 Aug 2023Release notes
Open source →BREAKING CHANGES:
- Main classes renamed:
APIClient->AppStoreServerAPIAPIClientInterface->AppStoreServerAPIInterfaceNotification\ResponseBodyV2->ResponseBodyV2JWT->Util\JWTRequest\GetTransactionHistory->Request\GetTransactionHistoryRequestRequest\RequestTestNotification->Request\RequestTestNotificationRequestRequest\GetTransactionHistoryQueryParams->RequestQueryParams\GetTransactionHistoryQueryParams
- Environment consts moved out from all classes to the separate class
Environment getTransactionHistory()method signature changed: it no longer expects for QueryParams instance as a second arguments, now it expects array insteadAppStoreServerAPI(previouslyAPIClient) constructor signature changed:$environmentargument type changed from int to string$keyIdand$keyarguments swapped
IMPROVEMENTS:
- PHP 7.4 support out of the box ;)
- A lot of new endpoints (see README)
- Examples for all implemented endpoints (and notification listener)
- Main classes renamed:
-
2.1.105 Oct 2023Nothing published for this version
-
2.1.008 Jun 2023Nothing published for this version
-
2.0.102 Mar 2023Nothing published for this version
-
2.0.025 Jan 2023Nothing published for this version
-
1.0.531 Oct 2022Nothing published for this version
-
1.0.431 Oct 2022Nothing published for this version
-
1.0.328 Oct 2022Nothing published for this version
-
1.0.227 Oct 2022Nothing published for this version
-
1.0.127 Oct 2022Nothing published for this version
-
1.0.025 Oct 2022Nothing published for this version