Client

Struct Client 

Source
pub struct Client { /* private fields */ }
Expand description

SagaPay API client

Implementations§

Source§

impl Client

Source

pub fn new(config: Config) -> Self

Create a new SagaPay client

Source

pub async fn create_deposit( &self, params: CreateDepositParams, ) -> Result<DepositResponse, Error>

Create a deposit address

§Example
use sagapay::{Client, Config, CreateDepositParams, NetworkType};

#[tokio::main]
async fn main() -> Result<(), sagapay::Error> {
    let client = Client::new(Config {
        api_key: "your-api-key".to_string(),
        api_secret: "your-api-secret".to_string(),
        ..Config::default()
    });

    let deposit = client.create_deposit(CreateDepositParams {
        network_type: NetworkType::BEP20,
        contract_address: "0".to_string(),
        amount: "1.5".to_string(),
        ipn_url: "https://example.com/webhook".to_string(),
        udf: Some("order-123".to_string()),
        address_type: Some("TEMPORARY".to_string()),
    }).await?;

    println!("Deposit address: {}", deposit.address);
    Ok(())
}
Source

pub async fn create_withdrawal( &self, params: CreateWithdrawalParams, ) -> Result<WithdrawalResponse, Error>

Create a withdrawal

§Example
use sagapay::{Client, Config, CreateWithdrawalParams, NetworkType};

#[tokio::main]
async fn main() -> Result<(), sagapay::Error> {
    let client = Client::new(Config {
        api_key: "your-api-key".to_string(),
        api_secret: "your-api-secret".to_string(),
        ..Config::default()
    });

    let withdrawal = client.create_withdrawal(CreateWithdrawalParams {
        network_type: NetworkType::ERC20,
        contract_address: "0xdAC17F958D2ee523a2206206994597C13D831ec7".to_string(), // USDT
        address: "0x742d35Cc6634C0532925a3b844Bc454e4438f44e".to_string(),
        amount: "10.5".to_string(),
        ipn_url: "https://example.com/webhook".to_string(),
        udf: Some("withdrawal-456".to_string()),
    }).await?;

    println!("Withdrawal ID: {}", withdrawal.id);
    Ok(())
}
Source

pub async fn check_transaction_status( &self, address: &str, transaction_type: TransactionType, ) -> Result<TransactionStatusResponse, Error>

Check transaction status

§Example
use sagapay::{Client, Config, TransactionType};

#[tokio::main]
async fn main() -> Result<(), sagapay::Error> {
    let client = Client::new(Config {
        api_key: "your-api-key".to_string(),
        api_secret: "your-api-secret".to_string(),
        ..Config::default()
    });

    let address = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e";
    let tx_type = TransactionType::Deposit;
     
    let status = client.check_transaction_status(address, tx_type).await?;
     
    println!("Transaction count: {}", status.count);
    for tx in status.transactions {
        println!("ID: {}, Status: {:?}, Amount: {}", tx.id, tx.status, tx.amount);
    }
     
    Ok(())
}
Source

pub async fn fetch_wallet_balance( &self, address: &str, network_type: NetworkType, contract_address: &str, ) -> Result<WalletBalanceResponse, Error>

Fetch wallet balance

§Example
use sagapay::{Client, Config, NetworkType};

#[tokio::main]
async fn main() -> Result<(), sagapay::Error> {
    let client = Client::new(Config {
        api_key: "your-api-key".to_string(),
        api_secret: "your-api-secret".to_string(),
        ..Config::default()
    });

    let address = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e";
    let network_type = NetworkType::ERC20;
    let contract_address = "0xdAC17F958D2ee523a2206206994597C13D831ec7"; // USDT
     
    let balance = client.fetch_wallet_balance(address, network_type, contract_address).await?;
     
    println!("Token: {} ({})", balance.token.symbol, balance.token.name);
    println!("Balance: {}", balance.balance.formatted);
     
    Ok(())
}
Source

pub fn api_key(&self) -> &str

Get the client’s API key

Source

pub fn api_secret(&self) -> &str

Get the client’s API secret

Trait Implementations§

Source§

impl Clone for Client

Source§

fn clone(&self) -> Client

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Client

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Client

§

impl !RefUnwindSafe for Client

§

impl Send for Client

§

impl Sync for Client

§

impl Unpin for Client

§

impl !UnwindSafe for Client

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more