use derive_builder::Builder;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, Builder)]
#[builder(pattern = "mutable")]
pub struct WechatV3PayConfig {
#[builder(setter(into))]
pub app_id: String,
#[builder(setter(into))]
pub secret: String,
#[builder(setter(into))]
pub mch_id: String,
#[builder(default, setter(strip_option, into))]
#[serde(skip_serializing_if = "Option::is_none")]
pub api_key_v3: Option<String>,
#[builder(default, setter(strip_option, into))]
#[serde(skip_serializing_if = "Option::is_none")]
pub api_key: Option<String>,
#[builder(default, setter(strip_option, into))]
#[serde(skip_serializing_if = "Option::is_none")]
pub notify_url: Option<String>,
#[builder(default, setter(strip_option, into))]
#[serde(skip_serializing_if = "Option::is_none")]
pub refund_notify_url: Option<String>,
#[builder(setter(strip_option, into))]
#[serde(skip_serializing_if = "Option::is_none")]
pub serial_no: Option<String>,
#[builder(default, setter(strip_option, into))]
#[serde(skip_serializing_if = "Option::is_none")]
pub private_key: Option<String>,
#[builder(default, setter(strip_option, into))]
#[serde(skip_serializing_if = "Option::is_none")]
pub pkcs12_path: Option<String>,
}