#square #api-client #web-api #api-wrapper #api

square-api-client

Rust 对 Square Web API 的封装

10 个版本

0.1.9 2022年12月14日
0.1.8 2022年12月14日
0.1.7 2022年11月29日
0.1.5 2022年10月10日
0.1.0 2022年9月29日

290金融 类别中

每月下载量:36

Apache-2.0

745KB
9K SLoC

Square API 客户端

Square API 客户端在 Square Web API 上提供了一个 Rust 封装。

Square API

Square API 允许您安全地接受支付,并将您的应用程序与 Square 的第一方产品生态系统集成。为您自己或数百万个 Square 卖家构建功能齐全的商业应用程序。

Square API 参考 按核心业务流程组织:接受支付、管理订单、将商品和库存与 Square POS 同步、创建客户记录、管理业务位置,以及允许 Square 卖家使用您的应用程序。

用法

设置客户端

客户端可以通过以下方式最简单地实例化:

use square_api_client::{config::Configuration, SquareClient};

let client = SquareClient::try_new(Configuration::default()).unwrap();

为了使此操作生效,需要设置一个名为 SQUARE_API_TOKEN 的环境变量,其值为您的 API Token 字符串...否则,在执行实时调用时将会收到 API 错误。

其他默认值包括 Square 环境为 Sandbox、API 版本为 2022-02-16、基本 URI 为 /v2、超时为 60 秒以及无 HTTP 客户端重试。

Square 客户端可以通过以下属性进行一些定制

use square_api_client::{
    config::{Configuration, Environment},
    http::{client::{HttpClientConfiguration, RetryConfiguration}, Headers},
};
use std::time::Duration;

let mut headers = Headers::default();
headers.set_user_agent("Some User Agent String");
headers.insert("X_SOME_CUSTOM_HEADER", "custom_header_value");

let client = SquareClient::try_new(Configuration {
    environment: Environment::Production,
    square_version: String::from("2022-09-21"),
    http_client_config: HttpClientConfiguration {
        timeout: 30,
        user_agent: String::from("Some User Agent String"),
        default_headers: headers,
        retry_configuration: RetryConfiguration {
            retries_count: 1,
            min_retry_interval: Duration::from_secs(1),
            max_retry_interval: Duration::from_secs(30 * 60),
            backoff_exponent: 3,
        },
    },
    access_token: String::from("Bearer MY_ACCESS_TOKEN"),
    base_uri: String::from("/v2"),
}).unwrap();

使用客户端

一旦您有了 SquareClient 实例,可以通过其属性访问各种 API。例如,要访问 Payments API,您将

use square_api_client::{
    config::Configuration,
    models::CreatePaymentRequest,
    SquareClient,
};

let client = SquareClient::try_new(Configuration::default()).unwrap();
let request = CreatePaymentRequest::default(); // this actually has many fields to fill
let response = client.payments_api.create_payment(request).await.unwrap();

进度

目的是在这个 crate 中封装所有 Square API。到目前为止,它包括一些常用的功能。

已实现的功能

到目前为止,我们在 Rust Square API 客户端中封装了以下 API

待实现

该 crate 的未来版本将实现以下 API

依赖项

~9–21MB
~325K SLoC