Crates.io | labrador |
lib.rs | labrador |
version | 0.2.3 |
source | src |
created_at | 2022-08-16 12:32:05.092489 |
updated_at | 2023-08-27 09:06:21.878723 |
description | Labrador - Mini thirdpart client for rust. |
homepage | https://github.com/wslongchen/labrador |
repository | https://github.com/wslongchen/labrador |
max_upload_size | |
id | 646616 |
size | 1,388,899 |
Labrador - Mini client for rust
Features:
taobao
- Taobao customer related servicesalipay
- Alipay related servicespdd
- Pinduoduo related servicesjd
- Jingdong related serviceswechat
- Wechat related servicesopenssl-crypto
feature.
All encryption in this project is done with openssl. Later, other encryption databases will be supported for selection. Therefore, openssl needs to be introduced. See openssl for details.the default encryption in this project is rust-crypto & x509_parser & rsa
Platform | is supported |
---|---|
Wechat:mp(微信公众号),cp(企业微信),miniapp(微信小程序),pay(微信支付) | √ |
Alipay(支付宝) | √ |
Taobao(淘宝客) | √ |
JD(京东联盟) | √ |
PDD(拼多多-多多客) | √ |
You may be looking for:
[dependencies]
# The core APIs
labrador = { version = "0.1.0", features = ["wechat", "alipay"] }
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) => {}
}
}
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) => {}
}
}
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) => {
}
}
}
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 - For Alipay(支付宝)
JDRequest - For jingdong(京东)
TaobaoRequest - For taobao(淘宝)
We will gradually improve the corresponding API
To setup the development envrionment run cargo run
.
MrPan <1049058427@qq.com>
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.