-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #7 from wslongchen/develop
Develop
- Loading branch information
Showing
62 changed files
with
2,825 additions
and
405 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
[package] | ||
name = "labrador" | ||
version = "0.1.8" | ||
version = "0.1.9" | ||
authors = ["mrpan <[email protected]>"] | ||
edition = "2018" | ||
description = "Labrador - Mini thirdpart client for rust." | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,233 @@ | ||
# Labrador   [![Docs][docs-image]][docs-url] [![Build Status]][actions] [![Latest Version]][crates.io] [![labrador: rustc 1.13+]][Rust 1.13] | ||
|
||
[Build Status]: https://img.shields.io/docsrs/labrador/0.1.0?style=plastic | ||
[actions]: https://github.com/wslongchen/labrador/actions?query=branch%3Amaster | ||
[Latest Version]: https://img.shields.io/crates/v/labrador?style=plastic | ||
[crates.io]: https://crates.io/crates/labrador | ||
[labrador: rustc 1.13+]: https://img.shields.io/badge/labrador-rustc__1.31%2B-lightgrey | ||
[Rust 1.13]: https://blog.rust-lang.org/2016/11/10/Rust-1.13.html | ||
[Rust 1.31]: https://blog.rust-lang.org/2018/12/06/Rust-1.31-and-rust-2018.html | ||
[docs-image]: https://img.shields.io/badge/文档-英文-blue.svg | ||
[docs-url]: https://github.com/wslongchen/labrador/blob/master/README.md | ||
```Labrador - 一个迷你的便捷的第三方服务客户端SDK ``` | ||
|
||
|
||
Features: | ||
|
||
* ```taobao``` - 淘宝客 | ||
* ```alipay``` - 支付宝 | ||
* ```pdd``` - 拼多多 | ||
* ```jd``` - 京东 | ||
* ```wechat``` - 微信 | ||
|
||
### Supported Platform | ||
|
||
| 平台 | 是否支持 | | ||
|----------------------------------------------------|------| | ||
| Wechat:mp(微信公众号),cp(企业微信),miniapp(微信小程序),pay(微信支付) | √ | | ||
| Alipay(支付宝) | √ | | ||
| Taobao(淘宝客) | √ | | ||
| JD(京东联盟) | √ | | ||
| PDD(拼多多-多多客) | √ | | ||
|
||
|
||
--- | ||
|
||
如下: | ||
|
||
- [An overview of Labrador](https://crates.io/crates/labrador) | ||
- [Examples](https://github.com/wslongchen/labrador/blob/0.1.0/example/simple.rs) | ||
- [API documentation](https://docs.rs/labrador/0.1.0/labrador/) | ||
- [Release notes](https://github.com/wslongchen/labrador/releases) | ||
|
||
## 使用 | ||
|
||
<details> | ||
<summary> | ||
Click to show Cargo.toml. | ||
<a href="https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=93bca9fced54f62eb69a2f2a224715c5" target="_blank">Run this code in the playground.</a> | ||
</summary> | ||
|
||
```toml | ||
[dependencies] | ||
|
||
# The core APIs | ||
labrador = { version = "0.1.0", features = ["wechat", "alipay"] } | ||
|
||
``` | ||
|
||
</details> | ||
<p></p> | ||
|
||
## 文档 | ||
|
||
## 示例 | ||
|
||
### 微信开放平台、包含微信支付 | ||
|
||
```rust | ||
use labrador::{WechatPayClient, SimpleStorage, TradeType, WechatPayRequestV3, Amount, Payer}; | ||
use chrono::{Local, SecondsFormat}; | ||
|
||
#[tokio::main] | ||
async fn main() { | ||
let c = WechatPayClient::new("appid", "secret", SimpleStorage::new()); | ||
let mut client =c.wxpay(); | ||
let date = Local::now().to_rfc3339_opts(SecondsFormat::Secs, false); | ||
let result = client.unified_order_v3(TradeType::Jsapi, WechatPayRequestV3 { | ||
appid: "appid".to_string().into(), | ||
mch_id: "mchid".to_string(), | ||
description: "测试商品支付".to_string(), | ||
out_trade_no: "1602920235sdfsdfas32234234".to_string(), | ||
time_expire: date, | ||
attach: None, | ||
notify_url: "https:xxx.cn/trade/notify".to_string(), | ||
amount: Amount { | ||
total: 1, | ||
currency: String::from("CNY").into(), | ||
payer_total: None, | ||
payer_currency: None | ||
}, | ||
payer: Payer { | ||
openid: "oUVZc6S_uGx3bsNPUA-davo4Dt7Us".to_string() | ||
}.into(), | ||
detail: None, | ||
scene_info: None, | ||
settle_info: None | ||
}); | ||
match result.await { | ||
Ok(res) => {} | ||
Err(err) => {} | ||
} | ||
} | ||
``` | ||
|
||
### 支付宝 | ||
|
||
```rust | ||
use labrador::{AlipayTradeWapPayRequest, AlipayClient}; | ||
|
||
#[tokio::main] | ||
async fn main() { | ||
let param = AlipayTradeWapPayRequest::default(); | ||
let client = AlipayClient::new("appKey", false); | ||
match client.wap_pay("POST".into(), param).await { | ||
Ok(res) => {} | ||
Err(err) => {} | ||
} | ||
match result.await { | ||
Ok(res) => {} | ||
Err(err) => {} | ||
} | ||
} | ||
``` | ||
|
||
### 淘宝客相关 | ||
|
||
```rust | ||
use labrador::{TbItemDetailRequest, TaobaoClient}; | ||
|
||
#[tokio::main] | ||
async fn main() { | ||
let client = TaobaoClient::<SimpleStorage>::new("appkey", "secret"); | ||
let req = TbItemDetailRequest { | ||
num_iids: Some("597649283190".to_string()), | ||
platform: None, | ||
ip: None | ||
}; | ||
let result = client.get_item_detail(req); | ||
match result.await { | ||
Ok(res) => { | ||
} | ||
Err(err) => { | ||
} | ||
} | ||
} | ||
``` | ||
|
||
|
||
### 京东,目前暂时只支持联盟相关 | ||
|
||
```rust | ||
use labrador::{JDClient, JdOrderRawQueryParam}; | ||
use chrono::{Local, SecondsFormat}; | ||
|
||
#[tokio::main] | ||
async fn main() { | ||
let client = JDClient::<SimpleStorage>::new("appkey", "secert"); | ||
let param = JdOrderRawQueryParam { | ||
page_index: 1.into(), | ||
page_size: 10.into(), | ||
bill_type: 1, | ||
start_time: "2022-08-02 21:23:00".to_string(), | ||
end_time: "2022-08-02 21:43:00".to_string(), | ||
child_union_id: None, | ||
key: None, | ||
fields: None | ||
}; | ||
let result = client.query_raw_order(param); | ||
match result.await { | ||
Ok(res) => { | ||
} | ||
Err(err) => { | ||
} | ||
} | ||
} | ||
``` | ||
|
||
### 自定义请求 | ||
|
||
You can implement this trait and then use the custom request | ||
|
||
+ AlipayRequest - 支付宝 | ||
+ JDRequest - 京东 | ||
+ TaobaoRequest - 淘宝 | ||
|
||
|
||
## 未来 | ||
|
||
我们将逐步完善相应的API | ||
1. 首先非常欢迎和感谢对本项目发起 `Pull Request` 的热心小伙伴们。 | ||
1. **特别提示:请务必在 `develop` 分支提交 `PR`,`release` 分支目前仅是正式版的代码,即发布正式版本后才会从 `develop` 分支进行合并。** | ||
1. 本项目代码风格为使用2个空格代表一个Tab,因此在提交代码时请注意一下,否则很容易在IDE格式化代码后与原代码产生大量diff,这样会给其他人阅读代码带来极大的困扰。 | ||
1. **提交代码前,请检查代码是否已经格式化,并且保证新增加或者修改的方法都有完整的参数说明,而pub方法必须拥有相应的单元测试并通过测试。** | ||
|
||
## 开发 | ||
|
||
To setup the development envrionment run `cargo run`. | ||
|
||
## 贡献者 | ||
|
||
MrPan <[email protected]> | ||
|
||
## Getting help | ||
|
||
拉布拉多是个人项目。一开始,我只是喜欢拉布拉多犬,因为我的爱好。 | ||
我希望这个项目会变得越来越可爱。许多实用的其他函数将 | ||
将在将来添加。我希望你能积极帮助这个项目成长并提出建议。 | ||
我相信未来会越来越好。 | ||
|
||
[#general]: https://discord.com/channels/273534239310479360/274215136414400513 | ||
[#beginners]: https://discord.com/channels/273534239310479360/273541522815713281 | ||
[#rust-usage]: https://discord.com/channels/442252698964721669/443150878111694848 | ||
[zulip]: https://rust-lang.zulipchat.com/#narrow/stream/122651-general | ||
[stackoverflow]: https://stackoverflow.com/questions/tagged/rust | ||
[/r/rust]: https://www.reddit.com/r/rust | ||
[discourse]: https://users.rust-lang.org | ||
|
||
<br> | ||
|
||
#### License | ||
|
||
<sup> | ||
Licensed under either of <a href="LICENSE-APACHE">Apache License, Version | ||
2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option. | ||
</sup> | ||
|
||
<br> | ||
|
||
<sub> | ||
Unless you explicitly state otherwise, any contribution intentionally submitted | ||
for inclusion in Labrador by you, as defined in the Apache-2.0 license, shall be | ||
dual licensed as above, without any additional terms or conditions. | ||
</sub> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.