iap rs
1.0.0
IAP est une bibliothèque de rouille pour vérifier les informations de réception pour les achats effectués via Google Play Store ou l'App Store d'Apple.
Vous pouvez recevoir un PurchaseResponse qui vous dira simplement si un achat est valide (et non expiré si un abonnement) en créant un UnityPurchaseValidator .
use iap :: * ;
const APPLE_SECRET : & str = "<APPLE SECRET>" ;
const GOOGLE_KEY : & str = "<GOOGLE KEY JSON>" ;
# [ tokio :: main ]
pub async fn main ( ) -> Result < ( ) , Box < dyn std :: error :: Error > > {
let validator = UnityPurchaseValidator :: default ( )
. set_apple_secret ( APPLE_SECRET . to_string ( ) )
. set_google_service_account_key ( GOOGLE_KEY . to_string ( ) ) ? ;
// RECEIPT_INPUT would be the Json string containing the store, transaction id, and payload
// from Unity IAP. ie:
// "{ "Store": "GooglePlay", "TransactionID": "<Txn ID>", "Payload": "<Payload>" }"
let unity_receipt = UnityPurchaseReceipt :: from ( & std :: env :: var ( "RECEIPT_INPUT" ) ? ) ? ;
let response = validator . validate ( & unity_receipt ) . await ? ;
println ! ( "PurchaseResponse is valid: {}" , response . valid ) ;
Ok ( ( ) )
}Si vous vouliez plus de contrôle granulaire et un accès à la réponse du point de terminaison du magasin, nous fournissons des fonctions d'assistance pour le faire.
Pour le Play Store:
pub async fn validate ( receipt : & UnityPurchaseReceipt ) -> error :: Result < PurchaseResponse > {
let response = fetch_google_receipt_data ( receipt , "<GOOGLE_KEY>" ) . await ? ;
// debug or validate on your own with the data in the response
println ! ( "Expiry data: {}" , response . expiry_time ) ;
// or just simply validate the response
validate_google_subscription ( & response )
}Pour l'App Store:
pub async fn validate ( receipt : & UnityPurchaseReceipt ) -> error :: Result < PurchaseResponse > {
let response = fetch_apple_receipt_data ( receipt , "<APPLE_SECRET>" ) . await ? ;
// was this purchase made in the production or sandbox environment
println ! ( "Environment: {}" , response . environment . clone ( ) . unwrap ( ) ) ;
Ok ( validate_apple_subscription ( & response ) )
}