Labrador

Labrador - Mini client for rust
This create offers:
- A convenient mainstream third-party service client
- Convenient and quick use of corresponding services in rust
Features:
taobao - Taobao customer related services
alipay - Alipay related services
pdd - Pinduoduo related services
jd - Jingdong related services
wechat - Wechat related services
Supported Platform
| Platform |
is supported |
| Wechat:mp(微信公众号),cp(企业微信),miniapp(微信小程序),pay(微信支付) |
√ |
| Alipay(支付宝) |
√ |
| Taobao(淘宝客) |
√ |
| JD(京东联盟) |
√ |
| PDD(拼多多-多多客) |
√ |
You may be looking for:
Labrador in action
[dependencies]
labrador = { version = "0.1.0", features = ["wechat", "alipay"] }
API Documentation
Example
With Wechat(微信开放平台、包含微信支付)
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) => {}
}
}
With Alipay(支付宝)
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) => {}
}
}
With Taobao(淘宝客相关)
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) => {
}
}
}
With JD(京东,目前暂时只支持联盟相关)
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) => {
}
}
}
With Custom Request
You can implement this trait and then use the custom request
- AlipayRequest - For Alipay(支付宝)
- JDRequest - For jingdong(京东)
- TaobaoRequest - For taobao(淘宝)
Feature
We will gradually improve the corresponding API
Developing
To setup the development envrionment run cargo run.
Contributers
MrPan <1049058427@qq.com>
Getting help
Labrador is a personal project. At the beginning, I just like Labrador dog because of my hobbies.
I hope this project will grow more and more lovely. Many practical database functions will
be added in the future. I hope you can actively help this project grow and put forward suggestions.
I believe the future will be better and better.
License