PackageTrack
Sign in Get early access

aporat/store-receipt-validator

PHP receipt validator for Apple App Store and Amazon Appstore

9.0.0 4.0M downloads/mo #4288 most downloaded on Packagist aporat/store-receipt-validator

What this package is like to depend on

Last release 3 months ago

15 May 2026

Release timing varies

gaps range from 2 weeks to 12 months

Rarely documented

notes for 9 of 58 stable releases

Nothing withdrawn

no release was ever pulled

12 years old

58 releases · first in 2014

5 releases in the last 12 months

see the full history below

Release timeline

58 releases · Aug 2014 to May 2026
2015 2017 2019 2021 2023 2025
Release Pre-release

Releases

latest 58
  1. 9.0.0 15 May 2026
    Release notes

    v9.0.0 — App Store Server API expansion
    The AppleAppStore\Validator now covers Apple's full App Store Server API surface — transactions, subscriptions, refunds, notifications, and consumption — with typed request/response objects, JWS verification, and PSR-3 logging on every call.

    ✨ New endpoints on AppleAppStore\Validator
    getTransactionHistory() / getTransactionInfo() / getAppTransactionInfo()
    finishTransaction(), setAppAccountToken(), sendConsumptionInformation()
    lookUpOrderId(), getRefundHistory()
    getAllSubscriptionStatuses(), extendSubscriptionRenewalDate(), extendSubscriptionRenewalDatesForAllActiveSubscribers(), getStatusOfSubscriptionRenewalDateExtensions()
    getTestNotificationStatus(), getNotificationHistory()

    ⚠️ Deprecations
    Validator::validate() is deprecated. Use getTransactionHistory() for paginated history or getTransactionInfo() for a single transaction. It still works and will be removed in a future major release.

    Full Changelog: 8.0.0...9.0.0

    Open source →
    Release notes

    Version 9.0.0 of the Google Play Billing Library and Kotlin extensions are now available. See the PBL 9 migration guide if you want to migrate from the previous versions of PBL.

    Summary of changes

    Updated error codes for blocked Play Store activity : Error codes for blocked Play Store apps have been updated. For instances where the Play Store app is blocked by the system (for example, in OEM-customized kids mode), the response code has changed from ERROR to BILLING_UNAVAILABLE . Additionally, the BillingResult for such cases now provides a Play Store is blocked debug message. Note: For this feature to work, you need AndroidX.core library version 1.9 or later.

    Nullability update for developer-provided billing : The DeveloperProvidedBillingDetails.getLinkUri() method has been updated to be @Nullable . This change supports scenarios where the direct link URI for external payments is unavailable during the payment selection stage.

    To handle this change safely, ensure your integration code handles both null and empty string ( "" ) values from the DeveloperProvidedBillingDetails.getLinkUri() method before parsing or launching browser intents.

    Updated targetSdkVersion to 35.

    You can now use in-app messaging to notify users of an upcoming opt-in price increase. This lets users confirm the price increase without leaving the app. The message for an outstanding opt-in price increase is shown starting on the first day the user can accept the price increase, and the message is shown a maximum of once every 7 days.

    Open source →
  2. 8.0.0 26 Mar 2026
    Release notes

    What's Changed

    • Use Guzzle interface instead of its implementation by @erickskrauch in #209
    • Add comprehensive test coverage for Apple App Store enums by @aporat in #210
    • Add unit tests for iTunes APIError enum and setSharedSecret by @aporat in #211
    • Bump ramsey/composer-install from 3 to 4 by @dependabot[bot] in #213
    • Add PSR-3 logging support to all validators by @aporat in #214
    • Migrate from Guzzle to PSR-18/PSR-17 HTTP interfaces by @aporat in #215
    • Bump codecov/codecov-action from 5 to 6 by @dependabot[bot] in #216

    Full Changelog: 7.1.0...8.0.0

    Open source →
    Release notes

    Version 8.0.0 of the Google Play Billing Library and Kotlin extensions are now available.

    Summary of changes

    In-app items will now be referred to as one-time products .

    Multiple purchase options and offers for one-time products.

    You can now have multiple purchase options and offers for your one-time products. This provides you flexibility in how you sell your products and reduces the complexity of managing them.

    Improved the queryProductDetailsAsync() method.

    Prior to PBL 8.0.0, the queryProductDetailsAsync() method didn't return products that couldn't be fetched. This could be due to reasons such as the product is not found or no offers are available to the user. With PBL 8.0.0, unfetched products are returned with a new product-level status code that provides information about unfetched products. Note that there is a change in the signature of the ProductDetailsResponseListener.onProductDetailsResponse() which requires changes in your app. For more information, see process the result .

    Automatic service reconnection.

    The new BillingClient.Builder.enableAutoServiceReconnection() builder parameter lets developers opt-in to automatic service reconnection, which simplifies connection management by handling reconnections to the Play Billing Service automatically and eliminating the need to manually call startConnection() in the event of a service disconnection. For more information, see Automatically Re-establish a Connection .

    Sub-response codes for the launchBillingFlow() method.

    The BillingResult returned from launchBillingFlow() will now include a sub-response code field. This field will only be populated in some cases to provide a more specific reason for the failure. The sub-response field can have the following values:

    • PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS - Returned when the user's funds are less than the price of the item they are attempting to purchase.

    • USER_INELIGIBLE - Returned when the user doesn't meet the configured eligibility requirements for a subscription offer.

    • NO_APPLICABLE_SUB_RESPONSE_CODE - The default value, returned when no other sub-response code is applicable.

    Removed the queryPurchaseHistory() method.

    The queryPurchaseHistory() method that was previously marked as deprecated has now been removed. See Query Purchase History for details on what alternative APIs to use instead.

    Removed the querySkuDetailsAsync() method.

    The querySkuDetailsAsync() method that was previously marked as deprecated has now been removed. You should use queryProductDetailsAsync instead.

    Removed the BillingClient.Builder.enablePendingPurchases() method.

    The enablePendingPurchases() method with no parameters that was previously marked as deprecated has now been removed. You should use enablePendingPurchases(PendingPurchaseParams params) instead. Note that the deprecated enablePendingPurchases() is functionally equivalent to enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()) .

    Removed the overloaded queryPurchasesAsync() method that takes a skuType .

    The queryPurchasesAsync(String skuType, PurchasesResponseListener listener) method that was previously marked as deprecated has now been removed. Alternately, use queryPurchasesAsync(QueryPurchasesParams queryPurchasesParams, PurchasesResponseListener listener) .

    Open source →
  3. 7.1.0 29 Jan 2026
    Release notes

    What's Changed

    • Bump codecov/codecov-action from 4 to 5 by @dependabot[bot] in #201
    • Bump actions/checkout from 4 to 5 by @dependabot[bot] in #202
    • Update squizlabs/php_codesniffer requirement from ^3.10 to ^3.10 || ^4.0 by @dependabot[bot] in #203
    • Bump actions/checkout from 5 to 6 by @dependabot[bot] in #204
    • Bump actions/cache from 4 to 5 by @dependabot[bot] in #205
    • Improve popular package with updates and fixes by @aporat in #206
    • Mark iTunes API classes as deprecated in favor of App Store Server API by @aporat in #207
    • Improve code quality with strict types and readonly classes by @aporat in #208

    Full Changelog: 7.0.0...7.1.0

    Open source →
    Release notes

    Version 7.1.0 of the Google Play Billing Library and Kotlin extensions are now available.

    Summary of changes

    • Improved thread safety related to connection status and management.

    • Introduced partial changes for testing BillingResult response codes which is fully released in Play Billing Library 7.1.1. To test your integration using this feature, you'll need to upgrade to Play Billing Library 7.1.1. A bug exists that will only impact applications with billing overrides testing enabled and does not affect regular usage. For more information, see Test BillingResult response codes .

    Open source →
  4. 7.0.0 17 Sep 2025
    Release notes
    • [Breaking] All date fields now return Carbon\CarbonInterface|null instead of \Carbon\Carbon|null
    Open source →
    Release notes

    Version 7.0.0 of the Google Play Billing Library and Kotlin extensions are now available.

    Summary of changes

    Added APIs to support installment subscriptions.

    • Added ProductDetails.InstallmentPlanDetails for installment base plans that users are eligible to purchase. This API helps your app identify the installment plan and its commitment setup to provide related information to the user. To learn more, see our subscription installments guide .

    Added PendingPurchasesParams and BillingClient.Builder.enablePendingPurchases(PendingPurchaseParams) to replace BillingClient.Builder.enablePendingPurchases() , which has been deprecated in this release.

    • The deprecated enablePendingPurchases() is functionally equivalent to enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()) .

    Added APIs to support pending transactions for subscription prepaid plans:

    • Use PendingPurchasesParams.Builder.enablePrepaidPlans() along with BillingClient.Builder.enablePendingPurchases(PendingPurchaseParams) to enable pending transactions for subscription prepaid plans. When adding support, be sure that your app also correctly manages subscription lifecycles. To learn more see our pending purchases guide .

    • Added Purchase.PendingPurchaseUpdate and Purchase.getPendingPurchaseUpdate() for retrieving the pending top-up or upgrade or downgrade to an existing subscription.

    Removed BillingClient.Builder.enableAlternativeBilling() , AlternativeBillingListener , and AlternativeChoiceDetails .

    • Developers should use BillingClient.Builder.enableUserChoiceBilling() with UserChoiceBillingListener and UserChoiceDetails in the listener callback instead.

    Removed BillingFlowParams.ProrationMode , BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode() , and BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode() .

    • Developers should use BillingFlowParams.SubscriptionUpdateParams.ReplacementMode with BillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int) instead.

    Removed BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken() .

    • Developers should use BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String) instead.

    BillingClient.queryPurchaseHistoryAsync() has been deprecated and will be removed in a future release. Developers should use the following alternatives instead:

    • Acknowledged and pending purchases: Use BillingClient.queryPurchasesAsync() to fetch the active purchases.

    • Consumed purchases: Developers should keep track of consumed purchases on their own servers.

    • Canceled purchases: Use the voided-purchases developer API.

    • For more details, see Query Purchase History

    BillingFlowParams.ProductDetailsParams.setOfferToken() now throws an exception when developers specify an empty offerToken .

    Updated minSdkVersion to 21 and targetSdkVersion to 34.

    Open source →
  5. 6.1.4 16 Sep 2025

    Nothing published for this version

  6. 6.1.2 07 Aug 2025

    Nothing published for this version

  7. 6.1.0 04 May 2025
    Release notes

    Version 6.1.0 of the Google Play Billing Library and Kotlin extensions are now available.

    Summary of changes

    • Added APIs to support alternative billing only (i.e. without user choice)

    • Added BillingClient.Builder.enableAlternativeBillingOnly() to functionally enable the ability to offer alternative billing only.

    • Added BillingClient.isAlternativeBillingOnlyAvailableAsync() to check the availability of offering alternative billing only.

    • Added BillingClient.showAlternativeBillingOnlyInformationDialog() to show an information dialog to inform users when alternative billing only is being used.

    • Added BillingClient.createAlternativeBillingOnlyReportingDetailsAsync() to create a payload required to report transactions made through alternative billing only.

    • Updated the user choice billing APIs

    • Added UserChoiceBillingListener to replace AlternativeBillingListener which has been marked as deprecated.

    • Added UserChoiceDetails to replace AlternativeChoiceDetails which has been marked as deprecated.

    • Added BillingClient.Builder.enableUserChoiceBilling() to replace BillingClient.Builder.enableAlternativeBilling() which has been marked as deprecated.

    • Added BillingClient.getBillingConfigAsync() to retrieve Google Play country.

    Open source →
  8. 6.0.6 02 May 2025

    Nothing published for this version

  9. 6.0.4 19 Apr 2025

    Nothing published for this version

  10. 6.0.2 19 Apr 2025

    Nothing published for this version

  11. 6.0.0 19 Apr 2025

    Nothing published for this version

  12. 5.0.1 11 Mar 2025

    Nothing published for this version

  13. 5.0.0 27 Feb 2025

    Nothing published for this version

  14. 4.4.3 06 Mar 2024

    Nothing published for this version

  15. 4.4.2 02 Feb 2024

    Nothing published for this version

  16. 4.4.1 21 Apr 2023

    Nothing published for this version

  17. 4.4.0 20 Apr 2023

    Nothing published for this version

  18. 4.3.0 10 Nov 2022

    Nothing published for this version

  19. 4.2.0 29 Dec 2021

    Nothing published for this version

  20. 4.1.0 13 Oct 2021

    Nothing published for this version

  21. 4.0.3 02 Dec 2020

    Nothing published for this version

  22. 4.0.2 02 Dec 2020

    Nothing published for this version

  23. 4.0.1 18 Aug 2020

    Nothing published for this version

  24. 4.0.0 04 Aug 2020

    Nothing published for this version

  25. 3.5.0 03 Aug 2020

    Nothing published for this version

  26. 3.4.1 31 Mar 2020

    Nothing published for this version

  27. 3.4.0 19 Nov 2019

    Nothing published for this version

  28. 3.3.0 19 Oct 2019

    Nothing published for this version

  29. 3.2.0 30 May 2019

    Nothing published for this version

  30. 3.1.0 27 Feb 2019

    Nothing published for this version

  31. 3.0.0 26 Dec 2018

    Nothing published for this version

  32. 2.2.0 07 Nov 2018
    Release notes

    Version 2.2.0 of the Google Play Billing provides functionality that helps developers ensure purchases are attributed to the correct user. These changes replace the need to build custom solutions based on developer payload. As part of this update, the developer payload functionality has been deprecated and will be removed in a future release. For more information, including recommended alternatives, see Developer payload .

    Google Play Billing Billing Library 2 for Unity

    In addition to the current Java and Kotlin versions of Google Play Billing Library 2, we released a version of the library for use with Unity. Game developers using the Unity in-app purchase API can upgrade now to take advantage of all Google Play Billing Library 2 features and to make the subsequent upgrades to future versions of the Google Play Billing Library easier.

    To learn more, see Use Google Play Billing with Unity .

    Summary of changes

    • Java Google Play Billing Library

    • In AcknowledgePurchaseParams , deprecated setDeveloperPayload() and getDeveloperPayload() methods.

    • In ConsumeParams , deprecated setDeveloperPayload() and getDeveloperPayload() methods.

    • In BillingFlowParams , renamed setAccountId() to setObfuscatedAccountId() , and documented length restriction of 64 characters and restriction disallowing Personally Identifiable Information (PII) in this field. setAccountId() has been marked as deprecated and will be removed in a future library version.

    • In BillingFlowParams , added setObfuscatedProfileId() which works similarly to setObfuscatedAccountId() . For more information, see Developer payload updates and alternatives .

    • In Purchase , added the getAccountIdentifiers() method to return the obfuscated account identifiers set in BillingFlowParams .

    • In BillingClient , the loadRewardedSku() method has been marked deprecated as part of deprecating rewarded SKUs. You can find more information about the deprecation in the Play Console Help Center .

    Open source →
  33. 2.1.0 13 Apr 2018
    Release notes

    Version 2.1.0 of the Google Play Billing library and the new Kotlin extension are now available. The Play Billing Library Kotlin extension provides idiomatic API alternatives for Kotlin consumption, featuring better null-safety and coroutines. For code examples, see Use the Google Play Billing Library .

    This version contains the following changes.

    Summary of changes

    • In BillingFlowParams , deprecated setOldSku(String oldSku) and replaced with setOldSku(String oldSku, String purchaseToken) , to disambiguate when multiple accounts on the device own the same sku.
    Open source →
  34. 2.0.6 09 Feb 2018

    Nothing published for this version

  35. 2.0.4 21 Nov 2017

    Nothing published for this version

  36. 2.0.2 18 Sep 2017
    Release notes

    Version 2.0.2 of the Google Play Billing library is now available. This release contains updates to the reference documentation and does not change library functionality.

    Open source →
  37. 2.0.0 19 Apr 2017

    Nothing published for this version

  38. 1.5.0 14 Dec 2016

    Nothing published for this version

  39. 1.4.1 11 May 2016

    Nothing published for this version

  40. 1.4.0 28 Apr 2016

    Nothing published for this version

  41. 1.3.1 24 Mar 2016

    Nothing published for this version

  42. 1.3.0 20 Dec 2015

    Nothing published for this version

  43. 1.2.1 20 Nov 2015
    Release notes

    Version 1.2.1 of the Google Play Billing library is now available. This version contains the following changes.

    Major changes

    • Added support for rewarded products . For more information on monetization options, see Add rewarded-product-specific features .

    Other changes

    • Added public constructors for PurchasesResult and SkuDetailsResult to make testing easier.

    • SkuDetails objects can use a new method, getOriginalJson() .

    • All AIDL service calls are now handled by background threads.

    Bug fixes

    • Null callback listeners are no longer passed into public APIs.
    Open source →
  44. 1.2.0 15 Oct 2015

    Nothing published for this version

  45. 1.1.1 17 Sep 2015

    Nothing published for this version

  46. 1.1.0 19 Apr 2015

    Nothing published for this version

  47. 1.0.13 03 Mar 2015

    Nothing published for this version

  48. 1.0.12 26 Feb 2015

    Nothing published for this version

  49. 1.0.11 25 Feb 2015

    Nothing published for this version

  50. 1.0.10 04 Feb 2015

    Nothing published for this version

  51. 1.0.9 30 Jan 2015

    Nothing published for this version

  52. 1.0.8 09 Dec 2014

    Nothing published for this version

  53. 1.0.7 21 Nov 2014

    Nothing published for this version

  54. 1.0.6 31 Oct 2014

    Nothing published for this version

  55. 1.0.5 13 Aug 2014

    Nothing published for this version

  56. 1.0.4 13 Aug 2014

    Nothing published for this version

  57. 1.0.2 08 Aug 2014

    Nothing published for this version

  58. 1.0.0 08 Aug 2014

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive