iap rs
1.0.0
IAP - это библиотека Rust для проверки информации о квитанции для покупок, сделанных через Google Play Store или Apple App Store.
Вы можете получить PurchaseResponse , который просто сообщит вам, является ли покупка действительной (и не истекает, если подписка), создав 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 ( ( ) )
}Если вы хотели больше детального управления и доступа к ответу от конечной точки магазина, мы предоставляем это вспомогательные функции.
Для 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 )
}Для 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 ) )
}