-
-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7e19049
commit b5344f5
Showing
147 changed files
with
5,840 additions
and
135 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,70 +1,6 @@ | ||
[package] | ||
name = "acceptxmr" | ||
version = "0.12.0" | ||
edition = "2021" | ||
rust-version = "1.65" | ||
license = "MIT OR Apache-2.0" | ||
description = "Accept monero in your application." | ||
repository = "https://github.com/busyboredom/acceptxmr" | ||
readme = "README.md" | ||
keywords = ["crypto", "gateway", "monero", "payment", "xmr"] | ||
categories = ["cryptography::cryptocurrencies"] | ||
[workspace] | ||
|
||
[lib] | ||
name = "acceptxmr" | ||
path = "src/lib.rs" | ||
|
||
[dependencies] | ||
bincode = { version = "^2.0.0-rc.2", optional = true } | ||
hex = "0.4" | ||
http = "0.2" | ||
hyper = { version = "0.14", features = ["client", "http1", "http2", "tcp"] } | ||
hyper-rustls = { version = "0.23", features = ["http2"] } | ||
indexmap = "1" | ||
log = "0.4" | ||
md-5 = "0.10" | ||
monero = "0.18" | ||
rand = "0.8" | ||
rand_chacha = "0.3" | ||
serde = {version = "1", features = ["derive"], optional = true } | ||
serde_json = "1" | ||
sled = { version = "0.34", optional = true } | ||
sqlite = { version = "0.30", optional = true } | ||
strum = { version = "0.24", features = ["derive"] } | ||
thiserror = "1" | ||
tokio = { version = "1", features = ["macros", "rt-multi-thread", "time"] } | ||
|
||
[features] | ||
bincode = ["dep:bincode"] | ||
in-memory = [] | ||
serde = ["dep:serde"] | ||
sled = ["bincode", "dep:sled"] | ||
sqlite = ["bincode", "dep:sqlite"] | ||
|
||
[dev-dependencies] | ||
actix = "0.13" | ||
actix-files = "0.6" | ||
actix-session = { version = "0.7", features = ["cookie-session"] } | ||
actix-web = "4" | ||
actix-web-actors = "4" | ||
bytestring = "1" | ||
env_logger = "0.10" | ||
handlebars = { version = "4", features = ["dir_source"] } | ||
httpmock = "0.6" | ||
qrcode = "0.12" | ||
serde = "1" | ||
tempfile = "3" | ||
test-case = "3" | ||
# This is a workaround to enable features in tests. | ||
acceptxmr = { path = ".", features = ["sled", "in-memory", "sqlite"] } | ||
|
||
[[example]] | ||
name = "custom_storage" | ||
|
||
[[example]] | ||
name = "nojs" | ||
required-features = ["serde", "in-memory"] | ||
|
||
[[example]] | ||
name = "websockets" | ||
required-features = ["serde", "in-memory"] | ||
members = [ | ||
"server", | ||
"library" | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
[package] | ||
name = "acceptxmr" | ||
version = "0.12.0" | ||
edition = "2021" | ||
rust-version = "1.65" | ||
license = "MIT OR Apache-2.0" | ||
description = "Accept monero in your application." | ||
repository = "https://github.com/busyboredom/acceptxmr" | ||
readme = "README.md" | ||
keywords = ["crypto", "gateway", "monero", "payment", "xmr"] | ||
categories = ["cryptography::cryptocurrencies"] | ||
|
||
[lib] | ||
name = "acceptxmr" | ||
path = "src/lib.rs" | ||
|
||
[dependencies] | ||
bincode = { version = "^2.0.0-rc.2", optional = true } | ||
hex = "0.4" | ||
http = "0.2" | ||
hyper = { version = "0.14", features = ["client", "http1", "http2", "tcp"] } | ||
hyper-rustls = { version = "0.23", features = ["http2"] } | ||
indexmap = "1" | ||
log = "0.4" | ||
md-5 = "0.10" | ||
monero = "0.18" | ||
rand = "0.8" | ||
rand_chacha = "0.3" | ||
serde = {version = "1", features = ["derive"], optional = true } | ||
serde_json = "1" | ||
sled = { version = "0.34", optional = true } | ||
sqlite = { version = "0.30", optional = true } | ||
strum = { version = "0.24", features = ["derive"] } | ||
thiserror = "1" | ||
tokio = { version = "1", features = ["macros", "rt-multi-thread", "time"] } | ||
|
||
[features] | ||
bincode = ["dep:bincode"] | ||
in-memory = [] | ||
serde = ["dep:serde"] | ||
sled = ["bincode", "dep:sled"] | ||
sqlite = ["bincode", "dep:sqlite"] | ||
|
||
[dev-dependencies] | ||
actix = "0.13" | ||
actix-files = "0.6" | ||
actix-session = { version = "0.7", features = ["cookie-session"] } | ||
actix-web = "4" | ||
actix-web-actors = "4" | ||
bytestring = "1" | ||
env_logger = "0.10" | ||
handlebars = { version = "4", features = ["dir_source"] } | ||
httpmock = "0.6" | ||
qrcode = "0.12" | ||
serde = "1" | ||
tempfile = "3" | ||
test-case = "3" | ||
# This is a workaround to enable features in tests. | ||
acceptxmr = { path = ".", features = ["sled", "in-memory", "sqlite"] } | ||
|
||
[[example]] | ||
name = "custom_storage" | ||
|
||
[[example]] | ||
name = "nojs" | ||
required-features = ["serde", "in-memory"] | ||
|
||
[[example]] | ||
name = "websockets" | ||
required-features = ["serde", "in-memory"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
[![BuildStatus](https://github.com/busyboredom/acceptxmr/workflows/CI/badge.svg)](https://img.shields.io/github/actions/workflow/status/busyboredom/acceptxmr/ci.yml?branch=main) | ||
[![Crates.io](https://img.shields.io/crates/v/acceptxmr.svg)](https://crates.io/crates/acceptxmr) | ||
[![Documentation](https://docs.rs/acceptxmr/badge.svg)](https://docs.rs/acceptxmr) | ||
[![MSRV](https://img.shields.io/badge/MSRV-1.65.0-blue)](https://blog.rust-lang.org/2022/11/03/Rust-1.65.0.html) | ||
|
||
# `AcceptXMR`: Accept Monero in Your Application | ||
`AcceptXMR` is a library for building payment gateways. | ||
|
||
For a batteries-included gateway, please see | ||
[`AcceptXMR-Server`](../server/). | ||
|
||
## Getting Started | ||
|
||
To use `AcceptXMR` in your rust project, first add it to your `Cargo.toml`. For | ||
example if you intend to use the `Sqlite` storage backend and need `serde` | ||
support, you should add this to your `Cargo.toml`: | ||
```toml | ||
[dependencies] | ||
acceptxmr = { version = "0.12", features = ["serde", "sqlite"] } | ||
``` | ||
You can then create and run a `PaymentGateway`: | ||
```rust | ||
use acceptxmr::{PaymentGateway, storage::stores::Sqlite}; | ||
use std::time::Duration; | ||
|
||
let private_view_key = | ||
"ad2093a5705b9f33e6f0f0c1bc1f5f639c756cdfc168c8f2ac6127ccbdab3a03"; | ||
let primary_address = | ||
"4613YiHLM6JMH4zejMB2zJY5TwQCxL8p65ufw8kBP5yxX9itmuGLqp1dS4tkVoTxjyH3aYhYNrtGHbQzJQP5bFus3KHVdmf"; | ||
|
||
let store = Sqlite::new("AcceptXMR_DB", "invoices")?; | ||
|
||
let payment_gateway = PaymentGateway::builder( | ||
private_view_key.to_string(), | ||
primary_address.to_string(), | ||
store | ||
) | ||
.daemon_url("https://node.example.com") // Specify a node. | ||
.scan_interval(Duration::from_millis(500)) // Scan for updates every 500 ms. | ||
.build()?; | ||
|
||
payment_gateway.run()?; | ||
``` | ||
Finally, you can create invoices and subscribe to them so you know when they get | ||
paid: | ||
```rust | ||
// Oh hey, a customer is checking out! | ||
let invoice_id = payment_gateway.new_invoice( | ||
100 * 10 ** 9, // We'll charge 100 millineros, | ||
0, // require 0 confirmations, | ||
10, // expire in 10 blocks, | ||
"Large Cheese Pizza".to_string() // and get the order right. | ||
)?; | ||
|
||
// We can now subscribe to updates to the pizza invoice. | ||
let subscriber = payment_gateway.subscribe(invoice_id)? | ||
.expect("invoice doesn't exist"); | ||
|
||
// Have we been paid yet? | ||
let update = subscriber.recv().await.expect("channel closed"); | ||
|
||
if update.is_confirmed() { | ||
// Great, ship the pizza and stop tracking the invoice. | ||
println!("Invoice for \"{}\" paid", update.description()); | ||
payment_gateway.remove_invoice(invoice_id)?; | ||
} | ||
``` | ||
For more detailed documentation, see [docs.rs](https://docs.rs/acceptxmr) or the | ||
[examples](./examples/). |
File renamed without changes.
Oops, something went wrong.