paystack-rs 0.2.0

A unofficial client library for the Paystack API
Documentation

paystack-rs

CI 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).