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