Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

shieldz

CI crates.io docs.rs

Official Rust SDK for Shieldz — non-custodial crypto payments with $0 fees.

Accept USDC/USDT across Base, Arbitrum, Optimism, Polygon, and Ethereum, plus native Bitcoin and shielded Zcash. Funds settle straight to your own wallet — Shieldz never holds them, and never asks for your keys.

Install

[dependencies]
shieldz = "0.1"

Quickstart

use shieldz::Shieldz;
use serde_json::json;

let shieldz = Shieldz::new(std::env::var("SHIELDZ_API_KEY")?);

let invoice = shieldz.invoices().create(json!({
    "amount_usd_cents": 5000,        // $50.00
    "memo": "Order #1234",
    "metadata": { "order_id": "1234" },
}))?;

println!("{} {}", invoice["status"], invoice["pay_url"]);
// → send your customer to invoice["pay_url"] (the hosted checkout)
# Ok::<(), Box<dyn std::error::Error>>(())

Retrieve, list & auto-paginate

let inv = shieldz.invoices().retrieve("Qgvz8WQw0mnv2M8")?;

let page = shieldz.invoices().list(&[("limit", "20".into()), ("status", "paid".into())])?;

let all = shieldz.invoices().list_all(&[("status", "paid".into())])?; // follows the cursor

Retryable POSTs get an auto idempotency_key so a retried create can't duplicate; pass your own to tie it to an order.

Webhooks

Verify against the raw request body:

use shieldz::{construct_event, VerifyOptions};

let event = construct_event(
    raw_body,                        // &[u8]
    signature_header,                // X-Shieldz-Signature
    &signing_secret,                 // whsec_…
    &VerifyOptions::default(),       // 300s tolerance
)?;

if event["type"] == "invoice.paid" {
    // fulfill — dedupe on X-Shieldz-Delivery (at-least-once)
}
# Ok::<(), shieldz::SignatureVerificationError>(())

verify_signature(...) is also available if you just want a Result<(), _>. During the 24h after a secret rotation the header carries both signatures and either matches.

Errors

Any non-2xx returns ShieldzError { status, kind, code, message, param, request_id }.

Links

License

MIT © Deniz Yanbollu / Shieldz

About

Official Rust SDK for Shieldz, the free non-custodial crypto payment gateway. $0 platform fees.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages