73 lines
1.6 KiB
Markdown
73 lines
1.6 KiB
Markdown
# paypal-rs
|
|
![Rust](https://github.com/edg-l/paypal-rs/workflows/Rust/badge.svg)
|
|
![Docs](https://docs.rs/paypal-rs/badge.svg)
|
|
|
|
A rust library that wraps the [paypal api](https://developer.paypal.com/docs/api) asynchronously in a strongly typed manner.
|
|
|
|
Crate: https://crates.io/crates/paypal-rs
|
|
|
|
Documentation: https://docs.rs/paypal-rs
|
|
|
|
Currently in early development.
|
|
|
|
## Example
|
|
|
|
```rust
|
|
use paypal_rs::{
|
|
Client,
|
|
HeaderParams,
|
|
Prefer,
|
|
orders::{OrderPayload, Intent, PurchaseUnit, Amount}
|
|
};
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
let clientid = std::env::var("PAYPAL_CLIENTID").unwrap();
|
|
let secret = std::env::var("PAYPAL_SECRET").unwrap();
|
|
|
|
let mut client = Client::new(clientid.as_str(), secret.as_str(), true);
|
|
|
|
client.get_access_token().await.unwrap();
|
|
|
|
let order_payload = OrderPayload::new(
|
|
Intent::Authorize,
|
|
vec![PurchaseUnit::new(Amount::new(
|
|
"EUR", "10.0",
|
|
))],
|
|
);
|
|
|
|
let order = client
|
|
.create_order(
|
|
order_payload,
|
|
HeaderParams {
|
|
prefer: Some(Prefer::Representation),
|
|
..Default::default()
|
|
},
|
|
)
|
|
.await
|
|
.unwrap();
|
|
}
|
|
```
|
|
|
|
## Testing
|
|
You need the enviroment variables PAYPAL_CLIENTID and PAYPAL_SECRET to be set.
|
|
|
|
`cargo test --lib`
|
|
|
|
## TODO
|
|
|
|
- [ ] Orders API
|
|
- [ ] Invoicing API
|
|
- [ ] Tracking API
|
|
- [ ] Subscriptions API
|
|
- [ ] Identity API
|
|
- [ ] Disputes API
|
|
- [ ] Catalog Products API
|
|
- [ ] Partner Referrals API
|
|
- [ ] Payment Experience Web Profiles API
|
|
- [ ] Payments API
|
|
- [ ] Payouts API
|
|
- [ ] Transaction Search API
|
|
- [ ] Referenced Payouts API
|
|
- [ ] Vault API
|
|
- [ ] Webhooks Management API |