<?php
/**
 * AlipayTradeQueryResponseModel
 *
 * PHP version 7.4
 *
 * @category Class
 * @package  Alipay\OpenAPISDK
 * @author   OpenAPI Generator team
 * @link     https://openapi-generator.tech
 */

/**
 * 支付宝开放平台API
 *
 * 支付宝开放平台v3协议文档
 *
 * The version of the OpenAPI document: 2023-12-20
 * Generated by: https://openapi-generator.tech
 * OpenAPI Generator version: 6.2.1
 */

/**
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

namespace Alipay\OpenAPISDK\Model;

use \ArrayAccess;
use \Alipay\OpenAPISDK\ObjectSerializer;

/**
 * AlipayTradeQueryResponseModel Class Doc Comment
 *
 * @category Class
 * @package  Alipay\OpenAPISDK
 * @author   OpenAPI Generator team
 * @link     https://openapi-generator.tech
 * @implements \ArrayAccess<TKey, TValue>
 * @template TKey int|null
 * @template TValue mixed|null
 */
class AlipayTradeQueryResponseModel implements ModelInterface, ArrayAccess, \JsonSerializable
{
    public const DISCRIMINATOR = null;

    /**
      * The original name of the model.
      *
      * @var string
      */
    protected static $openAPIModelName = 'AlipayTradeQueryResponseModel';

    /**
      * Array of property to type mappings. Used for (de)serialization
      *
      * @var string[]
      */
    protected static $openAPITypes = [
        'alipayStoreId' => 'string',
        'alipaySubMerchantId' => 'string',
        'authTradePayMode' => 'string',
        'bizSettleMode' => 'string',
        'bkagentRespInfo' => '\Alipay\OpenAPISDK\Model\BkAgentRespInfo',
        'body' => 'string',
        'buyerLogonId' => 'string',
        'buyerOpenId' => 'string',
        'buyerPayAmount' => 'string',
        'buyerUserId' => 'string',
        'buyerUserName' => 'string',
        'buyerUserType' => 'string',
        'chargeAmount' => 'string',
        'chargeFlags' => 'string',
        'chargeInfoList' => '\Alipay\OpenAPISDK\Model\ChargeInfo[]',
        'creditBizOrderId' => 'string',
        'creditPayMode' => 'string',
        'discountAmount' => 'string',
        'discountGoodsDetail' => 'string',
        'enterprisePayInfo' => '\Alipay\OpenAPISDK\Model\EnterprisePayInfo',
        'extInfos' => 'string',
        'fundBillList' => '\Alipay\OpenAPISDK\Model\TradeFundBill[]',
        'hbFqPayInfo' => '\Alipay\OpenAPISDK\Model\HbFqPayInfo',
        'hybAmount' => 'string',
        'industrySepcDetail' => 'string',
        'industrySepcDetailAcc' => 'string',
        'industrySepcDetailGov' => 'string',
        'intactChargeInfoList' => '\Alipay\OpenAPISDK\Model\IntactChargeInfo[]',
        'invoiceAmount' => 'string',
        'mdiscountAmount' => 'string',
        'medicalInsuranceInfo' => 'string',
        'openId' => 'string',
        'outTradeNo' => 'string',
        'passbackParams' => 'string',
        'payAmount' => 'string',
        'payCurrency' => 'string',
        'paymentInfoWithIdList' => '\Alipay\OpenAPISDK\Model\PaymentInfoWithId[]',
        'pointAmount' => 'string',
        'receiptAmount' => 'string',
        'receiptCurrencyType' => 'string',
        'reqGoodsDetail' => '\Alipay\OpenAPISDK\Model\GoodsDetail[]',
        'sendPayDate' => 'string',
        'settleAmount' => 'string',
        'settleCurrency' => 'string',
        'settleTransRate' => 'string',
        'settlementId' => 'string',
        'storeId' => 'string',
        'storeName' => 'string',
        'subject' => 'string',
        'terminalId' => 'string',
        'totalAmount' => 'string',
        'tradeNo' => 'string',
        'tradeSettleInfo' => '\Alipay\OpenAPISDK\Model\TradeSettleInfo',
        'tradeStatus' => 'string',
        'transCurrency' => 'string',
        'transPayRate' => 'string',
        'voucherDetailList' => '\Alipay\OpenAPISDK\Model\VoucherDetail[]'
    ];

    /**
      * Array of property to format mappings. Used for (de)serialization
      *
      * @var string[]
      * @phpstan-var array<string, string|null>
      * @psalm-var array<string, string|null>
      */
    protected static $openAPIFormats = [
        'alipayStoreId' => null,
        'alipaySubMerchantId' => null,
        'authTradePayMode' => null,
        'bizSettleMode' => null,
        'bkagentRespInfo' => null,
        'body' => null,
        'buyerLogonId' => null,
        'buyerOpenId' => null,
        'buyerPayAmount' => null,
        'buyerUserId' => null,
        'buyerUserName' => null,
        'buyerUserType' => null,
        'chargeAmount' => null,
        'chargeFlags' => null,
        'chargeInfoList' => null,
        'creditBizOrderId' => null,
        'creditPayMode' => null,
        'discountAmount' => null,
        'discountGoodsDetail' => null,
        'enterprisePayInfo' => null,
        'extInfos' => null,
        'fundBillList' => null,
        'hbFqPayInfo' => null,
        'hybAmount' => null,
        'industrySepcDetail' => null,
        'industrySepcDetailAcc' => null,
        'industrySepcDetailGov' => null,
        'intactChargeInfoList' => null,
        'invoiceAmount' => null,
        'mdiscountAmount' => null,
        'medicalInsuranceInfo' => null,
        'openId' => null,
        'outTradeNo' => null,
        'passbackParams' => null,
        'payAmount' => null,
        'payCurrency' => null,
        'paymentInfoWithIdList' => null,
        'pointAmount' => null,
        'receiptAmount' => null,
        'receiptCurrencyType' => null,
        'reqGoodsDetail' => null,
        'sendPayDate' => null,
        'settleAmount' => null,
        'settleCurrency' => null,
        'settleTransRate' => null,
        'settlementId' => null,
        'storeId' => null,
        'storeName' => null,
        'subject' => null,
        'terminalId' => null,
        'totalAmount' => null,
        'tradeNo' => null,
        'tradeSettleInfo' => null,
        'tradeStatus' => null,
        'transCurrency' => null,
        'transPayRate' => null,
        'voucherDetailList' => null
    ];

    /**
     * Array of property to type mappings. Used for (de)serialization
     *
     * @return array
     */
    public static function openAPITypes()
    {
        return self::$openAPITypes;
    }

    /**
     * Array of property to format mappings. Used for (de)serialization
     *
     * @return array
     */
    public static function openAPIFormats()
    {
        return self::$openAPIFormats;
    }

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name
     *
     * @var string[]
     */
    protected static $attributeMap = [
        'alipayStoreId' => 'alipay_store_id',
        'alipaySubMerchantId' => 'alipay_sub_merchant_id',
        'authTradePayMode' => 'auth_trade_pay_mode',
        'bizSettleMode' => 'biz_settle_mode',
        'bkagentRespInfo' => 'bkagent_resp_info',
        'body' => 'body',
        'buyerLogonId' => 'buyer_logon_id',
        'buyerOpenId' => 'buyer_open_id',
        'buyerPayAmount' => 'buyer_pay_amount',
        'buyerUserId' => 'buyer_user_id',
        'buyerUserName' => 'buyer_user_name',
        'buyerUserType' => 'buyer_user_type',
        'chargeAmount' => 'charge_amount',
        'chargeFlags' => 'charge_flags',
        'chargeInfoList' => 'charge_info_list',
        'creditBizOrderId' => 'credit_biz_order_id',
        'creditPayMode' => 'credit_pay_mode',
        'discountAmount' => 'discount_amount',
        'discountGoodsDetail' => 'discount_goods_detail',
        'enterprisePayInfo' => 'enterprise_pay_info',
        'extInfos' => 'ext_infos',
        'fundBillList' => 'fund_bill_list',
        'hbFqPayInfo' => 'hb_fq_pay_info',
        'hybAmount' => 'hyb_amount',
        'industrySepcDetail' => 'industry_sepc_detail',
        'industrySepcDetailAcc' => 'industry_sepc_detail_acc',
        'industrySepcDetailGov' => 'industry_sepc_detail_gov',
        'intactChargeInfoList' => 'intact_charge_info_list',
        'invoiceAmount' => 'invoice_amount',
        'mdiscountAmount' => 'mdiscount_amount',
        'medicalInsuranceInfo' => 'medical_insurance_info',
        'openId' => 'open_id',
        'outTradeNo' => 'out_trade_no',
        'passbackParams' => 'passback_params',
        'payAmount' => 'pay_amount',
        'payCurrency' => 'pay_currency',
        'paymentInfoWithIdList' => 'payment_info_with_id_list',
        'pointAmount' => 'point_amount',
        'receiptAmount' => 'receipt_amount',
        'receiptCurrencyType' => 'receipt_currency_type',
        'reqGoodsDetail' => 'req_goods_detail',
        'sendPayDate' => 'send_pay_date',
        'settleAmount' => 'settle_amount',
        'settleCurrency' => 'settle_currency',
        'settleTransRate' => 'settle_trans_rate',
        'settlementId' => 'settlement_id',
        'storeId' => 'store_id',
        'storeName' => 'store_name',
        'subject' => 'subject',
        'terminalId' => 'terminal_id',
        'totalAmount' => 'total_amount',
        'tradeNo' => 'trade_no',
        'tradeSettleInfo' => 'trade_settle_info',
        'tradeStatus' => 'trade_status',
        'transCurrency' => 'trans_currency',
        'transPayRate' => 'trans_pay_rate',
        'voucherDetailList' => 'voucher_detail_list'
    ];

    /**
     * Array of attributes to setter functions (for deserialization of responses)
     *
     * @var string[]
     */
    protected static $setters = [
        'alipayStoreId' => 'setAlipayStoreId',
        'alipaySubMerchantId' => 'setAlipaySubMerchantId',
        'authTradePayMode' => 'setAuthTradePayMode',
        'bizSettleMode' => 'setBizSettleMode',
        'bkagentRespInfo' => 'setBkagentRespInfo',
        'body' => 'setBody',
        'buyerLogonId' => 'setBuyerLogonId',
        'buyerOpenId' => 'setBuyerOpenId',
        'buyerPayAmount' => 'setBuyerPayAmount',
        'buyerUserId' => 'setBuyerUserId',
        'buyerUserName' => 'setBuyerUserName',
        'buyerUserType' => 'setBuyerUserType',
        'chargeAmount' => 'setChargeAmount',
        'chargeFlags' => 'setChargeFlags',
        'chargeInfoList' => 'setChargeInfoList',
        'creditBizOrderId' => 'setCreditBizOrderId',
        'creditPayMode' => 'setCreditPayMode',
        'discountAmount' => 'setDiscountAmount',
        'discountGoodsDetail' => 'setDiscountGoodsDetail',
        'enterprisePayInfo' => 'setEnterprisePayInfo',
        'extInfos' => 'setExtInfos',
        'fundBillList' => 'setFundBillList',
        'hbFqPayInfo' => 'setHbFqPayInfo',
        'hybAmount' => 'setHybAmount',
        'industrySepcDetail' => 'setIndustrySepcDetail',
        'industrySepcDetailAcc' => 'setIndustrySepcDetailAcc',
        'industrySepcDetailGov' => 'setIndustrySepcDetailGov',
        'intactChargeInfoList' => 'setIntactChargeInfoList',
        'invoiceAmount' => 'setInvoiceAmount',
        'mdiscountAmount' => 'setMdiscountAmount',
        'medicalInsuranceInfo' => 'setMedicalInsuranceInfo',
        'openId' => 'setOpenId',
        'outTradeNo' => 'setOutTradeNo',
        'passbackParams' => 'setPassbackParams',
        'payAmount' => 'setPayAmount',
        'payCurrency' => 'setPayCurrency',
        'paymentInfoWithIdList' => 'setPaymentInfoWithIdList',
        'pointAmount' => 'setPointAmount',
        'receiptAmount' => 'setReceiptAmount',
        'receiptCurrencyType' => 'setReceiptCurrencyType',
        'reqGoodsDetail' => 'setReqGoodsDetail',
        'sendPayDate' => 'setSendPayDate',
        'settleAmount' => 'setSettleAmount',
        'settleCurrency' => 'setSettleCurrency',
        'settleTransRate' => 'setSettleTransRate',
        'settlementId' => 'setSettlementId',
        'storeId' => 'setStoreId',
        'storeName' => 'setStoreName',
        'subject' => 'setSubject',
        'terminalId' => 'setTerminalId',
        'totalAmount' => 'setTotalAmount',
        'tradeNo' => 'setTradeNo',
        'tradeSettleInfo' => 'setTradeSettleInfo',
        'tradeStatus' => 'setTradeStatus',
        'transCurrency' => 'setTransCurrency',
        'transPayRate' => 'setTransPayRate',
        'voucherDetailList' => 'setVoucherDetailList'
    ];

    /**
     * Array of attributes to getter functions (for serialization of requests)
     *
     * @var string[]
     */
    protected static $getters = [
        'alipayStoreId' => 'getAlipayStoreId',
        'alipaySubMerchantId' => 'getAlipaySubMerchantId',
        'authTradePayMode' => 'getAuthTradePayMode',
        'bizSettleMode' => 'getBizSettleMode',
        'bkagentRespInfo' => 'getBkagentRespInfo',
        'body' => 'getBody',
        'buyerLogonId' => 'getBuyerLogonId',
        'buyerOpenId' => 'getBuyerOpenId',
        'buyerPayAmount' => 'getBuyerPayAmount',
        'buyerUserId' => 'getBuyerUserId',
        'buyerUserName' => 'getBuyerUserName',
        'buyerUserType' => 'getBuyerUserType',
        'chargeAmount' => 'getChargeAmount',
        'chargeFlags' => 'getChargeFlags',
        'chargeInfoList' => 'getChargeInfoList',
        'creditBizOrderId' => 'getCreditBizOrderId',
        'creditPayMode' => 'getCreditPayMode',
        'discountAmount' => 'getDiscountAmount',
        'discountGoodsDetail' => 'getDiscountGoodsDetail',
        'enterprisePayInfo' => 'getEnterprisePayInfo',
        'extInfos' => 'getExtInfos',
        'fundBillList' => 'getFundBillList',
        'hbFqPayInfo' => 'getHbFqPayInfo',
        'hybAmount' => 'getHybAmount',
        'industrySepcDetail' => 'getIndustrySepcDetail',
        'industrySepcDetailAcc' => 'getIndustrySepcDetailAcc',
        'industrySepcDetailGov' => 'getIndustrySepcDetailGov',
        'intactChargeInfoList' => 'getIntactChargeInfoList',
        'invoiceAmount' => 'getInvoiceAmount',
        'mdiscountAmount' => 'getMdiscountAmount',
        'medicalInsuranceInfo' => 'getMedicalInsuranceInfo',
        'openId' => 'getOpenId',
        'outTradeNo' => 'getOutTradeNo',
        'passbackParams' => 'getPassbackParams',
        'payAmount' => 'getPayAmount',
        'payCurrency' => 'getPayCurrency',
        'paymentInfoWithIdList' => 'getPaymentInfoWithIdList',
        'pointAmount' => 'getPointAmount',
        'receiptAmount' => 'getReceiptAmount',
        'receiptCurrencyType' => 'getReceiptCurrencyType',
        'reqGoodsDetail' => 'getReqGoodsDetail',
        'sendPayDate' => 'getSendPayDate',
        'settleAmount' => 'getSettleAmount',
        'settleCurrency' => 'getSettleCurrency',
        'settleTransRate' => 'getSettleTransRate',
        'settlementId' => 'getSettlementId',
        'storeId' => 'getStoreId',
        'storeName' => 'getStoreName',
        'subject' => 'getSubject',
        'terminalId' => 'getTerminalId',
        'totalAmount' => 'getTotalAmount',
        'tradeNo' => 'getTradeNo',
        'tradeSettleInfo' => 'getTradeSettleInfo',
        'tradeStatus' => 'getTradeStatus',
        'transCurrency' => 'getTransCurrency',
        'transPayRate' => 'getTransPayRate',
        'voucherDetailList' => 'getVoucherDetailList'
    ];

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name
     *
     * @return array
     */
    public static function attributeMap()
    {
        return self::$attributeMap;
    }

    /**
     * Array of attributes to setter functions (for deserialization of responses)
     *
     * @return array
     */
    public static function setters()
    {
        return self::$setters;
    }

    /**
     * Array of attributes to getter functions (for serialization of requests)
     *
     * @return array
     */
    public static function getters()
    {
        return self::$getters;
    }

    /**
     * The original name of the model.
     *
     * @return string
     */
    public function getModelName()
    {
        return self::$openAPIModelName;
    }


    /**
     * Associative array for storing property values
     *
     * @var mixed[]
     */
    protected $container = [];

    /**
     * Constructor
     *
     * @param mixed[] $data Associated array of property values
     *                      initializing the model
     */
    public function __construct(array $data = null)
    {
        $this->container['alipayStoreId'] = $data['alipayStoreId'] ?? null;
        $this->container['alipaySubMerchantId'] = $data['alipaySubMerchantId'] ?? null;
        $this->container['authTradePayMode'] = $data['authTradePayMode'] ?? null;
        $this->container['bizSettleMode'] = $data['bizSettleMode'] ?? null;
        $this->container['bkagentRespInfo'] = $data['bkagentRespInfo'] ?? null;
        $this->container['body'] = $data['body'] ?? null;
        $this->container['buyerLogonId'] = $data['buyerLogonId'] ?? null;
        $this->container['buyerOpenId'] = $data['buyerOpenId'] ?? null;
        $this->container['buyerPayAmount'] = $data['buyerPayAmount'] ?? null;
        $this->container['buyerUserId'] = $data['buyerUserId'] ?? null;
        $this->container['buyerUserName'] = $data['buyerUserName'] ?? null;
        $this->container['buyerUserType'] = $data['buyerUserType'] ?? null;
        $this->container['chargeAmount'] = $data['chargeAmount'] ?? null;
        $this->container['chargeFlags'] = $data['chargeFlags'] ?? null;
        $this->container['chargeInfoList'] = $data['chargeInfoList'] ?? null;
        $this->container['creditBizOrderId'] = $data['creditBizOrderId'] ?? null;
        $this->container['creditPayMode'] = $data['creditPayMode'] ?? null;
        $this->container['discountAmount'] = $data['discountAmount'] ?? null;
        $this->container['discountGoodsDetail'] = $data['discountGoodsDetail'] ?? null;
        $this->container['enterprisePayInfo'] = $data['enterprisePayInfo'] ?? null;
        $this->container['extInfos'] = $data['extInfos'] ?? null;
        $this->container['fundBillList'] = $data['fundBillList'] ?? null;
        $this->container['hbFqPayInfo'] = $data['hbFqPayInfo'] ?? null;
        $this->container['hybAmount'] = $data['hybAmount'] ?? null;
        $this->container['industrySepcDetail'] = $data['industrySepcDetail'] ?? null;
        $this->container['industrySepcDetailAcc'] = $data['industrySepcDetailAcc'] ?? null;
        $this->container['industrySepcDetailGov'] = $data['industrySepcDetailGov'] ?? null;
        $this->container['intactChargeInfoList'] = $data['intactChargeInfoList'] ?? null;
        $this->container['invoiceAmount'] = $data['invoiceAmount'] ?? null;
        $this->container['mdiscountAmount'] = $data['mdiscountAmount'] ?? null;
        $this->container['medicalInsuranceInfo'] = $data['medicalInsuranceInfo'] ?? null;
        $this->container['openId'] = $data['openId'] ?? null;
        $this->container['outTradeNo'] = $data['outTradeNo'] ?? null;
        $this->container['passbackParams'] = $data['passbackParams'] ?? null;
        $this->container['payAmount'] = $data['payAmount'] ?? null;
        $this->container['payCurrency'] = $data['payCurrency'] ?? null;
        $this->container['paymentInfoWithIdList'] = $data['paymentInfoWithIdList'] ?? null;
        $this->container['pointAmount'] = $data['pointAmount'] ?? null;
        $this->container['receiptAmount'] = $data['receiptAmount'] ?? null;
        $this->container['receiptCurrencyType'] = $data['receiptCurrencyType'] ?? null;
        $this->container['reqGoodsDetail'] = $data['reqGoodsDetail'] ?? null;
        $this->container['sendPayDate'] = $data['sendPayDate'] ?? null;
        $this->container['settleAmount'] = $data['settleAmount'] ?? null;
        $this->container['settleCurrency'] = $data['settleCurrency'] ?? null;
        $this->container['settleTransRate'] = $data['settleTransRate'] ?? null;
        $this->container['settlementId'] = $data['settlementId'] ?? null;
        $this->container['storeId'] = $data['storeId'] ?? null;
        $this->container['storeName'] = $data['storeName'] ?? null;
        $this->container['subject'] = $data['subject'] ?? null;
        $this->container['terminalId'] = $data['terminalId'] ?? null;
        $this->container['totalAmount'] = $data['totalAmount'] ?? null;
        $this->container['tradeNo'] = $data['tradeNo'] ?? null;
        $this->container['tradeSettleInfo'] = $data['tradeSettleInfo'] ?? null;
        $this->container['tradeStatus'] = $data['tradeStatus'] ?? null;
        $this->container['transCurrency'] = $data['transCurrency'] ?? null;
        $this->container['transPayRate'] = $data['transPayRate'] ?? null;
        $this->container['voucherDetailList'] = $data['voucherDetailList'] ?? null;
    }

    /**
     * Show all the invalid properties with reasons.
     *
     * @return array invalid properties with reasons
     */
    public function listInvalidProperties()
    {
        $invalidProperties = [];

        return $invalidProperties;
    }

    /**
     * Validate all the properties in the model
     * return true if all passed
     *
     * @return bool True if all properties are valid
     */
    public function valid()
    {
        return count($this->listInvalidProperties()) === 0;
    }


    /**
     * Gets alipayStoreId
     *
     * @return string|null
     */
    public function getAlipayStoreId()
    {
        return $this->container['alipayStoreId'];
    }

    /**
     * Sets alipayStoreId
     *
     * @param string|null $alipayStoreId 支付宝店铺编号
     *
     * @return self
     */
    public function setAlipayStoreId($alipayStoreId)
    {
        $this->container['alipayStoreId'] = $alipayStoreId;

        return $this;
    }

    /**
     * Gets alipaySubMerchantId
     *
     * @return string|null
     */
    public function getAlipaySubMerchantId()
    {
        return $this->container['alipaySubMerchantId'];
    }

    /**
     * Sets alipaySubMerchantId
     *
     * @param string|null $alipaySubMerchantId 间连商户在支付宝端的商户编号；  只在银行间联交易场景下返回该信息；
     *
     * @return self
     */
    public function setAlipaySubMerchantId($alipaySubMerchantId)
    {
        $this->container['alipaySubMerchantId'] = $alipaySubMerchantId;

        return $this;
    }

    /**
     * Gets authTradePayMode
     *
     * @return string|null
     */
    public function getAuthTradePayMode()
    {
        return $this->container['authTradePayMode'];
    }

    /**
     * Sets authTradePayMode
     *
     * @param string|null $authTradePayMode 预授权支付模式，该参数仅在信用预授权支付场景下返回。信用预授权支付：CREDIT_PREAUTH_PAY
     *
     * @return self
     */
    public function setAuthTradePayMode($authTradePayMode)
    {
        $this->container['authTradePayMode'] = $authTradePayMode;

        return $this;
    }

    /**
     * Gets bizSettleMode
     *
     * @return string|null
     */
    public function getBizSettleMode()
    {
        return $this->container['bizSettleMode'];
    }

    /**
     * Sets bizSettleMode
     *
     * @param string|null $bizSettleMode 账期结算标识，指已完成支付的订单会进行账期管控，不会实时结算。该参数目前会在使用小程序交易组件场景下返回
     *
     * @return self
     */
    public function setBizSettleMode($bizSettleMode)
    {
        $this->container['bizSettleMode'] = $bizSettleMode;

        return $this;
    }

    /**
     * Gets bkagentRespInfo
     *
     * @return \Alipay\OpenAPISDK\Model\BkAgentRespInfo|null
     */
    public function getBkagentRespInfo()
    {
        return $this->container['bkagentRespInfo'];
    }

    /**
     * Sets bkagentRespInfo
     *
     * @param \Alipay\OpenAPISDK\Model\BkAgentRespInfo|null $bkagentRespInfo bkagentRespInfo
     *
     * @return self
     */
    public function setBkagentRespInfo($bkagentRespInfo)
    {
        $this->container['bkagentRespInfo'] = $bkagentRespInfo;

        return $this;
    }

    /**
     * Gets body
     *
     * @return string|null
     */
    public function getBody()
    {
        return $this->container['body'];
    }

    /**
     * Sets body
     *
     * @param string|null $body 订单描述； 只在银行间联交易场景下返回该信息；
     *
     * @return self
     */
    public function setBody($body)
    {
        $this->container['body'] = $body;

        return $this;
    }

    /**
     * Gets buyerLogonId
     *
     * @return string|null
     */
    public function getBuyerLogonId()
    {
        return $this->container['buyerLogonId'];
    }

    /**
     * Sets buyerLogonId
     *
     * @param string|null $buyerLogonId 买家支付宝账号
     *
     * @return self
     */
    public function setBuyerLogonId($buyerLogonId)
    {
        $this->container['buyerLogonId'] = $buyerLogonId;

        return $this;
    }

    /**
     * Gets buyerOpenId
     *
     * @return string|null
     */
    public function getBuyerOpenId()
    {
        return $this->container['buyerOpenId'];
    }

    /**
     * Sets buyerOpenId
     *
     * @param string|null $buyerOpenId 买家支付宝用户唯一标识
     *
     * @return self
     */
    public function setBuyerOpenId($buyerOpenId)
    {
        $this->container['buyerOpenId'] = $buyerOpenId;

        return $this;
    }

    /**
     * Gets buyerPayAmount
     *
     * @return string|null
     */
    public function getBuyerPayAmount()
    {
        return $this->container['buyerPayAmount'];
    }

    /**
     * Sets buyerPayAmount
     *
     * @param string|null $buyerPayAmount 买家实付金额，单位为元，两位小数。该金额代表该笔交易买家实际支付的金额，不包含商户折扣等金额
     *
     * @return self
     */
    public function setBuyerPayAmount($buyerPayAmount)
    {
        $this->container['buyerPayAmount'] = $buyerPayAmount;

        return $this;
    }

    /**
     * Gets buyerUserId
     *
     * @return string|null
     */
    public function getBuyerUserId()
    {
        return $this->container['buyerUserId'];
    }

    /**
     * Sets buyerUserId
     *
     * @param string|null $buyerUserId 买家在支付宝的用户id
     *
     * @return self
     */
    public function setBuyerUserId($buyerUserId)
    {
        $this->container['buyerUserId'] = $buyerUserId;

        return $this;
    }

    /**
     * Gets buyerUserName
     *
     * @return string|null
     */
    public function getBuyerUserName()
    {
        return $this->container['buyerUserName'];
    }

    /**
     * Sets buyerUserName
     *
     * @param string|null $buyerUserName 买家名称；  买家为个人用户时为买家姓名，买家为企业用户时为企业名称；  默认不返回该信息，需与支付宝约定后配置返回；
     *
     * @return self
     */
    public function setBuyerUserName($buyerUserName)
    {
        $this->container['buyerUserName'] = $buyerUserName;

        return $this;
    }

    /**
     * Gets buyerUserType
     *
     * @return string|null
     */
    public function getBuyerUserType()
    {
        return $this->container['buyerUserType'];
    }

    /**
     * Sets buyerUserType
     *
     * @param string|null $buyerUserType 买家用户类型。CORPORATE:企业用户；PRIVATE:个人用户。
     *
     * @return self
     */
    public function setBuyerUserType($buyerUserType)
    {
        $this->container['buyerUserType'] = $buyerUserType;

        return $this;
    }

    /**
     * Gets chargeAmount
     *
     * @return string|null
     */
    public function getChargeAmount()
    {
        return $this->container['chargeAmount'];
    }

    /**
     * Sets chargeAmount
     *
     * @param string|null $chargeAmount 该笔交易针对收款方的收费金额；单位：元。  只在银行间联交易场景下返回该信息；
     *
     * @return self
     */
    public function setChargeAmount($chargeAmount)
    {
        $this->container['chargeAmount'] = $chargeAmount;

        return $this;
    }

    /**
     * Gets chargeFlags
     *
     * @return string|null
     */
    public function getChargeFlags()
    {
        return $this->container['chargeFlags'];
    }

    /**
     * Sets chargeFlags
     *
     * @param string|null $chargeFlags 费率活动标识。 当交易享受特殊行业或活动费率时，返回该场景的标识。具体场景如下： trade_special_00：订单优惠费率； industry_special_on_00：线上行业特殊费率0； industry_special_on_01：线上行业特殊费率1； industry_special_00：线下行业特殊费率0； industry_special_01：线下行业特殊费率1； bluesea_1：蓝海活动优惠费率标签； 注：只在机构间联模式下返回，其它场景下不返回该字段；
     *
     * @return self
     */
    public function setChargeFlags($chargeFlags)
    {
        $this->container['chargeFlags'] = $chargeFlags;

        return $this;
    }

    /**
     * Gets chargeInfoList
     *
     * @return \Alipay\OpenAPISDK\Model\ChargeInfo[]|null
     */
    public function getChargeInfoList()
    {
        return $this->container['chargeInfoList'];
    }

    /**
     * Sets chargeInfoList
     *
     * @param \Alipay\OpenAPISDK\Model\ChargeInfo[]|null $chargeInfoList 计费信息列表
     *
     * @return self
     */
    public function setChargeInfoList($chargeInfoList)
    {
        $this->container['chargeInfoList'] = $chargeInfoList;

        return $this;
    }

    /**
     * Gets creditBizOrderId
     *
     * @return string|null
     */
    public function getCreditBizOrderId()
    {
        return $this->container['creditBizOrderId'];
    }

    /**
     * Sets creditBizOrderId
     *
     * @param string|null $creditBizOrderId 信用业务单号。信用支付场景才有值，先用后付产品里是芝麻订单号。
     *
     * @return self
     */
    public function setCreditBizOrderId($creditBizOrderId)
    {
        $this->container['creditBizOrderId'] = $creditBizOrderId;

        return $this;
    }

    /**
     * Gets creditPayMode
     *
     * @return string|null
     */
    public function getCreditPayMode()
    {
        return $this->container['creditPayMode'];
    }

    /**
     * Sets creditPayMode
     *
     * @param string|null $creditPayMode 信用支付模式。表示订单是采用信用支付方式（支付时买家没有出资，需要后续履约）。\"creditAdvanceV2\"表示芝麻先用后付模式，用户后续需要履约扣款。 此字段只有信用支付场景才有值，商户需要根据字段值单独处理。此字段以后可能扩展其他值，建议商户使用白名单方式识别，对于未识别的值做失败处理，并联系支付宝技术支持人员。
     *
     * @return self
     */
    public function setCreditPayMode($creditPayMode)
    {
        $this->container['creditPayMode'] = $creditPayMode;

        return $this;
    }

    /**
     * Gets discountAmount
     *
     * @return string|null
     */
    public function getDiscountAmount()
    {
        return $this->container['discountAmount'];
    }

    /**
     * Sets discountAmount
     *
     * @param string|null $discountAmount 平台优惠金额。单位：元。
     *
     * @return self
     */
    public function setDiscountAmount($discountAmount)
    {
        $this->container['discountAmount'] = $discountAmount;

        return $this;
    }

    /**
     * Gets discountGoodsDetail
     *
     * @return string|null
     */
    public function getDiscountGoodsDetail()
    {
        return $this->container['discountGoodsDetail'];
    }

    /**
     * Sets discountGoodsDetail
     *
     * @param string|null $discountGoodsDetail 本次交易支付所使用的单品券优惠的商品优惠信息。 只有在query_options中指定时才返回该字段信息。
     *
     * @return self
     */
    public function setDiscountGoodsDetail($discountGoodsDetail)
    {
        $this->container['discountGoodsDetail'] = $discountGoodsDetail;

        return $this;
    }

    /**
     * Gets enterprisePayInfo
     *
     * @return \Alipay\OpenAPISDK\Model\EnterprisePayInfo|null
     */
    public function getEnterprisePayInfo()
    {
        return $this->container['enterprisePayInfo'];
    }

    /**
     * Sets enterprisePayInfo
     *
     * @param \Alipay\OpenAPISDK\Model\EnterprisePayInfo|null $enterprisePayInfo enterprisePayInfo
     *
     * @return self
     */
    public function setEnterprisePayInfo($enterprisePayInfo)
    {
        $this->container['enterprisePayInfo'] = $enterprisePayInfo;

        return $this;
    }

    /**
     * Gets extInfos
     *
     * @return string|null
     */
    public function getExtInfos()
    {
        return $this->container['extInfos'];
    }

    /**
     * Sets extInfos
     *
     * @param string|null $extInfos 交易额外信息，特殊场景下与支付宝约定返回。 json格式。
     *
     * @return self
     */
    public function setExtInfos($extInfos)
    {
        $this->container['extInfos'] = $extInfos;

        return $this;
    }

    /**
     * Gets fundBillList
     *
     * @return \Alipay\OpenAPISDK\Model\TradeFundBill[]|null
     */
    public function getFundBillList()
    {
        return $this->container['fundBillList'];
    }

    /**
     * Sets fundBillList
     *
     * @param \Alipay\OpenAPISDK\Model\TradeFundBill[]|null $fundBillList 交易支付使用的资金渠道。 只有在签约中指定需要返回资金明细，或者入参的query_options中指定时才返回该字段信息。
     *
     * @return self
     */
    public function setFundBillList($fundBillList)
    {
        $this->container['fundBillList'] = $fundBillList;

        return $this;
    }

    /**
     * Gets hbFqPayInfo
     *
     * @return \Alipay\OpenAPISDK\Model\HbFqPayInfo|null
     */
    public function getHbFqPayInfo()
    {
        return $this->container['hbFqPayInfo'];
    }

    /**
     * Sets hbFqPayInfo
     *
     * @param \Alipay\OpenAPISDK\Model\HbFqPayInfo|null $hbFqPayInfo hbFqPayInfo
     *
     * @return self
     */
    public function setHbFqPayInfo($hbFqPayInfo)
    {
        $this->container['hbFqPayInfo'] = $hbFqPayInfo;

        return $this;
    }

    /**
     * Gets hybAmount
     *
     * @return string|null
     */
    public function getHybAmount()
    {
        return $this->container['hybAmount'];
    }

    /**
     * Sets hybAmount
     *
     * @param string|null $hybAmount 惠营宝回票金额。单位：元。
     *
     * @return self
     */
    public function setHybAmount($hybAmount)
    {
        $this->container['hybAmount'] = $hybAmount;

        return $this;
    }

    /**
     * Gets industrySepcDetail
     *
     * @return string|null
     */
    public function getIndustrySepcDetail()
    {
        return $this->container['industrySepcDetail'];
    }

    /**
     * Sets industrySepcDetail
     *
     * @param string|null $industrySepcDetail 行业特殊信息（例如在医保卡支付业务中，向用户返回医疗信息）。
     *
     * @return self
     */
    public function setIndustrySepcDetail($industrySepcDetail)
    {
        $this->container['industrySepcDetail'] = $industrySepcDetail;

        return $this;
    }

    /**
     * Gets industrySepcDetailAcc
     *
     * @return string|null
     */
    public function getIndustrySepcDetailAcc()
    {
        return $this->container['industrySepcDetailAcc'];
    }

    /**
     * Sets industrySepcDetailAcc
     *
     * @param string|null $industrySepcDetailAcc 行业特殊信息-个账相关
     *
     * @return self
     */
    public function setIndustrySepcDetailAcc($industrySepcDetailAcc)
    {
        $this->container['industrySepcDetailAcc'] = $industrySepcDetailAcc;

        return $this;
    }

    /**
     * Gets industrySepcDetailGov
     *
     * @return string|null
     */
    public function getIndustrySepcDetailGov()
    {
        return $this->container['industrySepcDetailGov'];
    }

    /**
     * Sets industrySepcDetailGov
     *
     * @param string|null $industrySepcDetailGov 行业特殊信息-统筹相关
     *
     * @return self
     */
    public function setIndustrySepcDetailGov($industrySepcDetailGov)
    {
        $this->container['industrySepcDetailGov'] = $industrySepcDetailGov;

        return $this;
    }

    /**
     * Gets intactChargeInfoList
     *
     * @return \Alipay\OpenAPISDK\Model\IntactChargeInfo[]|null
     */
    public function getIntactChargeInfoList()
    {
        return $this->container['intactChargeInfoList'];
    }

    /**
     * Sets intactChargeInfoList
     *
     * @param \Alipay\OpenAPISDK\Model\IntactChargeInfo[]|null $intactChargeInfoList 完整的收费信息
     *
     * @return self
     */
    public function setIntactChargeInfoList($intactChargeInfoList)
    {
        $this->container['intactChargeInfoList'] = $intactChargeInfoList;

        return $this;
    }

    /**
     * Gets invoiceAmount
     *
     * @return string|null
     */
    public function getInvoiceAmount()
    {
        return $this->container['invoiceAmount'];
    }

    /**
     * Sets invoiceAmount
     *
     * @param string|null $invoiceAmount 交易中用户支付的可开具发票的金额，单位为元，两位小数。该金额代表该笔交易中可以给用户开具发票的金额
     *
     * @return self
     */
    public function setInvoiceAmount($invoiceAmount)
    {
        $this->container['invoiceAmount'] = $invoiceAmount;

        return $this;
    }

    /**
     * Gets mdiscountAmount
     *
     * @return string|null
     */
    public function getMdiscountAmount()
    {
        return $this->container['mdiscountAmount'];
    }

    /**
     * Sets mdiscountAmount
     *
     * @param string|null $mdiscountAmount 商家优惠金额。单位：元。
     *
     * @return self
     */
    public function setMdiscountAmount($mdiscountAmount)
    {
        $this->container['mdiscountAmount'] = $mdiscountAmount;

        return $this;
    }

    /**
     * Gets medicalInsuranceInfo
     *
     * @return string|null
     */
    public function getMedicalInsuranceInfo()
    {
        return $this->container['medicalInsuranceInfo'];
    }

    /**
     * Sets medicalInsuranceInfo
     *
     * @param string|null $medicalInsuranceInfo 医保信息。入参的query_options中指定时才返回该字段信息。medicareCardType：医保卡类型，\"1\":\"亲情支付\",\"0\":\"本人支付\"，为空默认为本人支付；medicareCardHolderHiddenName：医保卡持卡人姓名。
     *
     * @return self
     */
    public function setMedicalInsuranceInfo($medicalInsuranceInfo)
    {
        $this->container['medicalInsuranceInfo'] = $medicalInsuranceInfo;

        return $this;
    }

    /**
     * Gets openId
     *
     * @return string|null
     */
    public function getOpenId()
    {
        return $this->container['openId'];
    }

    /**
     * Sets openId
     *
     * @param string|null $openId 买家支付宝用户号，该字段将废弃，不要使用
     *
     * @return self
     */
    public function setOpenId($openId)
    {
        $this->container['openId'] = $openId;

        return $this;
    }

    /**
     * Gets outTradeNo
     *
     * @return string|null
     */
    public function getOutTradeNo()
    {
        return $this->container['outTradeNo'];
    }

    /**
     * Sets outTradeNo
     *
     * @param string|null $outTradeNo 商家订单号
     *
     * @return self
     */
    public function setOutTradeNo($outTradeNo)
    {
        $this->container['outTradeNo'] = $outTradeNo;

        return $this;
    }

    /**
     * Gets passbackParams
     *
     * @return string|null
     */
    public function getPassbackParams()
    {
        return $this->container['passbackParams'];
    }

    /**
     * Sets passbackParams
     *
     * @param string|null $passbackParams 公用回传参数。 返回支付时传入的passback_params参数信息
     *
     * @return self
     */
    public function setPassbackParams($passbackParams)
    {
        $this->container['passbackParams'] = $passbackParams;

        return $this;
    }

    /**
     * Gets payAmount
     *
     * @return string|null
     */
    public function getPayAmount()
    {
        return $this->container['payAmount'];
    }

    /**
     * Sets payAmount
     *
     * @param string|null $payAmount 支付币种订单金额
     *
     * @return self
     */
    public function setPayAmount($payAmount)
    {
        $this->container['payAmount'] = $payAmount;

        return $this;
    }

    /**
     * Gets payCurrency
     *
     * @return string|null
     */
    public function getPayCurrency()
    {
        return $this->container['payCurrency'];
    }

    /**
     * Sets payCurrency
     *
     * @param string|null $payCurrency 订单支付币种
     *
     * @return self
     */
    public function setPayCurrency($payCurrency)
    {
        $this->container['payCurrency'] = $payCurrency;

        return $this;
    }

    /**
     * Gets paymentInfoWithIdList
     *
     * @return \Alipay\OpenAPISDK\Model\PaymentInfoWithId[]|null
     */
    public function getPaymentInfoWithIdList()
    {
        return $this->container['paymentInfoWithIdList'];
    }

    /**
     * Sets paymentInfoWithIdList
     *
     * @param \Alipay\OpenAPISDK\Model\PaymentInfoWithId[]|null $paymentInfoWithIdList 带支付宝支付id的信息，暂不对外开放
     *
     * @return self
     */
    public function setPaymentInfoWithIdList($paymentInfoWithIdList)
    {
        $this->container['paymentInfoWithIdList'] = $paymentInfoWithIdList;

        return $this;
    }

    /**
     * Gets pointAmount
     *
     * @return string|null
     */
    public function getPointAmount()
    {
        return $this->container['pointAmount'];
    }

    /**
     * Sets pointAmount
     *
     * @param string|null $pointAmount 积分支付的金额，单位为元，两位小数。该金额代表该笔交易中用户使用积分支付的金额，比如集分宝或者支付宝实时优惠等
     *
     * @return self
     */
    public function setPointAmount($pointAmount)
    {
        $this->container['pointAmount'] = $pointAmount;

        return $this;
    }

    /**
     * Gets receiptAmount
     *
     * @return string|null
     */
    public function getReceiptAmount()
    {
        return $this->container['receiptAmount'];
    }

    /**
     * Sets receiptAmount
     *
     * @param string|null $receiptAmount 实收金额，单位为元，两位小数。该金额为本笔交易，商户账户能够实际收到的金额
     *
     * @return self
     */
    public function setReceiptAmount($receiptAmount)
    {
        $this->container['receiptAmount'] = $receiptAmount;

        return $this;
    }

    /**
     * Gets receiptCurrencyType
     *
     * @return string|null
     */
    public function getReceiptCurrencyType()
    {
        return $this->container['receiptCurrencyType'];
    }

    /**
     * Sets receiptCurrencyType
     *
     * @param string|null $receiptCurrencyType 收款资金类型，当交易收款资金为数字人民币时返回值为“DC”，否则不返回该字段。
     *
     * @return self
     */
    public function setReceiptCurrencyType($receiptCurrencyType)
    {
        $this->container['receiptCurrencyType'] = $receiptCurrencyType;

        return $this;
    }

    /**
     * Gets reqGoodsDetail
     *
     * @return \Alipay\OpenAPISDK\Model\GoodsDetail[]|null
     */
    public function getReqGoodsDetail()
    {
        return $this->container['reqGoodsDetail'];
    }

    /**
     * Sets reqGoodsDetail
     *
     * @param \Alipay\OpenAPISDK\Model\GoodsDetail[]|null $reqGoodsDetail 支付请求的商品明细列表
     *
     * @return self
     */
    public function setReqGoodsDetail($reqGoodsDetail)
    {
        $this->container['reqGoodsDetail'] = $reqGoodsDetail;

        return $this;
    }

    /**
     * Gets sendPayDate
     *
     * @return string|null
     */
    public function getSendPayDate()
    {
        return $this->container['sendPayDate'];
    }

    /**
     * Sets sendPayDate
     *
     * @param string|null $sendPayDate 本次交易打款给卖家的时间
     *
     * @return self
     */
    public function setSendPayDate($sendPayDate)
    {
        $this->container['sendPayDate'] = $sendPayDate;

        return $this;
    }

    /**
     * Gets settleAmount
     *
     * @return string|null
     */
    public function getSettleAmount()
    {
        return $this->container['settleAmount'];
    }

    /**
     * Sets settleAmount
     *
     * @param string|null $settleAmount 结算币种订单金额
     *
     * @return self
     */
    public function setSettleAmount($settleAmount)
    {
        $this->container['settleAmount'] = $settleAmount;

        return $this;
    }

    /**
     * Gets settleCurrency
     *
     * @return string|null
     */
    public function getSettleCurrency()
    {
        return $this->container['settleCurrency'];
    }

    /**
     * Sets settleCurrency
     *
     * @param string|null $settleCurrency 订单结算币种，对应支付接口传入的settle_currency，支持英镑：GBP、港币：HKD、美元：USD、新加坡元：SGD、日元：JPY、加拿大元：CAD、澳元：AUD、欧元：EUR、新西兰元：NZD、韩元：KRW、泰铢：THB、瑞士法郎：CHF、瑞典克朗：SEK、丹麦克朗：DKK、挪威克朗：NOK、马来西亚林吉特：MYR、印尼卢比：IDR、菲律宾比索：PHP、毛里求斯卢比：MUR、以色列新谢克尔：ILS、斯里兰卡卢比：LKR、俄罗斯卢布：RUB、阿联酋迪拉姆：AED、捷克克朗：CZK、南非兰特：ZAR
     *
     * @return self
     */
    public function setSettleCurrency($settleCurrency)
    {
        $this->container['settleCurrency'] = $settleCurrency;

        return $this;
    }

    /**
     * Gets settleTransRate
     *
     * @return string|null
     */
    public function getSettleTransRate()
    {
        return $this->container['settleTransRate'];
    }

    /**
     * Sets settleTransRate
     *
     * @param string|null $settleTransRate 结算币种兑换标价币种汇率
     *
     * @return self
     */
    public function setSettleTransRate($settleTransRate)
    {
        $this->container['settleTransRate'] = $settleTransRate;

        return $this;
    }

    /**
     * Gets settlementId
     *
     * @return string|null
     */
    public function getSettlementId()
    {
        return $this->container['settlementId'];
    }

    /**
     * Sets settlementId
     *
     * @param string|null $settlementId 支付清算编号，用于清算对账使用；  只在银行间联交易场景下返回该信息；
     *
     * @return self
     */
    public function setSettlementId($settlementId)
    {
        $this->container['settlementId'] = $settlementId;

        return $this;
    }

    /**
     * Gets storeId
     *
     * @return string|null
     */
    public function getStoreId()
    {
        return $this->container['storeId'];
    }

    /**
     * Sets storeId
     *
     * @param string|null $storeId 商户门店编号
     *
     * @return self
     */
    public function setStoreId($storeId)
    {
        $this->container['storeId'] = $storeId;

        return $this;
    }

    /**
     * Gets storeName
     *
     * @return string|null
     */
    public function getStoreName()
    {
        return $this->container['storeName'];
    }

    /**
     * Sets storeName
     *
     * @param string|null $storeName 请求交易支付中的商户店铺的名称
     *
     * @return self
     */
    public function setStoreName($storeName)
    {
        $this->container['storeName'] = $storeName;

        return $this;
    }

    /**
     * Gets subject
     *
     * @return string|null
     */
    public function getSubject()
    {
        return $this->container['subject'];
    }

    /**
     * Sets subject
     *
     * @param string|null $subject 订单标题；  只在银行间联交易场景下返回该信息；
     *
     * @return self
     */
    public function setSubject($subject)
    {
        $this->container['subject'] = $subject;

        return $this;
    }

    /**
     * Gets terminalId
     *
     * @return string|null
     */
    public function getTerminalId()
    {
        return $this->container['terminalId'];
    }

    /**
     * Sets terminalId
     *
     * @param string|null $terminalId 商户机具终端编号
     *
     * @return self
     */
    public function setTerminalId($terminalId)
    {
        $this->container['terminalId'] = $terminalId;

        return $this;
    }

    /**
     * Gets totalAmount
     *
     * @return string|null
     */
    public function getTotalAmount()
    {
        return $this->container['totalAmount'];
    }

    /**
     * Sets totalAmount
     *
     * @param string|null $totalAmount 交易的订单金额，单位为元，两位小数。该参数的值为支付时传入的total_amount
     *
     * @return self
     */
    public function setTotalAmount($totalAmount)
    {
        $this->container['totalAmount'] = $totalAmount;

        return $this;
    }

    /**
     * Gets tradeNo
     *
     * @return string|null
     */
    public function getTradeNo()
    {
        return $this->container['tradeNo'];
    }

    /**
     * Sets tradeNo
     *
     * @param string|null $tradeNo 支付宝交易号
     *
     * @return self
     */
    public function setTradeNo($tradeNo)
    {
        $this->container['tradeNo'] = $tradeNo;

        return $this;
    }

    /**
     * Gets tradeSettleInfo
     *
     * @return \Alipay\OpenAPISDK\Model\TradeSettleInfo|null
     */
    public function getTradeSettleInfo()
    {
        return $this->container['tradeSettleInfo'];
    }

    /**
     * Sets tradeSettleInfo
     *
     * @param \Alipay\OpenAPISDK\Model\TradeSettleInfo|null $tradeSettleInfo tradeSettleInfo
     *
     * @return self
     */
    public function setTradeSettleInfo($tradeSettleInfo)
    {
        $this->container['tradeSettleInfo'] = $tradeSettleInfo;

        return $this;
    }

    /**
     * Gets tradeStatus
     *
     * @return string|null
     */
    public function getTradeStatus()
    {
        return $this->container['tradeStatus'];
    }

    /**
     * Sets tradeStatus
     *
     * @param string|null $tradeStatus 交易状态：WAIT_BUYER_PAY（交易创建，等待买家付款）、TRADE_CLOSED（未付款交易超时关闭，或支付完成后全额退款）、TRADE_SUCCESS（交易支付成功）、TRADE_FINISHED（交易结束，不可退款）
     *
     * @return self
     */
    public function setTradeStatus($tradeStatus)
    {
        $this->container['tradeStatus'] = $tradeStatus;

        return $this;
    }

    /**
     * Gets transCurrency
     *
     * @return string|null
     */
    public function getTransCurrency()
    {
        return $this->container['transCurrency'];
    }

    /**
     * Sets transCurrency
     *
     * @param string|null $transCurrency 标价币种，该参数的值为支付时传入的trans_currency，支持英镑：GBP、港币：HKD、美元：USD、新加坡元：SGD、日元：JPY、加拿大元：CAD、澳元：AUD、欧元：EUR、新西兰元：NZD、韩元：KRW、泰铢：THB、瑞士法郎：CHF、瑞典克朗：SEK、丹麦克朗：DKK、挪威克朗：NOK、马来西亚林吉特：MYR、印尼卢比：IDR、菲律宾比索：PHP、毛里求斯卢比：MUR、以色列新谢克尔：ILS、斯里兰卡卢比：LKR、俄罗斯卢布：RUB、阿联酋迪拉姆：AED、捷克克朗：CZK、南非兰特：ZAR、人民币：CNY、新台币：TWD。当trans_currency 和 settle_currency 不一致时，trans_currency支持人民币：CNY、新台币：TWD
     *
     * @return self
     */
    public function setTransCurrency($transCurrency)
    {
        $this->container['transCurrency'] = $transCurrency;

        return $this;
    }

    /**
     * Gets transPayRate
     *
     * @return string|null
     */
    public function getTransPayRate()
    {
        return $this->container['transPayRate'];
    }

    /**
     * Sets transPayRate
     *
     * @param string|null $transPayRate 标价币种兑换支付币种汇率
     *
     * @return self
     */
    public function setTransPayRate($transPayRate)
    {
        $this->container['transPayRate'] = $transPayRate;

        return $this;
    }

    /**
     * Gets voucherDetailList
     *
     * @return \Alipay\OpenAPISDK\Model\VoucherDetail[]|null
     */
    public function getVoucherDetailList()
    {
        return $this->container['voucherDetailList'];
    }

    /**
     * Sets voucherDetailList
     *
     * @param \Alipay\OpenAPISDK\Model\VoucherDetail[]|null $voucherDetailList 本交易支付时使用的所有优惠券信息。 只有在query_options中指定时才返回该字段信息。
     *
     * @return self
     */
    public function setVoucherDetailList($voucherDetailList)
    {
        $this->container['voucherDetailList'] = $voucherDetailList;

        return $this;
    }
    /**
     * Returns true if offset exists. False otherwise.
     *
     * @param integer $offset Offset
     *
     * @return boolean
     */
    public function offsetExists($offset): bool
    {
        return isset($this->container[$offset]);
    }

    /**
     * Gets offset.
     *
     * @param integer $offset Offset
     *
     * @return mixed|null
     */
    #[\ReturnTypeWillChange]
    public function offsetGet($offset)
    {
        return $this->container[$offset] ?? null;
    }

    /**
     * Sets value based on offset.
     *
     * @param int|null $offset Offset
     * @param mixed    $value  Value to be set
     *
     * @return void
     */
    public function offsetSet($offset, $value): void
    {
        if (is_null($offset)) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }

    /**
     * Unsets offset.
     *
     * @param integer $offset Offset
     *
     * @return void
     */
    public function offsetUnset($offset): void
    {
        unset($this->container[$offset]);
    }

    /**
     * Serializes the object to a value that can be serialized natively by json_encode().
     * @link https://www.php.net/manual/en/jsonserializable.jsonserialize.php
     *
     * @return mixed Returns data which can be serialized by json_encode(), which is a value
     * of any type other than a resource.
     */
    #[\ReturnTypeWillChange]
    public function jsonSerialize()
    {
       return ObjectSerializer::sanitizeForSerialization($this);
    }

    /**
     * Gets the string presentation of the object
     *
     * @return string
     */
    public function __toString()
    {
        return json_encode(
            ObjectSerializer::sanitizeForSerialization($this),
            JSON_PRETTY_PRINT
        );
    }

    /**
     * Gets a header-safe presentation of the object
     *
     * @return string
     */
    public function toHeaderValue()
    {
        return json_encode(ObjectSerializer::sanitizeForSerialization($this));
    }
}


