// Copyright 2021 Tencent Inc. All rights reserved. // // JSAPI支付 // // JSAPI支付API // // API version: 1.2.3 // Code generated by WechatPay APIv3 Generator based on [OpenAPI Generator](https://openapi-generator.tech); DO NOT EDIT. package jsapi import ( "encoding/json" "fmt" "time" ) // Amount type Amount struct { // 订单总金额,单位为分 Total *int64 `json:"total"` // CNY:人民币,境内商户号仅支持人民币。 Currency *string `json:"currency,omitempty"` } func (o Amount) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.Total == nil { return nil, fmt.Errorf("field `Total` is required and must be specified in Amount") } toSerialize["total"] = o.Total if o.Currency != nil { toSerialize["currency"] = o.Currency } return json.Marshal(toSerialize) } func (o Amount) String() string { var ret string if o.Total == nil { ret += "Total:, " } else { ret += fmt.Sprintf("Total:%v, ", *o.Total) } if o.Currency == nil { ret += "Currency:" } else { ret += fmt.Sprintf("Currency:%v", *o.Currency) } return fmt.Sprintf("Amount{%s}", ret) } func (o Amount) Clone() *Amount { ret := Amount{} if o.Total != nil { ret.Total = new(int64) *ret.Total = *o.Total } if o.Currency != nil { ret.Currency = new(string) *ret.Currency = *o.Currency } return &ret } // CloseOrderRequest type CloseOrderRequest struct { OutTradeNo *string `json:"out_trade_no"` // 直连商户号 Mchid *string `json:"mchid"` } func (o CloseOrderRequest) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.OutTradeNo == nil { return nil, fmt.Errorf("field `OutTradeNo` is required and must be specified in CloseOrderRequest") } toSerialize["out_trade_no"] = o.OutTradeNo if o.Mchid == nil { return nil, fmt.Errorf("field `Mchid` is required and must be specified in CloseOrderRequest") } toSerialize["mchid"] = o.Mchid return json.Marshal(toSerialize) } func (o CloseOrderRequest) String() string { var ret string if o.OutTradeNo == nil { ret += "OutTradeNo:, " } else { ret += fmt.Sprintf("OutTradeNo:%v, ", *o.OutTradeNo) } if o.Mchid == nil { ret += "Mchid:" } else { ret += fmt.Sprintf("Mchid:%v", *o.Mchid) } return fmt.Sprintf("CloseOrderRequest{%s}", ret) } func (o CloseOrderRequest) Clone() *CloseOrderRequest { ret := CloseOrderRequest{} if o.OutTradeNo != nil { ret.OutTradeNo = new(string) *ret.OutTradeNo = *o.OutTradeNo } if o.Mchid != nil { ret.Mchid = new(string) *ret.Mchid = *o.Mchid } return &ret } // CloseRequest type CloseRequest struct { // 直连商户号 Mchid *string `json:"mchid"` } func (o CloseRequest) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.Mchid == nil { return nil, fmt.Errorf("field `Mchid` is required and must be specified in CloseRequest") } toSerialize["mchid"] = o.Mchid return json.Marshal(toSerialize) } func (o CloseRequest) String() string { var ret string if o.Mchid == nil { ret += "Mchid:" } else { ret += fmt.Sprintf("Mchid:%v", *o.Mchid) } return fmt.Sprintf("CloseRequest{%s}", ret) } func (o CloseRequest) Clone() *CloseRequest { ret := CloseRequest{} if o.Mchid != nil { ret.Mchid = new(string) *ret.Mchid = *o.Mchid } return &ret } // Detail 优惠功能 type Detail struct { // 1.商户侧一张小票订单可能被分多次支付,订单原价用于记录整张小票的交易金额。 2.当订单原价与支付金额不相等,则不享受优惠。 3.该字段主要用于防止同一张小票分多次支付,以享受多次优惠的情况,正常支付订单不必上传此参数。 CostPrice *int64 `json:"cost_price,omitempty"` // 商家小票ID。 ReceiptId *string `json:"receipt_id,omitempty"` GoodsDetail []GoodsDetail `json:"goods_detail,omitempty"` } func (o Detail) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.CostPrice != nil { toSerialize["cost_price"] = o.CostPrice } if o.ReceiptId != nil { toSerialize["receipt_id"] = o.ReceiptId } if o.GoodsDetail != nil { toSerialize["goods_detail"] = o.GoodsDetail } return json.Marshal(toSerialize) } func (o Detail) String() string { var ret string if o.CostPrice == nil { ret += "CostPrice:, " } else { ret += fmt.Sprintf("CostPrice:%v, ", *o.CostPrice) } if o.ReceiptId == nil { ret += "ReceiptId:, " } else { ret += fmt.Sprintf("ReceiptId:%v, ", *o.ReceiptId) } ret += fmt.Sprintf("GoodsDetail:%v", o.GoodsDetail) return fmt.Sprintf("Detail{%s}", ret) } func (o Detail) Clone() *Detail { ret := Detail{} if o.CostPrice != nil { ret.CostPrice = new(int64) *ret.CostPrice = *o.CostPrice } if o.ReceiptId != nil { ret.ReceiptId = new(string) *ret.ReceiptId = *o.ReceiptId } if o.GoodsDetail != nil { ret.GoodsDetail = make([]GoodsDetail, len(o.GoodsDetail)) for i, item := range o.GoodsDetail { ret.GoodsDetail[i] = *item.Clone() } } return &ret } // GoodsDetail type GoodsDetail struct { // 由半角的大小写字母、数字、中划线、下划线中的一种或几种组成。 MerchantGoodsId *string `json:"merchant_goods_id"` // 微信支付定义的统一商品编号(没有可不传)。 WechatpayGoodsId *string `json:"wechatpay_goods_id,omitempty"` // 商品的实际名称。 GoodsName *string `json:"goods_name,omitempty"` // 用户购买的数量。 Quantity *int64 `json:"quantity"` // 商品单价,单位为分。 UnitPrice *int64 `json:"unit_price"` } func (o GoodsDetail) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.MerchantGoodsId == nil { return nil, fmt.Errorf("field `MerchantGoodsId` is required and must be specified in GoodsDetail") } toSerialize["merchant_goods_id"] = o.MerchantGoodsId if o.WechatpayGoodsId != nil { toSerialize["wechatpay_goods_id"] = o.WechatpayGoodsId } if o.GoodsName != nil { toSerialize["goods_name"] = o.GoodsName } if o.Quantity == nil { return nil, fmt.Errorf("field `Quantity` is required and must be specified in GoodsDetail") } toSerialize["quantity"] = o.Quantity if o.UnitPrice == nil { return nil, fmt.Errorf("field `UnitPrice` is required and must be specified in GoodsDetail") } toSerialize["unit_price"] = o.UnitPrice return json.Marshal(toSerialize) } func (o GoodsDetail) String() string { var ret string if o.MerchantGoodsId == nil { ret += "MerchantGoodsId:, " } else { ret += fmt.Sprintf("MerchantGoodsId:%v, ", *o.MerchantGoodsId) } if o.WechatpayGoodsId == nil { ret += "WechatpayGoodsId:, " } else { ret += fmt.Sprintf("WechatpayGoodsId:%v, ", *o.WechatpayGoodsId) } if o.GoodsName == nil { ret += "GoodsName:, " } else { ret += fmt.Sprintf("GoodsName:%v, ", *o.GoodsName) } if o.Quantity == nil { ret += "Quantity:, " } else { ret += fmt.Sprintf("Quantity:%v, ", *o.Quantity) } if o.UnitPrice == nil { ret += "UnitPrice:" } else { ret += fmt.Sprintf("UnitPrice:%v", *o.UnitPrice) } return fmt.Sprintf("GoodsDetail{%s}", ret) } func (o GoodsDetail) Clone() *GoodsDetail { ret := GoodsDetail{} if o.MerchantGoodsId != nil { ret.MerchantGoodsId = new(string) *ret.MerchantGoodsId = *o.MerchantGoodsId } if o.WechatpayGoodsId != nil { ret.WechatpayGoodsId = new(string) *ret.WechatpayGoodsId = *o.WechatpayGoodsId } if o.GoodsName != nil { ret.GoodsName = new(string) *ret.GoodsName = *o.GoodsName } if o.Quantity != nil { ret.Quantity = new(int64) *ret.Quantity = *o.Quantity } if o.UnitPrice != nil { ret.UnitPrice = new(int64) *ret.UnitPrice = *o.UnitPrice } return &ret } // Payer type Payer struct { // 用户在商户appid下的唯一标识。 Openid *string `json:"openid,omitempty"` } func (o Payer) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.Openid != nil { toSerialize["openid"] = o.Openid } return json.Marshal(toSerialize) } func (o Payer) String() string { var ret string if o.Openid == nil { ret += "Openid:" } else { ret += fmt.Sprintf("Openid:%v", *o.Openid) } return fmt.Sprintf("Payer{%s}", ret) } func (o Payer) Clone() *Payer { ret := Payer{} if o.Openid != nil { ret.Openid = new(string) *ret.Openid = *o.Openid } return &ret } // PrepayRequest type PrepayRequest struct { // 公众号ID Appid *string `json:"appid"` // 直连商户号 Mchid *string `json:"mchid"` // 商品描述 Description *string `json:"description"` // 商户订单号 OutTradeNo *string `json:"out_trade_no"` // 订单失效时间,格式为rfc3339格式 TimeExpire *time.Time `json:"time_expire,omitempty"` // 附加数据 Attach *string `json:"attach,omitempty"` // 有效性:1. HTTPS;2. 不允许携带查询串。 NotifyUrl *string `json:"notify_url"` // 商品标记,代金券或立减优惠功能的参数。 GoodsTag *string `json:"goods_tag,omitempty"` // 指定支付方式 LimitPay []string `json:"limit_pay,omitempty"` // 传入true时,支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能,传此字段才可生效。 SupportFapiao *bool `json:"support_fapiao,omitempty"` Amount *Amount `json:"amount"` Payer *Payer `json:"payer"` Detail *Detail `json:"detail,omitempty"` SceneInfo *SceneInfo `json:"scene_info,omitempty"` SettleInfo *SettleInfo `json:"settle_info,omitempty"` //交易类型 TradeType *string `json:"trade_type,omitempty"` //商户行业编码 MerchantCategoryCode *string `json:"merchant_category_code,omitempty"` } func (o PrepayRequest) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.Appid == nil { return nil, fmt.Errorf("field `Appid` is required and must be specified in PrepayRequest") } toSerialize["appid"] = o.Appid if o.TradeType==nil { return nil, fmt.Errorf("field `TradeType` is required and must be specified in PrepayRequest") } toSerialize["trade_type"] = o.TradeType if o.MerchantCategoryCode == nil { return nil, fmt.Errorf("field `MerchantCategoryCode` is required and must be specified in PrepayRequest") } toSerialize["merchant_category_code"] = o.MerchantCategoryCode if o.Mchid == nil { return nil, fmt.Errorf("field `Mchid` is required and must be specified in PrepayRequest") } toSerialize["mchid"] = o.Mchid if o.Description == nil { return nil, fmt.Errorf("field `Description` is required and must be specified in PrepayRequest") } toSerialize["description"] = o.Description if o.OutTradeNo == nil { return nil, fmt.Errorf("field `OutTradeNo` is required and must be specified in PrepayRequest") } toSerialize["out_trade_no"] = o.OutTradeNo if o.TimeExpire != nil { toSerialize["time_expire"] = o.TimeExpire.Format(time.RFC3339) } if o.Attach != nil { toSerialize["attach"] = o.Attach } if o.NotifyUrl == nil { return nil, fmt.Errorf("field `NotifyUrl` is required and must be specified in PrepayRequest") } toSerialize["notify_url"] = o.NotifyUrl if o.GoodsTag != nil { toSerialize["goods_tag"] = o.GoodsTag } if o.LimitPay != nil { toSerialize["limit_pay"] = o.LimitPay } if o.SupportFapiao != nil { toSerialize["support_fapiao"] = o.SupportFapiao } if o.Amount == nil { return nil, fmt.Errorf("field `Amount` is required and must be specified in PrepayRequest") } toSerialize["amount"] = o.Amount if o.Payer == nil { return nil, fmt.Errorf("field `Payer` is required and must be specified in PrepayRequest") } toSerialize["payer"] = o.Payer if o.Detail != nil { toSerialize["detail"] = o.Detail } if o.SceneInfo != nil { toSerialize["scene_info"] = o.SceneInfo } if o.SettleInfo != nil { toSerialize["settle_info"] = o.SettleInfo } return json.Marshal(toSerialize) } func (o PrepayRequest) String() string { var ret string if o.Appid == nil { ret += "Appid:, " } else { ret += fmt.Sprintf("Appid:%v, ", *o.Appid) } if o.Mchid == nil { ret += "Mchid:, " } else { ret += fmt.Sprintf("Mchid:%v, ", *o.Mchid) } if o.Description == nil { ret += "Description:, " } else { ret += fmt.Sprintf("Description:%v, ", *o.Description) } if o.OutTradeNo == nil { ret += "OutTradeNo:, " } else { ret += fmt.Sprintf("OutTradeNo:%v, ", *o.OutTradeNo) } if o.TimeExpire == nil { ret += "TimeExpire:, " } else { ret += fmt.Sprintf("TimeExpire:%v, ", *o.TimeExpire) } if o.Attach == nil { ret += "Attach:, " } else { ret += fmt.Sprintf("Attach:%v, ", *o.Attach) } if o.NotifyUrl == nil { ret += "NotifyUrl:, " } else { ret += fmt.Sprintf("NotifyUrl:%v, ", *o.NotifyUrl) } if o.GoodsTag == nil { ret += "GoodsTag:, " } else { ret += fmt.Sprintf("GoodsTag:%v, ", *o.GoodsTag) } ret += fmt.Sprintf("LimitPay:%v, ", o.LimitPay) if o.TradeType == nil { ret += "TradeType:, " } else { ret += fmt.Sprintf("TradeType:%v, ", *o.TradeType) } if o.MerchantCategoryCode == nil { ret += "MerchantCategoryCode:, " } else { ret += fmt.Sprintf("MerchantCategoryCode:%v, ", *o.MerchantCategoryCode) } if o.SupportFapiao == nil { ret += "SupportFapiao:, " } else { ret += fmt.Sprintf("SupportFapiao:%v, ", *o.SupportFapiao) } ret += fmt.Sprintf("Amount:%v, ", o.Amount) ret += fmt.Sprintf("Payer:%v, ", o.Payer) ret += fmt.Sprintf("Detail:%v, ", o.Detail) ret += fmt.Sprintf("SceneInfo:%v, ", o.SceneInfo) ret += fmt.Sprintf("SettleInfo:%v", o.SettleInfo) return fmt.Sprintf("PrepayRequest{%s}", ret) } func (o PrepayRequest) Clone() *PrepayRequest { ret := PrepayRequest{} if o.Appid != nil { ret.Appid = new(string) *ret.Appid = *o.Appid } if o.Mchid != nil { ret.Mchid = new(string) *ret.Mchid = *o.Mchid } if o.TradeType != nil { ret.TradeType = new(string) *ret.TradeType = *o.TradeType } if o.MerchantCategoryCode != nil { ret.MerchantCategoryCode = new(string) *ret.MerchantCategoryCode = *o.MerchantCategoryCode } if o.Description != nil { ret.Description = new(string) *ret.Description = *o.Description } if o.OutTradeNo != nil { ret.OutTradeNo = new(string) *ret.OutTradeNo = *o.OutTradeNo } if o.TimeExpire != nil { ret.TimeExpire = new(time.Time) *ret.TimeExpire = *o.TimeExpire } if o.Attach != nil { ret.Attach = new(string) *ret.Attach = *o.Attach } if o.NotifyUrl != nil { ret.NotifyUrl = new(string) *ret.NotifyUrl = *o.NotifyUrl } if o.GoodsTag != nil { ret.GoodsTag = new(string) *ret.GoodsTag = *o.GoodsTag } if o.LimitPay != nil { ret.LimitPay = make([]string, len(o.LimitPay)) for i, item := range o.LimitPay { ret.LimitPay[i] = item } } if o.SupportFapiao != nil { ret.SupportFapiao = new(bool) *ret.SupportFapiao = *o.SupportFapiao } if o.Amount != nil { ret.Amount = o.Amount.Clone() } if o.Payer != nil { ret.Payer = o.Payer.Clone() } if o.Detail != nil { ret.Detail = o.Detail.Clone() } if o.SceneInfo != nil { ret.SceneInfo = o.SceneInfo.Clone() } if o.SettleInfo != nil { ret.SettleInfo = o.SettleInfo.Clone() } return &ret } // PrepayResponse type PrepayResponse struct { // 预支付交易会话标识 PrepayId *string `json:"prepay_id"` } func (o PrepayResponse) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.PrepayId == nil { return nil, fmt.Errorf("field `PrepayId` is required and must be specified in PrepayResponse") } toSerialize["prepay_id"] = o.PrepayId return json.Marshal(toSerialize) } func (o PrepayResponse) String() string { var ret string if o.PrepayId == nil { ret += "PrepayId:" } else { ret += fmt.Sprintf("PrepayId:%v", *o.PrepayId) } return fmt.Sprintf("PrepayResponse{%s}", ret) } func (o PrepayResponse) Clone() *PrepayResponse { ret := PrepayResponse{} if o.PrepayId != nil { ret.PrepayId = new(string) *ret.PrepayId = *o.PrepayId } return &ret } // QueryOrderByIdRequest type QueryOrderByIdRequest struct { TransactionId *string `json:"transaction_id"` // 直连商户号 Mchid *string `json:"mchid"` } func (o QueryOrderByIdRequest) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.TransactionId == nil { return nil, fmt.Errorf("field `TransactionId` is required and must be specified in QueryOrderByIdRequest") } toSerialize["transaction_id"] = o.TransactionId if o.Mchid == nil { return nil, fmt.Errorf("field `Mchid` is required and must be specified in QueryOrderByIdRequest") } toSerialize["mchid"] = o.Mchid return json.Marshal(toSerialize) } func (o QueryOrderByIdRequest) String() string { var ret string if o.TransactionId == nil { ret += "TransactionId:, " } else { ret += fmt.Sprintf("TransactionId:%v, ", *o.TransactionId) } if o.Mchid == nil { ret += "Mchid:" } else { ret += fmt.Sprintf("Mchid:%v", *o.Mchid) } return fmt.Sprintf("QueryOrderByIdRequest{%s}", ret) } func (o QueryOrderByIdRequest) Clone() *QueryOrderByIdRequest { ret := QueryOrderByIdRequest{} if o.TransactionId != nil { ret.TransactionId = new(string) *ret.TransactionId = *o.TransactionId } if o.Mchid != nil { ret.Mchid = new(string) *ret.Mchid = *o.Mchid } return &ret } // QueryOrderByOutTradeNoRequest type QueryOrderByOutTradeNoRequest struct { OutTradeNo *string `json:"out_trade_no"` // 直连商户号 Mchid *string `json:"mchid"` } func (o QueryOrderByOutTradeNoRequest) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.OutTradeNo == nil { return nil, fmt.Errorf("field `OutTradeNo` is required and must be specified in QueryOrderByOutTradeNoRequest") } toSerialize["out_trade_no"] = o.OutTradeNo if o.Mchid == nil { return nil, fmt.Errorf("field `Mchid` is required and must be specified in QueryOrderByOutTradeNoRequest") } toSerialize["mchid"] = o.Mchid return json.Marshal(toSerialize) } func (o QueryOrderByOutTradeNoRequest) String() string { var ret string if o.OutTradeNo == nil { ret += "OutTradeNo:, " } else { ret += fmt.Sprintf("OutTradeNo:%v, ", *o.OutTradeNo) } if o.Mchid == nil { ret += "Mchid:" } else { ret += fmt.Sprintf("Mchid:%v", *o.Mchid) } return fmt.Sprintf("QueryOrderByOutTradeNoRequest{%s}", ret) } func (o QueryOrderByOutTradeNoRequest) Clone() *QueryOrderByOutTradeNoRequest { ret := QueryOrderByOutTradeNoRequest{} if o.OutTradeNo != nil { ret.OutTradeNo = new(string) *ret.OutTradeNo = *o.OutTradeNo } if o.Mchid != nil { ret.Mchid = new(string) *ret.Mchid = *o.Mchid } return &ret } // SceneInfo 支付场景描述 type SceneInfo struct { // 用户终端IP PayerClientIp *string `json:"payer_client_ip"` // 商户端设备号 DeviceId *string `json:"device_id,omitempty"` DeviceIp *string `json:"device_ip,omitempty"` OperatorId *string `json:"operator_id,omitempty"` StoreInfo *StoreInfo `json:"store_info,omitempty"` } func (o SceneInfo) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.PayerClientIp == nil { return nil, fmt.Errorf("field `PayerClientIp` is required and must be specified in SceneInfo") } if o.DeviceIp != nil { toSerialize["device_ip"] = o.DeviceIp } if o.OperatorId != nil { toSerialize["operator_id"] = o.OperatorId } toSerialize["payer_client_ip"] = o.PayerClientIp if o.DeviceId != nil { toSerialize["device_id"] = o.DeviceId } if o.StoreInfo != nil { toSerialize["store_info"] = o.StoreInfo } return json.Marshal(toSerialize) } func (o SceneInfo) String() string { var ret string if o.PayerClientIp == nil { ret += "PayerClientIp:, " } else { ret += fmt.Sprintf("PayerClientIp:%v, ", *o.PayerClientIp) } if o.DeviceIp != nil { ret += fmt.Sprintf("DeviceIp:%v, ", *o.DeviceIp) } if o.OperatorId != nil { ret += fmt.Sprintf("OperatorId:%v, ", *o.OperatorId) } if o.DeviceId == nil { ret += "DeviceId:, " } else { ret += fmt.Sprintf("DeviceId:%v, ", *o.DeviceId) } ret += fmt.Sprintf("StoreInfo:%v", o.StoreInfo) return fmt.Sprintf("SceneInfo{%s}", ret) } func (o SceneInfo) Clone() *SceneInfo { ret := SceneInfo{} if o.PayerClientIp != nil { ret.PayerClientIp = new(string) *ret.PayerClientIp = *o.PayerClientIp } if o.DeviceId != nil { ret.DeviceId = new(string) *ret.DeviceId = *o.DeviceId } if o.StoreInfo != nil { ret.StoreInfo = o.StoreInfo.Clone() } return &ret } // SettleInfo type SettleInfo struct { // 是否指定分账 ProfitSharing *bool `json:"profit_sharing,omitempty"` } func (o SettleInfo) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.ProfitSharing != nil { toSerialize["profit_sharing"] = o.ProfitSharing } return json.Marshal(toSerialize) } func (o SettleInfo) String() string { var ret string if o.ProfitSharing == nil { ret += "ProfitSharing:" } else { ret += fmt.Sprintf("ProfitSharing:%v", *o.ProfitSharing) } return fmt.Sprintf("SettleInfo{%s}", ret) } func (o SettleInfo) Clone() *SettleInfo { ret := SettleInfo{} if o.ProfitSharing != nil { ret.ProfitSharing = new(bool) *ret.ProfitSharing = *o.ProfitSharing } return &ret } // StoreInfo 商户门店信息 type StoreInfo struct { // 商户侧门店编号 Id *string `json:"id"` // 商户侧门店名称 Name *string `json:"name,omitempty"` // 详细的商户门店地址 Address *string `json:"address,omitempty"` } func (o StoreInfo) MarshalJSON() ([]byte, error) { toSerialize := map[string]interface{}{} if o.Id == nil { return nil, fmt.Errorf("field `Id` is required and must be specified in StoreInfo") } toSerialize["id"] = o.Id if o.Name != nil { toSerialize["name"] = o.Name } if o.Address != nil { toSerialize["address"] = o.Address } return json.Marshal(toSerialize) } func (o StoreInfo) String() string { var ret string if o.Id == nil { ret += "Id:, " } else { ret += fmt.Sprintf("Id:%v, ", *o.Id) } if o.Name == nil { ret += "Name:, " } else { ret += fmt.Sprintf("Name:%v, ", *o.Name) } if o.Address == nil { ret += "Address:" } else { ret += fmt.Sprintf("Address:%v", *o.Address) } return fmt.Sprintf("StoreInfo{%s}", ret) } func (o StoreInfo) Clone() *StoreInfo { ret := StoreInfo{} if o.Id != nil { ret.Id = new(string) *ret.Id = *o.Id } if o.Name != nil { ret.Name = new(string) *ret.Name = *o.Name } if o.Address != nil { ret.Address = new(string) *ret.Address = *o.Address } return &ret }