paystack-rs

Crates.iopaystack-rs
lib.rspaystack-rs
version0.2.2
sourcesrc
created_at2023-07-02 18:59:50.246589
updated_at2023-11-11 20:12:13.090738
descriptionA unofficial client library for the Paystack API
homepagehttps://github.com/morukele/paystack-rs
repositoryhttps://github.com/morukele/paystack-rs
max_upload_size
id906318
size122,617
Oghenemarho Orukele (morukele)

documentation

https://docs.rs/paystack-rs

README

paystack-rs

Rust paystack-rs on crates.io paystack-rs  on docs.rs License: MIT

Convenient Async rust bindings and types for the Paystack HTTP API aiming to support the entire API surface. Not the case? Please open an issue. I update the definitions on a weekly basis.

The client aims to make receiving payments for African business or business with African clients building with Rust as hassle-free as possible.

The client currently covers the following section of the API, and the sections to be implemented in order are left unchecked:

  • Transaction
  • Transaction Split
  • Terminal
  • Customers
  • Dedicated Virtual Account
  • Apple Pay
  • Subaccounts
  • Plans
  • Subscriptions
  • Transfer Recipients
  • Transfers
  • Transfers Control
  • Bulk Charges
  • Integration
  • Charge
  • Disputes
  • Refunds
  • Verifications
  • Miscellaneous

Documentation

See the Rust API docs or the examples.

Installation

paystack-rs uses the reqwest HTTP client under the hood and the tokio runtime for async operations.

[dependencies]
paystack-rs = "0.X.X"

You can also download the source code and use in your code base directly if you prefer.

Usage

Initializing an instance of the Paystack client and creating a transaction.

use std::env; 
use dotenv::dotenv; 
use paystack::{PaystackClient, InitializeTransactionBodyBuilder, Error, Currency, Channel};

#[tokio::main]
async fn main() -> Result<(), Error>{
    dotenv().ok();
    let api_key = env::var("PAYSTACK_API_KEY").unwrap();
    let client = PaystackClient::new(api_key);

    let body = InitializeTransactionBodyBuilder::default()
                .amount("10000".to_string())
                .email("email@example.com".to_string())
                .currency(Some(Currency::NGN))
                .channels(Some(vec![
                    Channel::ApplePay,
                    Channel::Bank,
                    Channel::BankTransfer
                ]))
                .build()
                .unwrap();

    let transaction = client
        .transaction
        .initialize_transaction(body)
        .await
        .expect("Unable to create transaction");
         
    Ok(())
}

Contributing

See CONTRIBUTING.md for information on contributing to paystack-rs.

License

Licensed under MIT license (LICENSE-MIT).

Commit count: 104

cargo fmt