9 个版本 (5 个重大变更)

0.14.0 2024 年 7 月 4 日
0.13.0 2023 年 7 月 24 日
0.12.1 2023 年 6 月 23 日
0.12.0 2023 年 3 月 19 日
0.10.0 2021 年 11 月 21 日

#6#monero

每月 28 次下载

MIT/Apache

275KB
6K SLoC

Rust 4K SLoC // 0.0% comments JavaScript 1.5K SLoC // 0.1% comments

BuildStatus Crates.io Documentation MSRV

AcceptXMR: 在您的应用程序中接受 Monero

AcceptXMR 是一个用于构建支付网关的库。

有关包含所有功能的网关,请参阅 AcceptXMR-Server.

入门指南

要在 Rust 项目中使用 AcceptXMR,首先将其添加到您的 Cargo.toml 文件中。例如,如果您打算使用 Sqlite 存储后端并需要 serde 支持,您应该在 Cargo.toml 文件中添加以下内容:

[dependencies]
acceptxmr = { version = "0.12", features = ["serde", "sqlite"] }

然后,您可以创建并运行一个 PaymentGateway

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()?;

最后,您可以创建发票并订阅它们,以便知道何时收到付款

// 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.
).await?;

// 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).await?;
}   

有关更详细的文档,请参阅 docs.rs示例.

依赖关系

~21–33MB
~605K SLoC