use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Amount {
pub total: i64,
#[serde(skip_serializing_if = "Option::is_none")]
pub currency: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Payer {
#[serde(default)]
pub openid: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SceneInfo {
pub payer_client_ip: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub device_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub store_info: Option<StoreInfo>,
#[serde(skip_serializing_if = "Option::is_none")]
pub h5_info: Option<H5Info>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StoreInfo {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub area_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct H5Info {
#[serde(rename = "type")]
pub h5_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub app_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub app_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bundle_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub package_name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GoodsDetail {
pub merchant_goods_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub wechatpay_goods_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub goods_name: Option<String>,
pub quantity: i32,
pub unit_price: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Detail {
#[serde(skip_serializing_if = "Option::is_none")]
pub cost_price: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub invoice_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub goods_detail: Option<Vec<GoodsDetail>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SettleInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub profit_sharing: Option<bool>,
}