<?php
/**
 * BindcardQueryorderOpenQueryOrderResponseDTOResult
 * PHP version 5
 * @author   Swagger Codegen team
 * @package  Yeepay\Yop\Sdk\
 * @category Class
 * @link     https://github.com/swagger-api/swagger-codegen
 */

/**
 * 前置收银台
 * <p>前置收银台</p>
 * OpenAPI spec version: 1.0.0
 * Generated by: https://github.com/swagger-api/swagger-codegen.git
 * Swagger Codegen version: 3.0.13
 */

/**
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen
 * Do not edit the class manually.
 */

namespace Yeepay\Yop\Sdk\Service\Frontcashier\Model;

use ArrayAccess;
use Yeepay\Yop\Sdk\Model\ModelInterface;
use Yeepay\Yop\Sdk\Utils\ObjectSerializer;

/**
 * BindcardQueryorderOpenQueryOrderResponseDTOResult Class Doc Comment
 * @author   Swagger Codegen team
 * @package  Yeepay\Yop\Sdk\
 * @category Class
 * @link     https://github.com/swagger-api/swagger-codegen
 */
class BindcardQueryorderOpenQueryOrderResponseDTOResult implements ModelInterface, ArrayAccess
{

    const DISCRIMINATOR = null;

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

    /**
     * Array of property to type mappings. Used for (de)serialization
     * @var string[]
     */
    protected static $swaggerTypes = [
        'code'                 => 'string',
        'message'              => 'string',
        'merchantNo'           => 'string',
        'merchantFlowId'       => 'string',
        'nopOrderId'           => 'string',
        'orderStatus'          => 'string',
        'signStatus'           => 'string',
        'userNo'               => 'string',
        'userType'             => 'string',
        'entrustProtocolId'    => 'string',
        'collectAmount'        => 'float',
        'collectBeginDate'     => 'string',
        'collectEndDate'       => 'string',
        'cycleFrequency'       => 'int',
        'cycleStep'            => 'int',
        'cycleStepUnit'        => 'string',
        'submitMethod'         => 'string',
        'submitUrl'            => 'string',
        'encoding'             => 'string',
        'bankCardNo'           => 'string',
        'userName'             => 'string',
        'idCardNo'             => 'string',
        'idCardType'           => 'string',
        'phone'                => 'string',
        'bankCode'             => 'string',
        'signSuccessNotifyUrl' => 'string',
        'bindId'               => 'string',
    ];

    /**
     * Array of property to format mappings. Used for (de)serialization
     * @var string[]
     */
    protected static $swaggerFormats = [
        'code'                 => null,
        'message'              => null,
        'merchantNo'           => null,
        'merchantFlowId'       => null,
        'nopOrderId'           => null,
        'orderStatus'          => null,
        'signStatus'           => null,
        'userNo'               => null,
        'userType'             => null,
        'entrustProtocolId'    => null,
        'collectAmount'        => null,
        'collectBeginDate'     => 'date-time',
        'collectEndDate'       => 'date-time',
        'cycleFrequency'       => 'int32',
        'cycleStep'            => 'int32',
        'cycleStepUnit'        => null,
        'submitMethod'         => null,
        'submitUrl'            => null,
        'encoding'             => null,
        'bankCardNo'           => null,
        'userName'             => null,
        'idCardNo'             => null,
        'idCardType'           => null,
        'phone'                => null,
        'bankCode'             => null,
        'signSuccessNotifyUrl' => null,
        'bindId'               => null,
    ];

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

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

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name
     * @var string[]
     */
    protected static $attributeMap = [
        'code'                 => 'code',
        'message'              => 'message',
        'merchantNo'           => 'merchantNo',
        'merchantFlowId'       => 'merchantFlowId',
        'nopOrderId'           => 'nopOrderId',
        'orderStatus'          => 'orderStatus',
        'signStatus'           => 'signStatus',
        'userNo'               => 'userNo',
        'userType'             => 'userType',
        'entrustProtocolId'    => 'entrustProtocolId',
        'collectAmount'        => 'collectAmount',
        'collectBeginDate'     => 'collectBeginDate',
        'collectEndDate'       => 'collectEndDate',
        'cycleFrequency'       => 'cycleFrequency',
        'cycleStep'            => 'cycleStep',
        'cycleStepUnit'        => 'cycleStepUnit',
        'submitMethod'         => 'submitMethod',
        'submitUrl'            => 'submitUrl',
        'encoding'             => 'encoding',
        'bankCardNo'           => 'bankCardNo',
        'userName'             => 'userName',
        'idCardNo'             => 'idCardNo',
        'idCardType'           => 'idCardType',
        'phone'                => 'phone',
        'bankCode'             => 'bankCode',
        'signSuccessNotifyUrl' => 'signSuccessNotifyUrl',
        'bindId'               => 'bindId',
    ];

    /**
     * Array of attributes to setter functions (for deserialization of responses)
     * @var string[]
     */
    protected static $setters = [
        'code'                 => 'setCode',
        'message'              => 'setMessage',
        'merchantNo'           => 'setMerchantNo',
        'merchantFlowId'       => 'setMerchantFlowId',
        'nopOrderId'           => 'setNopOrderId',
        'orderStatus'          => 'setOrderStatus',
        'signStatus'           => 'setSignStatus',
        'userNo'               => 'setUserNo',
        'userType'             => 'setUserType',
        'entrustProtocolId'    => 'setEntrustProtocolId',
        'collectAmount'        => 'setCollectAmount',
        'collectBeginDate'     => 'setCollectBeginDate',
        'collectEndDate'       => 'setCollectEndDate',
        'cycleFrequency'       => 'setCycleFrequency',
        'cycleStep'            => 'setCycleStep',
        'cycleStepUnit'        => 'setCycleStepUnit',
        'submitMethod'         => 'setSubmitMethod',
        'submitUrl'            => 'setSubmitUrl',
        'encoding'             => 'setEncoding',
        'bankCardNo'           => 'setBankCardNo',
        'userName'             => 'setUserName',
        'idCardNo'             => 'setIdCardNo',
        'idCardType'           => 'setIdCardType',
        'phone'                => 'setPhone',
        'bankCode'             => 'setBankCode',
        'signSuccessNotifyUrl' => 'setSignSuccessNotifyUrl',
        'bindId'               => 'setBindId',
    ];

    /**
     * Array of attributes to getter functions (for serialization of requests)
     * @var string[]
     */
    protected static $getters = [
        'code'                 => 'getCode',
        'message'              => 'getMessage',
        'merchantNo'           => 'getMerchantNo',
        'merchantFlowId'       => 'getMerchantFlowId',
        'nopOrderId'           => 'getNopOrderId',
        'orderStatus'          => 'getOrderStatus',
        'signStatus'           => 'getSignStatus',
        'userNo'               => 'getUserNo',
        'userType'             => 'getUserType',
        'entrustProtocolId'    => 'getEntrustProtocolId',
        'collectAmount'        => 'getCollectAmount',
        'collectBeginDate'     => 'getCollectBeginDate',
        'collectEndDate'       => 'getCollectEndDate',
        'cycleFrequency'       => 'getCycleFrequency',
        'cycleStep'            => 'getCycleStep',
        'cycleStepUnit'        => 'getCycleStepUnit',
        'submitMethod'         => 'getSubmitMethod',
        'submitUrl'            => 'getSubmitUrl',
        'encoding'             => 'getEncoding',
        'bankCardNo'           => 'getBankCardNo',
        'userName'             => 'getUserName',
        'idCardNo'             => 'getIdCardNo',
        'idCardType'           => 'getIdCardType',
        'phone'                => 'getPhone',
        'bankCode'             => 'getBankCode',
        'signSuccessNotifyUrl' => 'getSignSuccessNotifyUrl',
        'bindId'               => 'getBindId',
    ];

    /**
     * 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::$swaggerModelName;
    }

    /**
     * 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['code']                 = isset($data['code']) ? $data['code'] : null;
        $this->container['message']              = isset($data['message']) ? $data['message'] : null;
        $this->container['merchantNo']           = isset($data['merchantNo']) ? $data['merchantNo'] : null;
        $this->container['merchantFlowId']       = isset($data['merchantFlowId']) ? $data['merchantFlowId'] : null;
        $this->container['nopOrderId']           = isset($data['nopOrderId']) ? $data['nopOrderId'] : null;
        $this->container['orderStatus']          = isset($data['orderStatus']) ? $data['orderStatus'] : null;
        $this->container['signStatus']           = isset($data['signStatus']) ? $data['signStatus'] : null;
        $this->container['userNo']               = isset($data['userNo']) ? $data['userNo'] : null;
        $this->container['userType']             = isset($data['userType']) ? $data['userType'] : null;
        $this->container['entrustProtocolId']    = isset($data['entrustProtocolId']) ? $data['entrustProtocolId'] : null;
        $this->container['collectAmount']        = isset($data['collectAmount']) ? $data['collectAmount'] : null;
        $this->container['collectBeginDate']     = isset($data['collectBeginDate']) ? $data['collectBeginDate'] : null;
        $this->container['collectEndDate']       = isset($data['collectEndDate']) ? $data['collectEndDate'] : null;
        $this->container['cycleFrequency']       = isset($data['cycleFrequency']) ? $data['cycleFrequency'] : null;
        $this->container['cycleStep']            = isset($data['cycleStep']) ? $data['cycleStep'] : null;
        $this->container['cycleStepUnit']        = isset($data['cycleStepUnit']) ? $data['cycleStepUnit'] : null;
        $this->container['submitMethod']         = isset($data['submitMethod']) ? $data['submitMethod'] : null;
        $this->container['submitUrl']            = isset($data['submitUrl']) ? $data['submitUrl'] : null;
        $this->container['encoding']             = isset($data['encoding']) ? $data['encoding'] : null;
        $this->container['bankCardNo']           = isset($data['bankCardNo']) ? $data['bankCardNo'] : null;
        $this->container['userName']             = isset($data['userName']) ? $data['userName'] : null;
        $this->container['idCardNo']             = isset($data['idCardNo']) ? $data['idCardNo'] : null;
        $this->container['idCardType']           = isset($data['idCardType']) ? $data['idCardType'] : null;
        $this->container['phone']                = isset($data['phone']) ? $data['phone'] : null;
        $this->container['bankCode']             = isset($data['bankCode']) ? $data['bankCode'] : null;
        $this->container['signSuccessNotifyUrl'] = isset($data['signSuccessNotifyUrl']) ? $data['signSuccessNotifyUrl'] : null;
        $this->container['bindId']               = isset($data['bindId']) ? $data['bindId'] : 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 code
     * @return string
     */
    public function getCode()
    {
        return $this->container['code'];
    }

    /**
     * Sets code
     * @param  string  $code  返回码
     * @return $this
     */
    public function setCode($code)
    {
        $this->container['code'] = $code;

        return $this;
    }

    /**
     * Gets message
     * @return string
     */
    public function getMessage()
    {
        return $this->container['message'];
    }

    /**
     * Sets message
     * @param  string  $message  返回描述
     * @return $this
     */
    public function setMessage($message)
    {
        $this->container['message'] = $message;

        return $this;
    }

    /**
     * Gets merchantNo
     * @return string
     */
    public function getMerchantNo()
    {
        return $this->container['merchantNo'];
    }

    /**
     * Sets merchantNo
     * @param  string  $merchantNo  收单商户编号
     * @return $this
     */
    public function setMerchantNo($merchantNo)
    {
        $this->container['merchantNo'] = $merchantNo;

        return $this;
    }

    /**
     * Gets merchantFlowId
     * @return string
     */
    public function getMerchantFlowId()
    {
        return $this->container['merchantFlowId'];
    }

    /**
     * Sets merchantFlowId
     * @param  string  $merchantFlowId  商户签约/绑卡请求号
     * @return $this
     */
    public function setMerchantFlowId($merchantFlowId)
    {
        $this->container['merchantFlowId'] = $merchantFlowId;

        return $this;
    }

    /**
     * Gets nopOrderId
     * @return string
     */
    public function getNopOrderId()
    {
        return $this->container['nopOrderId'];
    }

    /**
     * Sets nopOrderId
     * @param  string  $nopOrderId  易宝订单号
     * @return $this
     */
    public function setNopOrderId($nopOrderId)
    {
        $this->container['nopOrderId'] = $nopOrderId;

        return $this;
    }

    /**
     * Gets orderStatus
     * @return string
     */
    public function getOrderStatus()
    {
        return $this->container['orderStatus'];
    }

    /**
     * Sets orderStatus
     * @param  string  $orderStatus  订单状态
     * @return $this
     */
    public function setOrderStatus($orderStatus)
    {
        $this->container['orderStatus'] = $orderStatus;

        return $this;
    }

    /**
     * Gets signStatus
     * @return string
     */
    public function getSignStatus()
    {
        return $this->container['signStatus'];
    }

    /**
     * Sets signStatus
     * @param  string  $signStatus  银行签约状态
     * @return $this
     */
    public function setSignStatus($signStatus)
    {
        $this->container['signStatus'] = $signStatus;

        return $this;
    }

    /**
     * Gets userNo
     * @return string
     */
    public function getUserNo()
    {
        return $this->container['userNo'];
    }

    /**
     * Sets userNo
     * @param  string  $userNo  用户标识
     * @return $this
     */
    public function setUserNo($userNo)
    {
        $this->container['userNo'] = $userNo;

        return $this;
    }

    /**
     * Gets userType
     * @return string
     */
    public function getUserType()
    {
        return $this->container['userType'];
    }

    /**
     * Sets userType
     * @param  string  $userType  用户标识类型
     * @return $this
     */
    public function setUserType($userType)
    {
        $this->container['userType'] = $userType;

        return $this;
    }

    /**
     * Gets entrustProtocolId
     * @return string
     */
    public function getEntrustProtocolId()
    {
        return $this->container['entrustProtocolId'];
    }

    /**
     * Sets entrustProtocolId
     * @param  string  $entrustProtocolId  商业委托协议ID，仅商业委托返回
     * @return $this
     */
    public function setEntrustProtocolId($entrustProtocolId)
    {
        $this->container['entrustProtocolId'] = $entrustProtocolId;

        return $this;
    }

    /**
     * Gets collectAmount
     * @return float
     */
    public function getCollectAmount()
    {
        return $this->container['collectAmount'];
    }

    /**
     * Sets collectAmount
     * @param  float  $collectAmount  代收金额，仅商业委托返回
     * @return $this
     */
    public function setCollectAmount($collectAmount)
    {
        $this->container['collectAmount'] = $collectAmount;

        return $this;
    }

    /**
     * Gets collectBeginDate
     * @return string
     */
    public function getCollectBeginDate()
    {
        return $this->container['collectBeginDate'];
    }

    /**
     * Sets collectBeginDate
     * @param  string  $collectBeginDate  代收开始时间，仅商业委托返回
     * @return $this
     */
    public function setCollectBeginDate($collectBeginDate)
    {
        $this->container['collectBeginDate'] = $collectBeginDate;

        return $this;
    }

    /**
     * Gets collectEndDate
     * @return string
     */
    public function getCollectEndDate()
    {
        return $this->container['collectEndDate'];
    }

    /**
     * Sets collectEndDate
     * @param  string  $collectEndDate  代收结束时间，仅商业委托返回
     * @return $this
     */
    public function setCollectEndDate($collectEndDate)
    {
        $this->container['collectEndDate'] = $collectEndDate;

        return $this;
    }

    /**
     * Gets cycleFrequency
     * @return int
     */
    public function getCycleFrequency()
    {
        return $this->container['cycleFrequency'];
    }

    /**
     * Sets cycleFrequency
     * @param  int  $cycleFrequency  代收频次，仅商业委托返回
     * @return $this
     */
    public function setCycleFrequency($cycleFrequency)
    {
        $this->container['cycleFrequency'] = $cycleFrequency;

        return $this;
    }

    /**
     * Gets cycleStep
     * @return int
     */
    public function getCycleStep()
    {
        return $this->container['cycleStep'];
    }

    /**
     * Sets cycleStep
     * @param  int  $cycleStep  代收步长，仅商业委托返回
     * @return $this
     */
    public function setCycleStep($cycleStep)
    {
        $this->container['cycleStep'] = $cycleStep;

        return $this;
    }

    /**
     * Gets cycleStepUnit
     * @return string
     */
    public function getCycleStepUnit()
    {
        return $this->container['cycleStepUnit'];
    }

    /**
     * Sets cycleStepUnit
     * @param  string  $cycleStepUnit  代收周期单位，仅商业委托返回
     * @return $this
     */
    public function setCycleStepUnit($cycleStepUnit)
    {
        $this->container['cycleStepUnit'] = $cycleStepUnit;

        return $this;
    }

    /**
     * Gets submitMethod
     * @return string
     */
    public function getSubmitMethod()
    {
        return $this->container['submitMethod'];
    }

    /**
     * Sets submitMethod
     * @param  string  $submitMethod  跳页签约提交方式，仅跳页签约返回
     * @return $this
     */
    public function setSubmitMethod($submitMethod)
    {
        $this->container['submitMethod'] = $submitMethod;

        return $this;
    }

    /**
     * Gets submitUrl
     * @return string
     */
    public function getSubmitUrl()
    {
        return $this->container['submitUrl'];
    }

    /**
     * Sets submitUrl
     * @param  string  $submitUrl  跳页签约url，仅跳页签约返回
     * @return $this
     */
    public function setSubmitUrl($submitUrl)
    {
        $this->container['submitUrl'] = $submitUrl;

        return $this;
    }

    /**
     * Gets encoding
     * @return string
     */
    public function getEncoding()
    {
        return $this->container['encoding'];
    }

    /**
     * Sets encoding
     * @param  string  $encoding  跳页页面编码，仅跳页签约返回
     * @return $this
     */
    public function setEncoding($encoding)
    {
        $this->container['encoding'] = $encoding;

        return $this;
    }

    /**
     * Gets bankCardNo
     * @return string
     */
    public function getBankCardNo()
    {
        return $this->container['bankCardNo'];
    }

    /**
     * Sets bankCardNo
     * @param  string  $bankCardNo  银行卡号
     * @return $this
     */
    public function setBankCardNo($bankCardNo)
    {
        $this->container['bankCardNo'] = $bankCardNo;

        return $this;
    }

    /**
     * Gets userName
     * @return string
     */
    public function getUserName()
    {
        return $this->container['userName'];
    }

    /**
     * Sets userName
     * @param  string  $userName  姓名
     * @return $this
     */
    public function setUserName($userName)
    {
        $this->container['userName'] = $userName;

        return $this;
    }

    /**
     * Gets idCardNo
     * @return string
     */
    public function getIdCardNo()
    {
        return $this->container['idCardNo'];
    }

    /**
     * Sets idCardNo
     * @param  string  $idCardNo  证件号
     * @return $this
     */
    public function setIdCardNo($idCardNo)
    {
        $this->container['idCardNo'] = $idCardNo;

        return $this;
    }

    /**
     * Gets idCardType
     * @return string
     */
    public function getIdCardType()
    {
        return $this->container['idCardType'];
    }

    /**
     * Sets idCardType
     * @param  string  $idCardType  证件类型
     * @return $this
     */
    public function setIdCardType($idCardType)
    {
        $this->container['idCardType'] = $idCardType;

        return $this;
    }

    /**
     * Gets phone
     * @return string
     */
    public function getPhone()
    {
        return $this->container['phone'];
    }

    /**
     * Sets phone
     * @param  string  $phone  银行预留手机号
     * @return $this
     */
    public function setPhone($phone)
    {
        $this->container['phone'] = $phone;

        return $this;
    }

    /**
     * Gets bankCode
     * @return string
     */
    public function getBankCode()
    {
        return $this->container['bankCode'];
    }

    /**
     * Sets bankCode
     * @param  string  $bankCode  银行编码
     * @return $this
     */
    public function setBankCode($bankCode)
    {
        $this->container['bankCode'] = $bankCode;

        return $this;
    }

    /**
     * Gets signSuccessNotifyUrl
     * @return string
     */
    public function getSignSuccessNotifyUrl()
    {
        return $this->container['signSuccessNotifyUrl'];
    }

    /**
     * Sets signSuccessNotifyUrl
     * @param  string  $signSuccessNotifyUrl  跳页签约回调地址，仅跳页签约返回
     * @return $this
     */
    public function setSignSuccessNotifyUrl($signSuccessNotifyUrl)
    {
        $this->container['signSuccessNotifyUrl'] = $signSuccessNotifyUrl;

        return $this;
    }

    /**
     * Gets bindId
     * @return string
     */
    public function getBindId()
    {
        return $this->container['bindId'];
    }

    /**
     * Sets bindId
     * @param  string  $bindId  签约/绑卡ID
     * @return $this
     */
    public function setBindId($bindId)
    {
        $this->container['bindId'] = $bindId;

        return $this;
    }

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

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

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

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

    /**
     * Gets the string presentation of the object
     * @return string
     */
    public function __toString()
    {
        if (defined('JSON_PRETTY_PRINT')) { // use JSON pretty print
            return json_encode(
                ObjectSerializer::sanitizeForSerialization($this),
                JSON_PRETTY_PRINT
            );
        }

        return json_encode(ObjectSerializer::sanitizeForSerialization($this));
    }

}


