3 个版本
0.1.2 | 2023年10月6日 |
---|---|
0.1.1 | 2023年10月1日 |
0.1.0 | 2023年10月1日 |
#152 in 金融
59KB
1K SLoC
Zarinpal 支付网关 API
这是一个 Zarinpal 支付网关 API 客户端的 Rust 实现。
安装
cargo add zarinpal
使用示例
以下是如何开始使用此 crate 的方法
初始化客户端
use zarinpal::prelude::*;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Default merchant_id to be used in every request.
let zarinpal = Zarinpal::new("merchant_id")?;
Ok(())
}
请求基本支付
// ~~~ sniff ~~~
let request = zarinpal
.request_payment(10000, "example.com".parse()?, "Test payment")
.build()
.await?;
验证支付
// ~~~ sniff ~~~
let verified = zarinpal
.verify_payment(request.authority(), 10000)
.build()
.await?;
请求带有元数据的支付
// ~~~ sniff ~~~
let request_2 = zarinpal
.request_payment(10000, "example.com".parse()?, "Test payment")
.metadata(
Metadata::builder()
.mobile("98912345678")
.email("[email protected]")
.build(),
)
.build()
.await?;
更改支付中的货币
// ~~~ sniff ~~~
let request_3 = zarinpal
.request_payment(10000, "example.com".parse()?, "Test payment")
.currency(Currency::IRT) // Tomans
.build()
.await?;
带有工资的支付请求
// ~~~ sniff ~~~
let request_4 = zarinpal
.request_payment(10000, "example.com".parse()?, "Test payment")
.wages([
Wage::builder()
.iban("...")
.amount(5000)
.description("To my first friend")
.build(),
Wage::builder()
.iban("...")
.amount(5000)
.description("To my second friend")
.build(),
])
.build()
.await?;
未经验证的支付
撤销最近 100 条未经验证的支付记录。
// ~~~ sniff ~~~
let unverified_payments = zarinpal.unverified_requests().build().await?;
for unverified in unverified_payments.authorities() {
println!("{}", unverified.authority())
}
祝你赚钱快乐 🔥
依赖项
~4–16MB
~237K SLoC