TPInAppReceipt
Reading and Validating In App Purchase Receipt Locally.
Install / Use
/learn @tikhop/TPInAppReceiptREADME
<p align="center">
<img height="160" src="https://github.com/tikhop/TPInAppReceipt/blob/master/www/logo.png" />
</p>
TPInAppReceipt
TPInAppReceipt is a lightweight, pure-Swift library for reading and validating Apple In App Purchase Receipt locally.
Installation
Requirements
- Swift 6.0+ / Xcode 16+
- macOS 10.15+ / iOS 13+ / tvOS 13+ / watchOS 6.2+ / visionOS 1+
Swift Package Manager
dependencies: [
.package(url: "https://github.com/tikhop/TPInAppReceipt.git", from: "4.0.2")
]
.target(
name: "YourTarget",
dependencies: ["TPInAppReceipt"]
)
Usage
Decoding and Reading
import TPInAppReceipt
// Local receipt
let receipt = try await AppReceipt.local
// From raw data
let receipt = try AppReceipt.receipt(from: data)
Access receipt fields, query purchases, check subscriptions and introductory offer eligibility.
See Working with Receipt for details.
Validating
Default validation: certificate chain + signature + hash + metadata.
let result = await receipt.validate()
switch result {
case .valid:
break
case .invalid(let error):
print(error)
}
Supports custom validators via @VerifierBuilder.
See Validating Receipt for details.
Blocking API
For contexts where async is not available.
@_spi(Blocking) import TPInAppReceipt
let receipt = try AppReceipt.local_blocking
let result = receipt.validate_blocking()
See Blocking Mode for details.
Migrating from v3
See TPInAppReceipt 4.0 Migration Guide.
Essential Reading
- Apple - About Receipt Validation
- Apple - Receipt Validation Programming Guide
- Apple - Validating Receipts Locally
- fluffy.es - Tutorial: Read and validate in-app purchase receipt locally using TPInAppReceipt
- Faisal Bin Ahmed - All the wrong ways to persist in-app purchase status in your macOS app
- objc.io - Receipt Validation
License
MIT
