use std::sync::Arc;
#[derive(Clone)]
pub enum Mode {
Normal,
Service,
Sandbox,
}
#[derive(Clone)]
pub struct WechatConfig {
pub mchid: String,
pub appid: Option<String>, pub serial_no: String,
pub private_key_pem: String,
pub api_v3_key: String,
pub platform_public_key_pem: Option<String>,
pub appid_mp: Option<String>,
pub appid_mini: Option<String>,
pub appid_app: Option<String>,
pub notify_url: Option<String>,
pub sub_mchid: Option<String>,
}
#[derive(Clone)]
pub struct AlipayConfig {
pub app_id: String,
pub private_key_pem: String,
pub alipay_public_key: Option<String>,
pub app_cert_path: Option<String>,
pub alipay_cert_path: Option<String>,
pub alipay_root_cert_path: Option<String>,
pub charset: String,
pub sign_type: String,
pub gateway: String,
pub sys_service_provider_id: Option<String>,
pub app_auth_token: Option<String>,
pub notify_url: Option<String>,
}
#[derive(Default)]
pub struct PayConfigOverride {
pub wechat: Option<WechatConfigOverride>,
pub alipay: Option<AlipayConfigOverride>,
}
#[derive(Default)]
pub struct WechatConfigOverride {
pub sub_mchid: Option<String>,
}
#[derive(Default)]
pub struct AlipayConfigOverride {
pub app_auth_token: Option<String>,
}
#[derive(Clone)]
pub struct UnionpayConfig {
pub mer_id: String,
}
#[derive(Clone)]
pub struct PayConfig {
pub mode: Mode,
pub wechat: Option<Arc<WechatConfig>>,
pub alipay: Option<Arc<AlipayConfig>>,
pub unionpay: Option<Arc<UnionpayConfig>>,
}