

TPINAPPRECEIPT es una biblioteca liviana de flujo puro para leer y validar a Apple en el recibo de compra de la aplicación localmente.
Nota: TPINAPPRECEIPT en el proyecto Objective-C: si desea usar TPINAPPRECEIPT en el proyecto Objective-C, siga esta guía.
Para integrar TPINAPPRECEIPT en su proyecto utilizando Cocoapods, especifíquelo en su Podfile :
platform :ios , '12.0'
target 'YOUR_TARGET' do
use_frameworks!
pod 'TPInAppReceipt'
endLuego, ejecute el siguiente comando:
$ pod install En cualquier archivo Swift que desea usar TPINAPPRECEIPT, importe el marco con import TPInAppReceipt .
Para integrar con el Swift Package Manager de Apple, agregue lo siguiente como dependencia a su Package.swift Swift:
. package ( url : " https://github.com/tikhop/TPInAppReceipt.git " , . upToNextMajor ( from : " 3.0.0 " ) ) Luego, especifique "TPInAppReceipt" como una dependencia del objetivo en el que desea usar TPINAPPRECEIPT.
Por último, ejecute el siguiente comando:
swift package update El objeto InAppReceipt encapsula información sobre un recibo y las compras asociadas con él. Para validar el recibo de compra en la aplicación, debe crear un objeto InAppReceipt .
Para crear objeto InAppReceipt , puede proporcionar datos de recibo sin procesar o inicializar un recibo local.
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 proporciona una variedad de métodos de conveniencia para validar el recibo de compra en la aplicación:
/// 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
}Nota: Apple recomienda realizar la validación de recibos justo después de que se inicie su aplicación. Para una seguridad adicional, puede repetir esta verificación periódicamente mientras su aplicación se está ejecutando. Nota: Si la validación falla en iOS, intente actualizar el recibo primero.
Si su aplicación ofrece precios introductorios para suscripciones automáticas renovables, deberá disipar el precio correcto, ya sea la introducción o el precio regular.
La clase InAppReceipt proporciona una interfaz para determinar la elegibilidad del precio introductorio. En el más simple, solo proporcione un Set de identificadores de productos que pertenecen al mismo grupo de suscripción:
// 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 " ] )Nota: Para determinar si un usuario es elegible para una oferta introductoria, debe inicializar y validar el recibo primero y solo entonces verificar la elegibilidad.
/// 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 ) Cuando sea necesario, use este método para garantizar que el recibo con el que está trabajando está actualizado.
InAppReceipt . refresh { ( error ) in
if let err = error
{
print ( err )
} else {
initializeReceipt ( )
}
} TPINAPPRECEIPT se publica bajo una licencia MIT. Vea la licencia para más información.