iap rs
1.0.0
O IAP é uma biblioteca Rust para verificar as informações de recibo para compras feitas através da Google Play Store ou da Apple App Store.
Você pode receber uma PurchaseResponse que simplesmente informará se uma compra é válida (e não expirou se uma assinatura) criando um 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 ( ( ) )
}Se você quisesse mais controle granular e acesso à resposta do terminal da loja, fornecemos funções auxiliares para fazê -lo.
Para a 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 )
}Para a 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 ) )
}