Quickstart#

Dependencies#

This module requires API key to function. You may subscribe a free API key at https://www.fraudlabspro.com

Installation#

Just add fraudlabspro = "1.0.0" into your Cargo.toml.

Sample Codes#

Validate Order#

You can validate your order as below:

use fraudlabspro::validation::{FraudValidation, FraudValidationRequest, OrderInfo, CardInfo, BillingInfo, ShippingInfo};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let fv = FraudValidation::new("YOUR_API_KEY");

    let req = FraudValidationRequest {
        ip: Some("146.112.62.105".to_string()),
        flp_checksum: None,
        order: Some(OrderInfo {
            order_id: Some("67398".into()),
            order_note: None,
            currency: Some("USD".into()),
            amount: Some("42".into()),
            quantity: Some("1".into()),
            payment_gateway: Some("stripe".into()),
            payment_method: Some("creditcard".into()),
            department: None,
        }),
        card: Some(CardInfo {
            number: Some("4556553172971283".into()),
            avs_result: None,
            cvv_result: None,
        }),
        billing: Some(BillingInfo {
            first_name: Some("John".into()),
            last_name: Some("Doe".into()),
            username: Some("jdoe".into()),
            password: Some("s3cr3t".into()),
            email: Some("john@example.com".into()),
            phone: Some("555-123-4567".into()),
            address: Some("1 Main St".into()),
            city: Some("NYC".into()),
            state: Some("NY".into()),
            postcode: Some("10001".into()),
            country: Some("US".into()),
        }),
        shipping: Some(ShippingInfo {
            first_name: Some("John".into()),
            last_name: Some("Doe".into()),
            address: Some("1 Main St".into()),
            city: Some("NYC".into()),
            state: Some("NY".into()),
            postcode: Some("10001".into()),
            country: Some("US".into()),
        }),
    };

    let res = fv.validate(req)?; // JSON text
    println!("{}", res);

    Ok(())
}

Get Transaction#

You can get the details of a transaction as below:

use fraudlabspro::validation::FraudValidation;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let fv = FraudValidation::new("YOUR_API_KEY");
    
    let result = fv.get_transaction(Some("20250818-MCWIWR".to_string()))?;
    println!("Transaction details:\n{}", result);

    Ok(())
}

Feedback#

You can approve, reject or ignore a transaction as below:

use fraudlabspro::validation::FraudValidation;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let fv = FraudValidation::new("YOUR_API_KEY");

    // Example feedback submission
    let res = fv.feedback(
        Some("20250818-MCWIWR".to_string()), // transaction id
        Some("REJECT".to_string()),              // action: APPROVE, REJECT, REJECT_BLACKLIST
        Some("Testing.".to_string()), // notes (optional)
    )?;

    println!("Feedback response:\n{}", res);

    Ok(())
}

Send SMS Verification#

You can send SMS verification for authentication purpose as below:

use fraudlabspro::sms::SMSVerification;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let sms = SMSVerification::new("YOUR_API_KEY");
    let sent = sms.send_sms(Some("+60175063088".into()), Some("1".into()), Some("Your OTP for the transaction is <otp>.".into()), None)?;
    println!("{}", sent);

    Ok(())
}

Get SMS Verification Result#

You can verify the OTP sent by Fraudlabs Pro SMS verification API as below:

use fraudlabspro::sms::SMSVerification;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let sms = SMSVerification::new("YOUR_API_KEY");
    let res = sms.verify_sms(Some("TRANSACTION_ID".into()), Some("OTP_RECEIVED".into()), None)?;
    println!("{}", res);

    Ok(())
}

Report Payment Gateway Feedback#

You can report payment gateway feedback as below:

use fraudlabspro::payment::Payment;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let payment = Payment::new("YOUR_API_KEY");
	
    let res = payment.feedback(
        Some("aaa@gmail.com".to_string()), // email
        Some("approve".to_string()),       // status
        Some("Testing.".to_string()),      // message
		None,                              // Transaction id, put None if no value
    )?;

    println!("Feedback response:\n{}", res);

    Ok(())
}