Crate stripe

Source
Expand description

This crate provides Rust bindings to the Stripe HTTP API.

§Getting Started

To get started, we need to create a Client:

let client = stripe::Client::new("sk_test_YOUR_STRIPE_SECRET");

Then we can begin making requests as we’d like. Most Stripe requests accept many optional parameters, so we usually get the ::new(...) with any required params and then set the ones we want from there.

Most requests for creating or updating a Stripe object use the same Rust struct, so you may frequently need to refer to the official API docs to determine which fields are required for either request.

Note: We have an extensive collection of examples which are interspersed in the documentation. Any time an API is used in an example it is highlighted in the docs for that item. You can also find all the raw examples in the examples directory. Please have a look at those for inspiration or ideas on how to get started.

§Idempotency / Request Strategies

This library provides a few basic request strategies for making requests to the Stripe API. This is currently implemented as an enum with the following variants:

  • RequestStrategy::Once: This is the default strategy. It will make a request to the Stripe API and, whether the request fails or not, will simply return the response.
  • RequestStrategy::Idempotent: This strategy will make a request to stripe api, passing the provided key to Stripe as the Idempotency-Key header, ensuring that the request is idempotent. If the request fails, you may retry it.
  • RequestStrategy::Retry: Make a request to the Stripe API and, if the request fails, retry it up to n times with a timeout. The idempotency key is generated automatically and is stable across retries.
  • RequestStrategy::ExponentialBackoff: Make a request to the Stripe API and, if the request fails, retry it up to n times with exponential backoff. The idempotency key is generated automatically and is stable across retries.

Want to implement your own? If it is a common strategy, please consider opening a PR to add it to the library. Otherwise, we are open to turning this into an open trait so that you can implement your own strategy.

Structs§

AccountId
ApiErrors
ApplicationId
Client
A client for making Stripe API requests.
ClientBuilder
Configuration for a Stripe client.
CustomizedStripeRequest
The request specification used by a compatible Stripe client to make a request.
IdempotencyKey
Represents valid idempotency key
ListPaginator
Stream designed to support pagination.

Enums§

ApiErrorsCode
For some errors that could be handled programmatically, a short string indicating the error code reported.
ApiErrorsType
The type of error returned. One of api_error, card_error, idempotency_error, or invalid_request_error.
IdempotentKeyError
Error that can be returned when constructing IdempotencyKey
RequestStrategy
Possible strategies for sending Stripe API requests, including retry behavior and use of idempotency keys.
StripeError
An error encountered when communicating with the Stripe API.

Traits§

PaginationExt
An extension trait to allow converting List<T> and SearchList<T> into a type that can be paginated. Not meant to be implemented by any other types.
StripeRequest
Define how to convert structs into the data required to make a specific Stripe API call.