说在后面明天给大家举荐一个Rust的自研三方框架Labrador,外面封装了淘宝客、京东联盟、微信领取、微信公众号、支付宝领取以及拼多多等API。尽管外面的API还有待欠缺,然而基础设施曾经有了,前面就是有条件的往上面堆API了。
很多人对淘宝客感兴趣,这个咱们下次再聊;当初咱们以对接微信以及支付宝领取为例子,看看应用这个框架都须要做多少工作吧!
筹备工作想要对接支付宝、微信,首先咱们须要在对应开放平台中申请所须要的参数。这里不再赘述,间接贴上目前自研平台的领取配置截图:支付宝微信
以上就是咱们须要提前准备好的工作。而后咱们须要新建一个工程
cargo new pay_test而后编辑Cargo.toml引入Labrador库。labrador = {version="0.1.0", features=["wechat", "alipay"]}
在main文件中,咱们先初始化两个client。
use labrador::{WeChatPayClient, SimpleStorage, TradeType, WeChatPayRequestV3, Amount, Payer, AlipayTradeWapPayRequest, AlipayClient};use chrono::{Local, SecondsFormat};#[tokio::main]async fn main() { // 微信 ↓ let wechat = WeChatPayClient::new("appid", "secret", SimpleStorage::new()).key_v3("api_v3_key").private_key("private_key"); let mut wechat_client = client.wxpay(); // 采纳V3版本的微信对立下单API 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: Local::now().to_rfc3339_opts(SecondsFormat::Secs, false), 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) => { todo!(做一些平凡的事件) } Err(err) => { todo!(做一些平凡的事件) } } // 支付宝 ↓ let param = AlipayTradeWapPayRequest::default(); // 申请参数补全 let alipay_client = AlipayClient::new("appKey", false).set_private_key("private_key")? .set_alipay_public_key("alipay_public_key").set_alipay_root_cert("alipay_root_cert").set_app_cert("app_cert"); match alipay_client.wap_pay("POST".into(), param).await { Ok(res) => { todo!(做一些平凡的事件) } Err(err) => { todo!(做一些平凡的事件) } } }应用下来是不是很不便,基本上与官网统一;另外因为对应API太多,如果框架内置的API不能满足对应的要求的话,能够间接依据文档内容实现对应的申请trait,就可能应用对应的API了。而后配套文档也根本都欠缺了,在应用的过程中能够很不便的查看某些办法应用的形式。
...