37个版本
0.12.3 | 2020年5月17日 |
---|---|
0.12.1 | 2020年2月6日 |
0.11.0 | 2019年9月11日 |
0.10.5 | 2019年7月27日 |
0.3.1 | 2017年3月31日 |
#54 在 财务
1MB
15K SLoC
stripe-rust
Rust API绑定,用于Stripe v1 HTTP API。
它支持所有目前支持的Stripe客户端库版本,包括 https://js.stripe.com/v2/ 和 https://js.stripe.com/v3/。
API版本
该crate的0.12.x版本使用Stripe API的 2019-09-09
版本。
用法
将以下内容放入您的 Cargo.toml
[dependencies]
stripe-rust = "0.12.*"
并在您的crate根目录下添加以下内容
extern crate stripe;
要查看库的用法,请查看 examples 文件夹。
入门指南
要开始使用,我们需要创建一个客户端
let client = stripe::Client::new("sk_test_YOUR_STRIPE_SECRET");
然后我们可以开始按需发送请求。大多数Stripe请求接受许多可选参数,因此我们通常获取 ::default()
参数,然后设置我们想要的参数。
创建或更新Stripe对象的请求通常使用相同的Rust结构体,因此您可能需要经常参考 官方API文档 以确定每个请求所需的字段。
/* Creating a Stripe Charge */
let token = "TOKEN_FROM_CHECKOUT".parse().expect("token to be valid");
let mut params = stripe::CreateCharge::new();
// NOTE: Stripe represents currency in the lowest denominations (e.g. cents)
params.amount = Some(1095); // e.g. $10.95
params.source = Some(stripe::ChargeSourceParams::Token(token));
// Example: Override currency to be in Canadian Dollars
params.currency = Some(stripe::Currency::CAD);
let charge = stripe::Charge::create(&client, params).unwrap();
println!("{:?}", charge); // => Charge { id: "ch_12345", amount: 1095, .. }
/* Listing Stripe Charges */
let params = stripe::ListCharges::new();
let charges = stripe::Charge::list(&client, params).unwrap();
println!("{:?}", charges); // => List { data: [Charge { id: "ch_12345", .. }] }
使用自定义Connect账户
此crate支持模拟自定义connect账户。
要模拟账户,获取一个新的Client并传入账户ID。
let mut headers = stripe::Headers::default();
headers.stripe_account = Some("acct_ABC".to_string());
headers.client_id = Some("ca_XYZ".to_string());
let client = client.with_headers(headers);
// Then, all requests can be made normally
let params = stripe::CustomerListParams::default();
let customers = stripe::Customer::list(&client, params).unwrap();
println!("{:?}", customers); // => List { data: [Customer { .. }] }
功能标志
默认情况下,启用完整的 full
Stripe API。
为了减少代码大小,禁用默认功能,并仅启用您使用的API
# Example: Core-only (enough to create a `Charge` or `Card` or `Customer`)
stripe-rust = { version = "*", default-features = false, features = ["blocking"] }
# Example: Support for "Subscriptions" and "Invoices"
stripe-rust = { version = "*", default-features = false, features = ["blocking", "billing"] }
请参阅 Stripe API文档 以确定每个功能标志包含哪些API。
贡献
代码生成
此库(主要)是通过解析Stripe的OpenAPI规范通过代码生成实现的。
要更新生成的代码,请使用提供的脚本
# Generate files into the ./openapi/out directort (working directory must be project root)
> ./openapi/build
# Copy reviewed files to ./src/resources
> ./openapi/commit
依赖关系
~12-27MB
~409K SLoC