

TPinAppreceipt adalah perpustakaan yang ringan dan murni untuk membaca dan memvalidasi Apple dalam penerimaan pembelian aplikasi secara lokal.
Catatan: TPinAppReceipt dalam proyek Objective-C-Jika Anda ingin menggunakan TPinAppReceipt dalam proyek Objective-C, ikuti panduan ini.
Untuk mengintegrasikan tpinappreceipt ke dalam proyek Anda menggunakan cocoapods, tentukan di Podfile Anda:
platform :ios , '12.0'
target 'YOUR_TARGET' do
use_frameworks!
pod 'TPInAppReceipt'
endKemudian, jalankan perintah berikut:
$ pod install Dalam file Swift apa pun yang ingin Anda gunakan TPinAppreceipt, impor kerangka kerja dengan import TPInAppReceipt .
Untuk mengintegrasikan menggunakan Paket Swift Apple, tambahkan yang berikut ini sebagai ketergantungan ke Package.swift Anda.
. package ( url : " https://github.com/tikhop/TPInAppReceipt.git " , . upToNextMajor ( from : " 3.0.0 " ) ) Kemudian, tentukan "TPInAppReceipt" sebagai ketergantungan dari target di mana Anda ingin menggunakan TPinAppReceipt.
Terakhir, jalankan perintah berikut:
swift package update Objek InAppReceipt merangkum informasi tentang tanda terima dan pembelian yang terkait dengannya. Untuk memvalidasi penerimaan pembelian dalam aplikasi, Anda harus membuat objek InAppReceipt .
Untuk membuat objek InAppReceipt , Anda dapat memberikan data tanda terima mentah atau menginisialisasi kwitansi lokal.
do {
/// Initialize receipt
let receipt = try InAppReceipt . localReceipt ( )
// let receipt = try InAppReceipt() // Returns local receipt
// let receiptData: Data = ...
// let receipt = try InAppReceipt.receipt(from: receiptData)
} catch {
print ( error )
}
TPInAppReceipt menyediakan berbagai metode kenyamanan untuk memvalidasi penerimaan pembelian dalam aplikasi:
/// Verify hash
try ? receipt . verifyHash ( )
/// Verify bundle identifier
try ? receipt . verifyBundleIdentifier ( )
/// Verify bundle version
try ? receipt . verifyBundleVersion ( )
/// Verify signature
try ? receipt . verifySignature ( )
/// Validate all at once
do {
try receipt . verify ( )
} catch IARError . validationFailed ( reason : . hashValidation ) {
// Do smth
} catch IARError . validationFailed ( reason : . bundleIdentifierVerification ) {
// Do smth
} catch IARError . validationFailed ( reason : . signatureValidation ) {
// Do smth
} catch {
// Do smth
}Catatan: Apple merekomendasikan untuk melakukan validasi tanda terima tepat setelah aplikasi Anda diluncurkan. Untuk keamanan tambahan, Anda dapat mengulangi cek ini secara berkala saat aplikasi Anda berjalan. Catatan: Jika validasi gagal di iOS, cobalah untuk menyegarkan tanda terima terlebih dahulu.
Jika aplikasi Anda menawarkan harga pengantar untuk langganan yang dapat diperbarui secara otomatis, Anda perlu mengeluarkan harga yang benar, baik intro atau harga reguler.
Kelas InAppReceipt menyediakan antarmuka untuk menentukan kelayakan harga pengantar. Pada yang paling sederhana, cukup berikan Set pengidentifikasi produk yang termasuk dalam kelompok berlangganan yang sama:
// Check whether user is eligible for any products within the same subscription group
var isEligible = receipt . isEligibleForIntroductoryOffer ( for : [ " com.test.product.bronze " , " com.test.product.silver " , " com.test.product.gold " ] )Catatan: Untuk menentukan apakah pengguna memenuhi syarat untuk penawaran pengantar, Anda harus menginisialisasi dan memvalidasi tanda terima terlebih dahulu dan hanya kemudian memeriksa kelayakan.
/// Initialize receipt
let receipt = try ! InAppReceipt . localReceipt ( )
/// Base64 Encoded Receipt
let base64Receipt = receipt . base64
/// Check whether receipt contains any purchases
let hasPurchases = receipt . hasPurchases
/// All auto renewable `InAppPurchase`s,
let purchases : [ InAppPurchase ] = receipt . autoRenewablePurchases
/// all ACTIVE auto renewable `InAppPurchase`s,
let activePurchases : [ InAppPurchase ] = receipt . activeAutoRenewableSubscriptionPurchases // Retrieve Original TransactionIdentifier for Product Name
receipt . originalTransactionIdentifier ( ofProductIdentifier : subscriptionName )
// Retrieve Active Auto Renewable Subscription's Purchases for Product Name and Specific Date
receipt . activeAutoRenewableSubscriptionPurchases ( ofProductIdentifier : subscriptionName , forDate : Date ( ) )
// Retrieve All Purchases for Product Name
receipt . purchases ( ofProductIdentifier : subscriptionName ) Bila perlu, gunakan metode ini untuk memastikan tanda terima yang Anda kerjakan adalah up-to-date.
InAppReceipt . refresh { ( error ) in
if let err = error
{
print ( err )
} else {
initializeReceipt ( )
}
} TPinAppreceipt dirilis di bawah lisensi MIT. Lihat lisensi untuk informasi lebih lanjut.