#iap #iab #app-store #playstore

iapiab

iapiab 通过 AppStore 或 GooglePlayStore 验证购买收据

1 个不稳定版本

0.1.0 2021年6月10日

#5 in #iap

自定义许可

30KB
647 行代码(不包括注释)

iapiab

iapiab 通过 AppStore 和 GooglePlayStore 验证购买收据。
iapiab 受启发于 iap 和 iab 的 golang 实现

CI

安装

[dependencies]
iapiab = 0.1.0

或获取最新分支。

[dependencies]
iapiab = { git = "https://github.com/yoshidan/rust-iap/", branch = "main"}

快速入门

应用内购买(通过 App Store)

use iapiab::appstore::model::IAPRequest;
use iapiab::appstore::validator::{IAPClient, IAPVerifier};

#[tokio::main]
async fn main() {
    let v = IAPRequest {
        receipt_data: "your receipt data encoded by base64".to_string(),
        password: None,
        exclude_old_transactions: false,
    };
    let client = IAPClient::new(reqwest::Client::new());
    let res = client.verify(&v).await.unwrap();
    println!("{}", res.status);
}

应用内计费(通过 GooglePlay)

use iapiab::playstore::validator::{IABClient, IABProduct};

#[tokio::main]
async fn main() {
    let client = IABClient::new(
        b"your google service account json key",
        hyper::Client::builder().build(hyper_rustls::HttpsConnector::with_native_roots()),
    )
    .await;
    let res = client
        .verify("package name", "product id", "purchase token")
        .await;
    println!("{}", res.unwrap().acknowledgement_state.unwrap());
}

应用内计费签名验证(通过 GooglePlay)

use iapiab::playstore::validator::{verify_signature, SignatureError};

#[tokio::main]
async fn main() {
    // ex) UnityIAP payload is {"json":{"orderId":"GPA.-..",...,"acknowledged":".."},"signature":"XXXXX", ...}
    let receipt = b"receipt json value"; //{"orderId":"GPA.-..",...,"acknowledged":".."}
    let pub_key = b"your pub key in play store";
    let signature = b"signature value";
    let result = verify_signature(pub_key, receipt, signature);
}

支持

应用内购买

此验证器支持 iOS7 或更高版本的收据类型。

应用内计费

此验证器使用 版本 3 API

许可

iapiab 采用 MIT 许可。

依赖项

~27–42MB
~797K SLoC