use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct AlipayTradeRefundResponse {
#[serde(rename = "code", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub code: Option<Option<String>>,
#[serde(rename = "msg", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub msg: Option<Option<String>>,
#[serde(rename = "subCode", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub sub_code: Option<Option<String>>,
#[serde(rename = "subMsg", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub sub_msg: Option<Option<String>>,
#[serde(rename = "body", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub body: Option<Option<String>>,
#[serde(rename = "isError", skip_serializing_if = "Option::is_none")]
pub is_error: Option<bool>,
#[serde(rename = "buyerLogonId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub buyer_logon_id: Option<Option<String>>,
#[serde(rename = "buyerOpenId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub buyer_open_id: Option<Option<String>>,
#[serde(rename = "buyerUserId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub buyer_user_id: Option<Option<String>>,
#[serde(rename = "fundChange", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub fund_change: Option<Option<String>>,
#[serde(rename = "gmtRefundPay", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub gmt_refund_pay: Option<Option<String>>,
#[serde(rename = "hasDepositBack", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub has_deposit_back: Option<Option<String>>,
#[serde(rename = "openId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub open_id: Option<Option<String>>,
#[serde(rename = "outTradeNo", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub out_trade_no: Option<Option<String>>,
#[serde(rename = "preAuthCancelFee", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub pre_auth_cancel_fee: Option<Option<String>>,
#[serde(rename = "presentRefundBuyerAmount", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub present_refund_buyer_amount: Option<Option<String>>,
#[serde(rename = "presentRefundDiscountAmount", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub present_refund_discount_amount: Option<Option<String>>,
#[serde(rename = "presentRefundMdiscountAmount", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub present_refund_mdiscount_amount: Option<Option<String>>,
#[serde(rename = "refundChargeAmount", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub refund_charge_amount: Option<Option<String>>,
#[serde(rename = "refundChargeInfoList", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub refund_charge_info_list: Option<Option<Vec<models::RefundChargeInfo>>>,
#[serde(rename = "refundCurrency", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub refund_currency: Option<Option<String>>,
#[serde(rename = "refundDetailItemList", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub refund_detail_item_list: Option<Option<Vec<models::TradeFundBill>>>,
#[serde(rename = "refundFee", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub refund_fee: Option<Option<String>>,
#[serde(rename = "refundHybAmount", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub refund_hyb_amount: Option<Option<String>>,
#[serde(rename = "refundPresetPaytoolList", skip_serializing_if = "Option::is_none")]
pub refund_preset_paytool_list: Option<Box<models::PresetPayToolInfo>>,
#[serde(rename = "refundSettlementId", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub refund_settlement_id: Option<Option<String>>,
#[serde(rename = "refundVoucherDetailList", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub refund_voucher_detail_list: Option<Option<Vec<models::VoucherDetail>>>,
#[serde(rename = "sendBackFee", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub send_back_fee: Option<Option<String>>,
#[serde(rename = "storeName", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub store_name: Option<Option<String>>,
#[serde(rename = "tradeNo", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub trade_no: Option<Option<String>>,
}
impl AlipayTradeRefundResponse {
pub fn new() -> AlipayTradeRefundResponse {
AlipayTradeRefundResponse {
code: None,
msg: None,
sub_code: None,
sub_msg: None,
body: None,
is_error: None,
buyer_logon_id: None,
buyer_open_id: None,
buyer_user_id: None,
fund_change: None,
gmt_refund_pay: None,
has_deposit_back: None,
open_id: None,
out_trade_no: None,
pre_auth_cancel_fee: None,
present_refund_buyer_amount: None,
present_refund_discount_amount: None,
present_refund_mdiscount_amount: None,
refund_charge_amount: None,
refund_charge_info_list: None,
refund_currency: None,
refund_detail_item_list: None,
refund_fee: None,
refund_hyb_amount: None,
refund_preset_paytool_list: None,
refund_settlement_id: None,
refund_voucher_detail_list: None,
send_back_fee: None,
store_name: None,
trade_no: None,
}
}
}