models.go 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761
  1. // Copyright 2021 Tencent Inc. All rights reserved.
  2. //
  3. // 微信支付分停车服务
  4. //
  5. // 微信支付分停车服务 扣费API
  6. //
  7. // API version: 1.2.1
  8. // Code generated by WechatPay APIv3 Generator based on [OpenAPI Generator](https://openapi-generator.tech); DO NOT EDIT.
  9. package wexinpayscoreparking
  10. import (
  11. "encoding/json"
  12. "fmt"
  13. "time"
  14. )
  15. // CreateParkingRequest
  16. type CreateParkingRequest struct {
  17. // 微信支付分配的子商户号,服务商模式下必传
  18. SubMchid *string `json:"sub_mchid,omitempty"`
  19. // 商户侧入场标识id,在同一个商户号下唯一
  20. OutParkingNo *string `json:"out_parking_no"`
  21. // 车牌号,仅包括省份+车牌,不包括特殊字符。
  22. PlateNumber *string `json:"plate_number"`
  23. // 车牌颜色
  24. PlateColor *PlateColor `json:"plate_color"`
  25. // 接受入场状态变更回调通知的url,注意回调url只接受https
  26. NotifyUrl *string `json:"notify_url"`
  27. // 入场时间,遵循[rfc3339](https://datatracker.ietf.org/doc/html/rfc3339)标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。
  28. StartTime *time.Time `json:"start_time"`
  29. // 所在停车位车场的名称
  30. ParkingName *string `json:"parking_name"`
  31. // 停车场的免费停车时长,单位为秒
  32. FreeDuration *int64 `json:"free_duration"`
  33. }
  34. func (o CreateParkingRequest) MarshalJSON() ([]byte, error) {
  35. toSerialize := map[string]interface{}{}
  36. if o.SubMchid != nil {
  37. toSerialize["sub_mchid"] = o.SubMchid
  38. }
  39. if o.OutParkingNo == nil {
  40. return nil, fmt.Errorf("field `OutParkingNo` is required and must be specified in CreateParkingRequest")
  41. }
  42. toSerialize["out_parking_no"] = o.OutParkingNo
  43. if o.PlateNumber == nil {
  44. return nil, fmt.Errorf("field `PlateNumber` is required and must be specified in CreateParkingRequest")
  45. }
  46. toSerialize["plate_number"] = o.PlateNumber
  47. if o.PlateColor == nil {
  48. return nil, fmt.Errorf("field `PlateColor` is required and must be specified in CreateParkingRequest")
  49. }
  50. toSerialize["plate_color"] = o.PlateColor
  51. if o.NotifyUrl == nil {
  52. return nil, fmt.Errorf("field `NotifyUrl` is required and must be specified in CreateParkingRequest")
  53. }
  54. toSerialize["notify_url"] = o.NotifyUrl
  55. if o.StartTime == nil {
  56. return nil, fmt.Errorf("field `StartTime` is required and must be specified in CreateParkingRequest")
  57. }
  58. toSerialize["start_time"] = o.StartTime.Format(time.RFC3339)
  59. if o.ParkingName == nil {
  60. return nil, fmt.Errorf("field `ParkingName` is required and must be specified in CreateParkingRequest")
  61. }
  62. toSerialize["parking_name"] = o.ParkingName
  63. if o.FreeDuration == nil {
  64. return nil, fmt.Errorf("field `FreeDuration` is required and must be specified in CreateParkingRequest")
  65. }
  66. toSerialize["free_duration"] = o.FreeDuration
  67. return json.Marshal(toSerialize)
  68. }
  69. func (o CreateParkingRequest) String() string {
  70. var ret string
  71. if o.SubMchid == nil {
  72. ret += "SubMchid:<nil>, "
  73. } else {
  74. ret += fmt.Sprintf("SubMchid:%v, ", *o.SubMchid)
  75. }
  76. if o.OutParkingNo == nil {
  77. ret += "OutParkingNo:<nil>, "
  78. } else {
  79. ret += fmt.Sprintf("OutParkingNo:%v, ", *o.OutParkingNo)
  80. }
  81. if o.PlateNumber == nil {
  82. ret += "PlateNumber:<nil>, "
  83. } else {
  84. ret += fmt.Sprintf("PlateNumber:%v, ", *o.PlateNumber)
  85. }
  86. if o.PlateColor == nil {
  87. ret += "PlateColor:<nil>, "
  88. } else {
  89. ret += fmt.Sprintf("PlateColor:%v, ", *o.PlateColor)
  90. }
  91. if o.NotifyUrl == nil {
  92. ret += "NotifyUrl:<nil>, "
  93. } else {
  94. ret += fmt.Sprintf("NotifyUrl:%v, ", *o.NotifyUrl)
  95. }
  96. if o.StartTime == nil {
  97. ret += "StartTime:<nil>, "
  98. } else {
  99. ret += fmt.Sprintf("StartTime:%v, ", *o.StartTime)
  100. }
  101. if o.ParkingName == nil {
  102. ret += "ParkingName:<nil>, "
  103. } else {
  104. ret += fmt.Sprintf("ParkingName:%v, ", *o.ParkingName)
  105. }
  106. if o.FreeDuration == nil {
  107. ret += "FreeDuration:<nil>"
  108. } else {
  109. ret += fmt.Sprintf("FreeDuration:%v", *o.FreeDuration)
  110. }
  111. return fmt.Sprintf("CreateParkingRequest{%s}", ret)
  112. }
  113. func (o CreateParkingRequest) Clone() *CreateParkingRequest {
  114. ret := CreateParkingRequest{}
  115. if o.SubMchid != nil {
  116. ret.SubMchid = new(string)
  117. *ret.SubMchid = *o.SubMchid
  118. }
  119. if o.OutParkingNo != nil {
  120. ret.OutParkingNo = new(string)
  121. *ret.OutParkingNo = *o.OutParkingNo
  122. }
  123. if o.PlateNumber != nil {
  124. ret.PlateNumber = new(string)
  125. *ret.PlateNumber = *o.PlateNumber
  126. }
  127. if o.PlateColor != nil {
  128. ret.PlateColor = new(PlateColor)
  129. *ret.PlateColor = *o.PlateColor
  130. }
  131. if o.NotifyUrl != nil {
  132. ret.NotifyUrl = new(string)
  133. *ret.NotifyUrl = *o.NotifyUrl
  134. }
  135. if o.StartTime != nil {
  136. ret.StartTime = new(time.Time)
  137. *ret.StartTime = *o.StartTime
  138. }
  139. if o.ParkingName != nil {
  140. ret.ParkingName = new(string)
  141. *ret.ParkingName = *o.ParkingName
  142. }
  143. if o.FreeDuration != nil {
  144. ret.FreeDuration = new(int64)
  145. *ret.FreeDuration = *o.FreeDuration
  146. }
  147. return &ret
  148. }
  149. // CreateTransactionRequest
  150. type CreateTransactionRequest struct {
  151. // appid是商户在微信申请公众号或移动应用成功后分配的帐号ID,登录平台为mp.weixin.qq.com或open.weixin.qq.com
  152. Appid *string `json:"appid"`
  153. // 子公众账号id,服务商模式下选传,用于扣费信息的商户信息展示,
  154. SubAppid *string `json:"sub_appid,omitempty"`
  155. // 微信支付分配的子商户号,服务商模式下必传
  156. SubMchid *string `json:"sub_mchid,omitempty"`
  157. // 商户自定义字段,用于交易账单中对扣费服务的描述。
  158. Description *string `json:"description"`
  159. // 附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用
  160. Attach *string `json:"attach,omitempty"`
  161. // 商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一
  162. OutTradeNo *string `json:"out_trade_no"`
  163. // 交易场景值,目前支持 :PARKING:车场停车场景
  164. TradeScene *string `json:"trade_scene"`
  165. // 代金券或立减优惠功能的参数,说明详见[代金券或立减优惠](https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter5_1_2.shtml)
  166. GoodsTag *string `json:"goods_tag,omitempty"`
  167. // 接受扣款结果异步回调通知的url,注意回调url只接受https
  168. NotifyUrl *string `json:"notify_url"`
  169. // Y:是,需要分账 N:否,不分账 字母要求大写,不传默认不分账,分账详细说明见[直连分账API](https://pay.weixin.qq.com/wiki/doc/api/allocation.php?chapter=26_1)、[服务商分账API文档](https://pay.weixin.qq.com/wiki/doc/api/allocation_sl.php?chapter=24_1&index=1)
  170. ProfitSharing *string `json:"profit_sharing,omitempty"`
  171. // 订单金额信息
  172. Amount *OrderAmount `json:"amount"`
  173. // 当交易场景为PARKING时,需要在该字段添加停车场景信息
  174. ParkingInfo *ParkingTradeScene `json:"parking_info,omitempty"`
  175. }
  176. func (o CreateTransactionRequest) MarshalJSON() ([]byte, error) {
  177. toSerialize := map[string]interface{}{}
  178. if o.Appid == nil {
  179. return nil, fmt.Errorf("field `Appid` is required and must be specified in CreateTransactionRequest")
  180. }
  181. toSerialize["appid"] = o.Appid
  182. if o.SubAppid != nil {
  183. toSerialize["sub_appid"] = o.SubAppid
  184. }
  185. if o.SubMchid != nil {
  186. toSerialize["sub_mchid"] = o.SubMchid
  187. }
  188. if o.Description == nil {
  189. return nil, fmt.Errorf("field `Description` is required and must be specified in CreateTransactionRequest")
  190. }
  191. toSerialize["description"] = o.Description
  192. if o.Attach != nil {
  193. toSerialize["attach"] = o.Attach
  194. }
  195. if o.OutTradeNo == nil {
  196. return nil, fmt.Errorf("field `OutTradeNo` is required and must be specified in CreateTransactionRequest")
  197. }
  198. toSerialize["out_trade_no"] = o.OutTradeNo
  199. if o.TradeScene == nil {
  200. return nil, fmt.Errorf("field `TradeScene` is required and must be specified in CreateTransactionRequest")
  201. }
  202. toSerialize["trade_scene"] = o.TradeScene
  203. if o.GoodsTag != nil {
  204. toSerialize["goods_tag"] = o.GoodsTag
  205. }
  206. if o.NotifyUrl == nil {
  207. return nil, fmt.Errorf("field `NotifyUrl` is required and must be specified in CreateTransactionRequest")
  208. }
  209. toSerialize["notify_url"] = o.NotifyUrl
  210. if o.ProfitSharing != nil {
  211. toSerialize["profit_sharing"] = o.ProfitSharing
  212. }
  213. if o.Amount == nil {
  214. return nil, fmt.Errorf("field `Amount` is required and must be specified in CreateTransactionRequest")
  215. }
  216. toSerialize["amount"] = o.Amount
  217. if o.ParkingInfo != nil {
  218. toSerialize["parking_info"] = o.ParkingInfo
  219. }
  220. return json.Marshal(toSerialize)
  221. }
  222. func (o CreateTransactionRequest) String() string {
  223. var ret string
  224. if o.Appid == nil {
  225. ret += "Appid:<nil>, "
  226. } else {
  227. ret += fmt.Sprintf("Appid:%v, ", *o.Appid)
  228. }
  229. if o.SubAppid == nil {
  230. ret += "SubAppid:<nil>, "
  231. } else {
  232. ret += fmt.Sprintf("SubAppid:%v, ", *o.SubAppid)
  233. }
  234. if o.SubMchid == nil {
  235. ret += "SubMchid:<nil>, "
  236. } else {
  237. ret += fmt.Sprintf("SubMchid:%v, ", *o.SubMchid)
  238. }
  239. if o.Description == nil {
  240. ret += "Description:<nil>, "
  241. } else {
  242. ret += fmt.Sprintf("Description:%v, ", *o.Description)
  243. }
  244. if o.Attach == nil {
  245. ret += "Attach:<nil>, "
  246. } else {
  247. ret += fmt.Sprintf("Attach:%v, ", *o.Attach)
  248. }
  249. if o.OutTradeNo == nil {
  250. ret += "OutTradeNo:<nil>, "
  251. } else {
  252. ret += fmt.Sprintf("OutTradeNo:%v, ", *o.OutTradeNo)
  253. }
  254. if o.TradeScene == nil {
  255. ret += "TradeScene:<nil>, "
  256. } else {
  257. ret += fmt.Sprintf("TradeScene:%v, ", *o.TradeScene)
  258. }
  259. if o.GoodsTag == nil {
  260. ret += "GoodsTag:<nil>, "
  261. } else {
  262. ret += fmt.Sprintf("GoodsTag:%v, ", *o.GoodsTag)
  263. }
  264. if o.NotifyUrl == nil {
  265. ret += "NotifyUrl:<nil>, "
  266. } else {
  267. ret += fmt.Sprintf("NotifyUrl:%v, ", *o.NotifyUrl)
  268. }
  269. if o.ProfitSharing == nil {
  270. ret += "ProfitSharing:<nil>, "
  271. } else {
  272. ret += fmt.Sprintf("ProfitSharing:%v, ", *o.ProfitSharing)
  273. }
  274. ret += fmt.Sprintf("Amount:%v, ", o.Amount)
  275. ret += fmt.Sprintf("ParkingInfo:%v", o.ParkingInfo)
  276. return fmt.Sprintf("CreateTransactionRequest{%s}", ret)
  277. }
  278. func (o CreateTransactionRequest) Clone() *CreateTransactionRequest {
  279. ret := CreateTransactionRequest{}
  280. if o.Appid != nil {
  281. ret.Appid = new(string)
  282. *ret.Appid = *o.Appid
  283. }
  284. if o.SubAppid != nil {
  285. ret.SubAppid = new(string)
  286. *ret.SubAppid = *o.SubAppid
  287. }
  288. if o.SubMchid != nil {
  289. ret.SubMchid = new(string)
  290. *ret.SubMchid = *o.SubMchid
  291. }
  292. if o.Description != nil {
  293. ret.Description = new(string)
  294. *ret.Description = *o.Description
  295. }
  296. if o.Attach != nil {
  297. ret.Attach = new(string)
  298. *ret.Attach = *o.Attach
  299. }
  300. if o.OutTradeNo != nil {
  301. ret.OutTradeNo = new(string)
  302. *ret.OutTradeNo = *o.OutTradeNo
  303. }
  304. if o.TradeScene != nil {
  305. ret.TradeScene = new(string)
  306. *ret.TradeScene = *o.TradeScene
  307. }
  308. if o.GoodsTag != nil {
  309. ret.GoodsTag = new(string)
  310. *ret.GoodsTag = *o.GoodsTag
  311. }
  312. if o.NotifyUrl != nil {
  313. ret.NotifyUrl = new(string)
  314. *ret.NotifyUrl = *o.NotifyUrl
  315. }
  316. if o.ProfitSharing != nil {
  317. ret.ProfitSharing = new(string)
  318. *ret.ProfitSharing = *o.ProfitSharing
  319. }
  320. if o.Amount != nil {
  321. ret.Amount = o.Amount.Clone()
  322. }
  323. if o.ParkingInfo != nil {
  324. ret.ParkingInfo = o.ParkingInfo.Clone()
  325. }
  326. return &ret
  327. }
  328. // OrderAmount
  329. type OrderAmount struct {
  330. // 订单总金额,单位为分,只能为整数
  331. Total *int64 `json:"total"`
  332. // 符合ISO 4217标准的三位字母代码,目前只支持人民币:CNY
  333. Currency *string `json:"currency,omitempty"`
  334. }
  335. func (o OrderAmount) MarshalJSON() ([]byte, error) {
  336. toSerialize := map[string]interface{}{}
  337. if o.Total == nil {
  338. return nil, fmt.Errorf("field `Total` is required and must be specified in OrderAmount")
  339. }
  340. toSerialize["total"] = o.Total
  341. if o.Currency != nil {
  342. toSerialize["currency"] = o.Currency
  343. }
  344. return json.Marshal(toSerialize)
  345. }
  346. func (o OrderAmount) String() string {
  347. var ret string
  348. if o.Total == nil {
  349. ret += "Total:<nil>, "
  350. } else {
  351. ret += fmt.Sprintf("Total:%v, ", *o.Total)
  352. }
  353. if o.Currency == nil {
  354. ret += "Currency:<nil>"
  355. } else {
  356. ret += fmt.Sprintf("Currency:%v", *o.Currency)
  357. }
  358. return fmt.Sprintf("OrderAmount{%s}", ret)
  359. }
  360. func (o OrderAmount) Clone() *OrderAmount {
  361. ret := OrderAmount{}
  362. if o.Total != nil {
  363. ret.Total = new(int64)
  364. *ret.Total = *o.Total
  365. }
  366. if o.Currency != nil {
  367. ret.Currency = new(string)
  368. *ret.Currency = *o.Currency
  369. }
  370. return &ret
  371. }
  372. // Parking
  373. type Parking struct {
  374. // 车主服务为商户分配的入场id
  375. Id *string `json:"id"`
  376. // 商户侧入场标识id,在同一个商户号下唯一
  377. OutParkingNo *string `json:"out_parking_no"`
  378. // 车牌号,仅包括省份+车牌,不包括特殊字符。
  379. PlateNumber *string `json:"plate_number"`
  380. // 车牌颜色
  381. PlateColor *PlateColor `json:"plate_color"`
  382. // 入场时间,按照使用rfc3339所定义的格式,格式为YYYY-MM-DDThh:mm:ss+TIMEZONE
  383. StartTime *string `json:"start_time"`
  384. // 所在停车位车场的名称
  385. ParkingName *string `json:"parking_name"`
  386. // 停车场的免费停车时长,单位为秒
  387. FreeDuration *int64 `json:"free_duration"`
  388. // 本次入场车牌的服务状态, NORMAL:正常状态,可以使用微信支付分停车服务, BLOCKED 不可用状态,暂时不可以使用微信支付分停车服务
  389. State *string `json:"state"`
  390. // block服务状态描述,返回车牌状态为BLOCKED,会返回该字段,描述具体BLOCKED的原因, PAUSE:已暂停微信支付分停车服务; OVERDUE:已授权签约但欠费,不能提供服务, OUT_SERVICE : 车牌未开通微信支付分停车服务, EVALUATION_FAILED 综合评估未通过,用户支付分不可用的情况,会返回该状态。
  391. BlockReason *string `json:"block_reason,omitempty"`
  392. }
  393. func (o Parking) MarshalJSON() ([]byte, error) {
  394. toSerialize := map[string]interface{}{}
  395. if o.Id == nil {
  396. return nil, fmt.Errorf("field `Id` is required and must be specified in Parking")
  397. }
  398. toSerialize["id"] = o.Id
  399. if o.OutParkingNo == nil {
  400. return nil, fmt.Errorf("field `OutParkingNo` is required and must be specified in Parking")
  401. }
  402. toSerialize["out_parking_no"] = o.OutParkingNo
  403. if o.PlateNumber == nil {
  404. return nil, fmt.Errorf("field `PlateNumber` is required and must be specified in Parking")
  405. }
  406. toSerialize["plate_number"] = o.PlateNumber
  407. if o.PlateColor == nil {
  408. return nil, fmt.Errorf("field `PlateColor` is required and must be specified in Parking")
  409. }
  410. toSerialize["plate_color"] = o.PlateColor
  411. if o.StartTime == nil {
  412. return nil, fmt.Errorf("field `StartTime` is required and must be specified in Parking")
  413. }
  414. toSerialize["start_time"] = o.StartTime
  415. if o.ParkingName == nil {
  416. return nil, fmt.Errorf("field `ParkingName` is required and must be specified in Parking")
  417. }
  418. toSerialize["parking_name"] = o.ParkingName
  419. if o.FreeDuration == nil {
  420. return nil, fmt.Errorf("field `FreeDuration` is required and must be specified in Parking")
  421. }
  422. toSerialize["free_duration"] = o.FreeDuration
  423. if o.State == nil {
  424. return nil, fmt.Errorf("field `State` is required and must be specified in Parking")
  425. }
  426. toSerialize["state"] = o.State
  427. if o.BlockReason != nil {
  428. toSerialize["block_reason"] = o.BlockReason
  429. }
  430. return json.Marshal(toSerialize)
  431. }
  432. func (o Parking) String() string {
  433. var ret string
  434. if o.Id == nil {
  435. ret += "Id:<nil>, "
  436. } else {
  437. ret += fmt.Sprintf("Id:%v, ", *o.Id)
  438. }
  439. if o.OutParkingNo == nil {
  440. ret += "OutParkingNo:<nil>, "
  441. } else {
  442. ret += fmt.Sprintf("OutParkingNo:%v, ", *o.OutParkingNo)
  443. }
  444. if o.PlateNumber == nil {
  445. ret += "PlateNumber:<nil>, "
  446. } else {
  447. ret += fmt.Sprintf("PlateNumber:%v, ", *o.PlateNumber)
  448. }
  449. if o.PlateColor == nil {
  450. ret += "PlateColor:<nil>, "
  451. } else {
  452. ret += fmt.Sprintf("PlateColor:%v, ", *o.PlateColor)
  453. }
  454. if o.StartTime == nil {
  455. ret += "StartTime:<nil>, "
  456. } else {
  457. ret += fmt.Sprintf("StartTime:%v, ", *o.StartTime)
  458. }
  459. if o.ParkingName == nil {
  460. ret += "ParkingName:<nil>, "
  461. } else {
  462. ret += fmt.Sprintf("ParkingName:%v, ", *o.ParkingName)
  463. }
  464. if o.FreeDuration == nil {
  465. ret += "FreeDuration:<nil>, "
  466. } else {
  467. ret += fmt.Sprintf("FreeDuration:%v, ", *o.FreeDuration)
  468. }
  469. if o.State == nil {
  470. ret += "State:<nil>, "
  471. } else {
  472. ret += fmt.Sprintf("State:%v, ", *o.State)
  473. }
  474. if o.BlockReason == nil {
  475. ret += "BlockReason:<nil>"
  476. } else {
  477. ret += fmt.Sprintf("BlockReason:%v", *o.BlockReason)
  478. }
  479. return fmt.Sprintf("Parking{%s}", ret)
  480. }
  481. func (o Parking) Clone() *Parking {
  482. ret := Parking{}
  483. if o.Id != nil {
  484. ret.Id = new(string)
  485. *ret.Id = *o.Id
  486. }
  487. if o.OutParkingNo != nil {
  488. ret.OutParkingNo = new(string)
  489. *ret.OutParkingNo = *o.OutParkingNo
  490. }
  491. if o.PlateNumber != nil {
  492. ret.PlateNumber = new(string)
  493. *ret.PlateNumber = *o.PlateNumber
  494. }
  495. if o.PlateColor != nil {
  496. ret.PlateColor = new(PlateColor)
  497. *ret.PlateColor = *o.PlateColor
  498. }
  499. if o.StartTime != nil {
  500. ret.StartTime = new(string)
  501. *ret.StartTime = *o.StartTime
  502. }
  503. if o.ParkingName != nil {
  504. ret.ParkingName = new(string)
  505. *ret.ParkingName = *o.ParkingName
  506. }
  507. if o.FreeDuration != nil {
  508. ret.FreeDuration = new(int64)
  509. *ret.FreeDuration = *o.FreeDuration
  510. }
  511. if o.State != nil {
  512. ret.State = new(string)
  513. *ret.State = *o.State
  514. }
  515. if o.BlockReason != nil {
  516. ret.BlockReason = new(string)
  517. *ret.BlockReason = *o.BlockReason
  518. }
  519. return &ret
  520. }
  521. // ParkingTradeScene
  522. type ParkingTradeScene struct {
  523. // 微信支付分停车服务为商户分配的入场id,商户通过入场通知接口获取入场id
  524. ParkingId *string `json:"parking_id"`
  525. // 车牌号,仅包括省份+车牌,不包括特殊字符。
  526. PlateNumber *string `json:"plate_number"`
  527. // 车牌颜色
  528. PlateColor *PlateColor `json:"plate_color"`
  529. // 用户入场时间,遵循[rfc3339](https://datatracker.ietf.org/doc/html/rfc3339)标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。
  530. StartTime *time.Time `json:"start_time"`
  531. // 用户出场时间,遵循[rfc3339](https://datatracker.ietf.org/doc/html/rfc3339)标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。
  532. EndTime *time.Time `json:"end_time"`
  533. // 所在停车位车场的名称
  534. ParkingName *string `json:"parking_name"`
  535. // 计费的时间长,单位为秒
  536. ChargingDuration *int64 `json:"charging_duration"`
  537. // 停车场设备id
  538. DeviceId *string `json:"device_id"`
  539. }
  540. func (o ParkingTradeScene) MarshalJSON() ([]byte, error) {
  541. toSerialize := map[string]interface{}{}
  542. if o.ParkingId == nil {
  543. return nil, fmt.Errorf("field `ParkingId` is required and must be specified in ParkingTradeScene")
  544. }
  545. toSerialize["parking_id"] = o.ParkingId
  546. if o.PlateNumber == nil {
  547. return nil, fmt.Errorf("field `PlateNumber` is required and must be specified in ParkingTradeScene")
  548. }
  549. toSerialize["plate_number"] = o.PlateNumber
  550. if o.PlateColor == nil {
  551. return nil, fmt.Errorf("field `PlateColor` is required and must be specified in ParkingTradeScene")
  552. }
  553. toSerialize["plate_color"] = o.PlateColor
  554. if o.StartTime == nil {
  555. return nil, fmt.Errorf("field `StartTime` is required and must be specified in ParkingTradeScene")
  556. }
  557. toSerialize["start_time"] = o.StartTime.Format(time.RFC3339)
  558. if o.EndTime == nil {
  559. return nil, fmt.Errorf("field `EndTime` is required and must be specified in ParkingTradeScene")
  560. }
  561. toSerialize["end_time"] = o.EndTime.Format(time.RFC3339)
  562. if o.ParkingName == nil {
  563. return nil, fmt.Errorf("field `ParkingName` is required and must be specified in ParkingTradeScene")
  564. }
  565. toSerialize["parking_name"] = o.ParkingName
  566. if o.ChargingDuration == nil {
  567. return nil, fmt.Errorf("field `ChargingDuration` is required and must be specified in ParkingTradeScene")
  568. }
  569. toSerialize["charging_duration"] = o.ChargingDuration
  570. if o.DeviceId == nil {
  571. return nil, fmt.Errorf("field `DeviceId` is required and must be specified in ParkingTradeScene")
  572. }
  573. toSerialize["device_id"] = o.DeviceId
  574. return json.Marshal(toSerialize)
  575. }
  576. func (o ParkingTradeScene) String() string {
  577. var ret string
  578. if o.ParkingId == nil {
  579. ret += "ParkingId:<nil>, "
  580. } else {
  581. ret += fmt.Sprintf("ParkingId:%v, ", *o.ParkingId)
  582. }
  583. if o.PlateNumber == nil {
  584. ret += "PlateNumber:<nil>, "
  585. } else {
  586. ret += fmt.Sprintf("PlateNumber:%v, ", *o.PlateNumber)
  587. }
  588. if o.PlateColor == nil {
  589. ret += "PlateColor:<nil>, "
  590. } else {
  591. ret += fmt.Sprintf("PlateColor:%v, ", *o.PlateColor)
  592. }
  593. if o.StartTime == nil {
  594. ret += "StartTime:<nil>, "
  595. } else {
  596. ret += fmt.Sprintf("StartTime:%v, ", *o.StartTime)
  597. }
  598. if o.EndTime == nil {
  599. ret += "EndTime:<nil>, "
  600. } else {
  601. ret += fmt.Sprintf("EndTime:%v, ", *o.EndTime)
  602. }
  603. if o.ParkingName == nil {
  604. ret += "ParkingName:<nil>, "
  605. } else {
  606. ret += fmt.Sprintf("ParkingName:%v, ", *o.ParkingName)
  607. }
  608. if o.ChargingDuration == nil {
  609. ret += "ChargingDuration:<nil>, "
  610. } else {
  611. ret += fmt.Sprintf("ChargingDuration:%v, ", *o.ChargingDuration)
  612. }
  613. if o.DeviceId == nil {
  614. ret += "DeviceId:<nil>"
  615. } else {
  616. ret += fmt.Sprintf("DeviceId:%v", *o.DeviceId)
  617. }
  618. return fmt.Sprintf("ParkingTradeScene{%s}", ret)
  619. }
  620. func (o ParkingTradeScene) Clone() *ParkingTradeScene {
  621. ret := ParkingTradeScene{}
  622. if o.ParkingId != nil {
  623. ret.ParkingId = new(string)
  624. *ret.ParkingId = *o.ParkingId
  625. }
  626. if o.PlateNumber != nil {
  627. ret.PlateNumber = new(string)
  628. *ret.PlateNumber = *o.PlateNumber
  629. }
  630. if o.PlateColor != nil {
  631. ret.PlateColor = new(PlateColor)
  632. *ret.PlateColor = *o.PlateColor
  633. }
  634. if o.StartTime != nil {
  635. ret.StartTime = new(time.Time)
  636. *ret.StartTime = *o.StartTime
  637. }
  638. if o.EndTime != nil {
  639. ret.EndTime = new(time.Time)
  640. *ret.EndTime = *o.EndTime
  641. }
  642. if o.ParkingName != nil {
  643. ret.ParkingName = new(string)
  644. *ret.ParkingName = *o.ParkingName
  645. }
  646. if o.ChargingDuration != nil {
  647. ret.ChargingDuration = new(int64)
  648. *ret.ChargingDuration = *o.ChargingDuration
  649. }
  650. if o.DeviceId != nil {
  651. ret.DeviceId = new(string)
  652. *ret.DeviceId = *o.DeviceId
  653. }
  654. return &ret
  655. }
  656. // Payer
  657. type Payer struct {
  658. // 用户在appid下的唯一标识
  659. Openid *string `json:"openid"`
  660. // 用户在sub_appid下的标识,商户扣费时传入了sub_appid,则会返回该用户在sub_appid下的标识
  661. SubOpenid *string `json:"sub_openid,omitempty"`
  662. }
  663. func (o Payer) MarshalJSON() ([]byte, error) {
  664. toSerialize := map[string]interface{}{}
  665. if o.Openid == nil {
  666. return nil, fmt.Errorf("field `Openid` is required and must be specified in Payer")
  667. }
  668. toSerialize["openid"] = o.Openid
  669. if o.SubOpenid != nil {
  670. toSerialize["sub_openid"] = o.SubOpenid
  671. }
  672. return json.Marshal(toSerialize)
  673. }
  674. func (o Payer) String() string {
  675. var ret string
  676. if o.Openid == nil {
  677. ret += "Openid:<nil>, "
  678. } else {
  679. ret += fmt.Sprintf("Openid:%v, ", *o.Openid)
  680. }
  681. if o.SubOpenid == nil {
  682. ret += "SubOpenid:<nil>"
  683. } else {
  684. ret += fmt.Sprintf("SubOpenid:%v", *o.SubOpenid)
  685. }
  686. return fmt.Sprintf("Payer{%s}", ret)
  687. }
  688. func (o Payer) Clone() *Payer {
  689. ret := Payer{}
  690. if o.Openid != nil {
  691. ret.Openid = new(string)
  692. *ret.Openid = *o.Openid
  693. }
  694. if o.SubOpenid != nil {
  695. ret.SubOpenid = new(string)
  696. *ret.SubOpenid = *o.SubOpenid
  697. }
  698. return &ret
  699. }
  700. // PlateColor
  701. type PlateColor string
  702. func (e PlateColor) Ptr() *PlateColor {
  703. return &e
  704. }
  705. // Enums of PlateColor
  706. const (
  707. PLATECOLOR_BLUE PlateColor = "BLUE"
  708. PLATECOLOR_GREEN PlateColor = "GREEN"
  709. PLATECOLOR_YELLOW PlateColor = "YELLOW"
  710. PLATECOLOR_BLACK PlateColor = "BLACK"
  711. PLATECOLOR_WHITE PlateColor = "WHITE"
  712. PLATECOLOR_LIMEGREEN PlateColor = "LIMEGREEN"
  713. )
  714. // PlateService
  715. type PlateService struct {
  716. // 车牌号,仅包括省份+车牌,不包括特殊字符。
  717. PlateNumber *string `json:"plate_number"`
  718. // 车牌颜色
  719. PlateColor *PlateColor `json:"plate_color"`
  720. // 车牌服务开通时间,遵循[rfc3339](https://datatracker.ietf.org/doc/html/rfc3339)标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。
  721. ServiceOpenTime *time.Time `json:"service_open_time,omitempty"`
  722. // 用户在商户对应appid下的唯一标识,此处返回商户请求中的openid
  723. Openid *string `json:"openid"`
  724. // 车牌服务开通状态, NORMAL 正常服务 PAUSE 暂停服务 OUT_SERVICE 未开通 商户根据状态带用户跳转至对应的微信支付分停车服务小程序页面。 其中NORMAL 和 PAUSE状态,可跳转至车牌管理页,进行车牌服务状态管理。OUT_SERVICE状态,可跳转至服务开通页面。
  725. ServiceState *string `json:"service_state"`
  726. }
  727. func (o PlateService) MarshalJSON() ([]byte, error) {
  728. toSerialize := map[string]interface{}{}
  729. if o.PlateNumber == nil {
  730. return nil, fmt.Errorf("field `PlateNumber` is required and must be specified in PlateService")
  731. }
  732. toSerialize["plate_number"] = o.PlateNumber
  733. if o.PlateColor == nil {
  734. return nil, fmt.Errorf("field `PlateColor` is required and must be specified in PlateService")
  735. }
  736. toSerialize["plate_color"] = o.PlateColor
  737. if o.ServiceOpenTime != nil {
  738. toSerialize["service_open_time"] = o.ServiceOpenTime.Format(time.RFC3339)
  739. }
  740. if o.Openid == nil {
  741. return nil, fmt.Errorf("field `Openid` is required and must be specified in PlateService")
  742. }
  743. toSerialize["openid"] = o.Openid
  744. if o.ServiceState == nil {
  745. return nil, fmt.Errorf("field `ServiceState` is required and must be specified in PlateService")
  746. }
  747. toSerialize["service_state"] = o.ServiceState
  748. return json.Marshal(toSerialize)
  749. }
  750. func (o PlateService) String() string {
  751. var ret string
  752. if o.PlateNumber == nil {
  753. ret += "PlateNumber:<nil>, "
  754. } else {
  755. ret += fmt.Sprintf("PlateNumber:%v, ", *o.PlateNumber)
  756. }
  757. if o.PlateColor == nil {
  758. ret += "PlateColor:<nil>, "
  759. } else {
  760. ret += fmt.Sprintf("PlateColor:%v, ", *o.PlateColor)
  761. }
  762. if o.ServiceOpenTime == nil {
  763. ret += "ServiceOpenTime:<nil>, "
  764. } else {
  765. ret += fmt.Sprintf("ServiceOpenTime:%v, ", *o.ServiceOpenTime)
  766. }
  767. if o.Openid == nil {
  768. ret += "Openid:<nil>, "
  769. } else {
  770. ret += fmt.Sprintf("Openid:%v, ", *o.Openid)
  771. }
  772. if o.ServiceState == nil {
  773. ret += "ServiceState:<nil>"
  774. } else {
  775. ret += fmt.Sprintf("ServiceState:%v", *o.ServiceState)
  776. }
  777. return fmt.Sprintf("PlateService{%s}", ret)
  778. }
  779. func (o PlateService) Clone() *PlateService {
  780. ret := PlateService{}
  781. if o.PlateNumber != nil {
  782. ret.PlateNumber = new(string)
  783. *ret.PlateNumber = *o.PlateNumber
  784. }
  785. if o.PlateColor != nil {
  786. ret.PlateColor = new(PlateColor)
  787. *ret.PlateColor = *o.PlateColor
  788. }
  789. if o.ServiceOpenTime != nil {
  790. ret.ServiceOpenTime = new(time.Time)
  791. *ret.ServiceOpenTime = *o.ServiceOpenTime
  792. }
  793. if o.Openid != nil {
  794. ret.Openid = new(string)
  795. *ret.Openid = *o.Openid
  796. }
  797. if o.ServiceState != nil {
  798. ret.ServiceState = new(string)
  799. *ret.ServiceState = *o.ServiceState
  800. }
  801. return &ret
  802. }
  803. // PromotionDetail
  804. type PromotionDetail struct {
  805. // 券或者立减优惠id
  806. CouponId *string `json:"coupon_id"`
  807. // 优惠名称
  808. Name *string `json:"name,omitempty"`
  809. // GLOBAL-全场代金券, SINGLE-单品优惠
  810. Scope *string `json:"scope,omitempty"`
  811. // 枚举值: CASH:充值型代金券 NOCASH:免充值型代金券
  812. Type *string `json:"type,omitempty"`
  813. // 在微信商户后台配置的批次ID
  814. StockId *string `json:"stock_id,omitempty"`
  815. // 用户享受优惠的金额
  816. Amount *int64 `json:"amount"`
  817. // 特指由微信支付商户平台创建的优惠,出资金额等于本项优惠总金额,单位为分
  818. WechatpayContribute *int64 `json:"wechatpay_contribute,omitempty"`
  819. // 特指商户自己创建的优惠,出资金额等于本项优惠总金额,单位为分
  820. MerchantContribute *int64 `json:"merchant_contribute,omitempty"`
  821. // 其他出资方出资金额,单位为分
  822. OtherContribute *int64 `json:"other_contribute,omitempty"`
  823. // CNY:人民币,境内商户号仅支持人民币。
  824. Currency *string `json:"currency,omitempty"`
  825. }
  826. func (o PromotionDetail) MarshalJSON() ([]byte, error) {
  827. toSerialize := map[string]interface{}{}
  828. if o.CouponId == nil {
  829. return nil, fmt.Errorf("field `CouponId` is required and must be specified in PromotionDetail")
  830. }
  831. toSerialize["coupon_id"] = o.CouponId
  832. if o.Name != nil {
  833. toSerialize["name"] = o.Name
  834. }
  835. if o.Scope != nil {
  836. toSerialize["scope"] = o.Scope
  837. }
  838. if o.Type != nil {
  839. toSerialize["type"] = o.Type
  840. }
  841. if o.StockId != nil {
  842. toSerialize["stock_id"] = o.StockId
  843. }
  844. if o.Amount == nil {
  845. return nil, fmt.Errorf("field `Amount` is required and must be specified in PromotionDetail")
  846. }
  847. toSerialize["amount"] = o.Amount
  848. if o.WechatpayContribute != nil {
  849. toSerialize["wechatpay_contribute"] = o.WechatpayContribute
  850. }
  851. if o.MerchantContribute != nil {
  852. toSerialize["merchant_contribute"] = o.MerchantContribute
  853. }
  854. if o.OtherContribute != nil {
  855. toSerialize["other_contribute"] = o.OtherContribute
  856. }
  857. if o.Currency != nil {
  858. toSerialize["currency"] = o.Currency
  859. }
  860. return json.Marshal(toSerialize)
  861. }
  862. func (o PromotionDetail) String() string {
  863. var ret string
  864. if o.CouponId == nil {
  865. ret += "CouponId:<nil>, "
  866. } else {
  867. ret += fmt.Sprintf("CouponId:%v, ", *o.CouponId)
  868. }
  869. if o.Name == nil {
  870. ret += "Name:<nil>, "
  871. } else {
  872. ret += fmt.Sprintf("Name:%v, ", *o.Name)
  873. }
  874. if o.Scope == nil {
  875. ret += "Scope:<nil>, "
  876. } else {
  877. ret += fmt.Sprintf("Scope:%v, ", *o.Scope)
  878. }
  879. if o.Type == nil {
  880. ret += "Type:<nil>, "
  881. } else {
  882. ret += fmt.Sprintf("Type:%v, ", *o.Type)
  883. }
  884. if o.StockId == nil {
  885. ret += "StockId:<nil>, "
  886. } else {
  887. ret += fmt.Sprintf("StockId:%v, ", *o.StockId)
  888. }
  889. if o.Amount == nil {
  890. ret += "Amount:<nil>, "
  891. } else {
  892. ret += fmt.Sprintf("Amount:%v, ", *o.Amount)
  893. }
  894. if o.WechatpayContribute == nil {
  895. ret += "WechatpayContribute:<nil>, "
  896. } else {
  897. ret += fmt.Sprintf("WechatpayContribute:%v, ", *o.WechatpayContribute)
  898. }
  899. if o.MerchantContribute == nil {
  900. ret += "MerchantContribute:<nil>, "
  901. } else {
  902. ret += fmt.Sprintf("MerchantContribute:%v, ", *o.MerchantContribute)
  903. }
  904. if o.OtherContribute == nil {
  905. ret += "OtherContribute:<nil>, "
  906. } else {
  907. ret += fmt.Sprintf("OtherContribute:%v, ", *o.OtherContribute)
  908. }
  909. if o.Currency == nil {
  910. ret += "Currency:<nil>"
  911. } else {
  912. ret += fmt.Sprintf("Currency:%v", *o.Currency)
  913. }
  914. return fmt.Sprintf("PromotionDetail{%s}", ret)
  915. }
  916. func (o PromotionDetail) Clone() *PromotionDetail {
  917. ret := PromotionDetail{}
  918. if o.CouponId != nil {
  919. ret.CouponId = new(string)
  920. *ret.CouponId = *o.CouponId
  921. }
  922. if o.Name != nil {
  923. ret.Name = new(string)
  924. *ret.Name = *o.Name
  925. }
  926. if o.Scope != nil {
  927. ret.Scope = new(string)
  928. *ret.Scope = *o.Scope
  929. }
  930. if o.Type != nil {
  931. ret.Type = new(string)
  932. *ret.Type = *o.Type
  933. }
  934. if o.StockId != nil {
  935. ret.StockId = new(string)
  936. *ret.StockId = *o.StockId
  937. }
  938. if o.Amount != nil {
  939. ret.Amount = new(int64)
  940. *ret.Amount = *o.Amount
  941. }
  942. if o.WechatpayContribute != nil {
  943. ret.WechatpayContribute = new(int64)
  944. *ret.WechatpayContribute = *o.WechatpayContribute
  945. }
  946. if o.MerchantContribute != nil {
  947. ret.MerchantContribute = new(int64)
  948. *ret.MerchantContribute = *o.MerchantContribute
  949. }
  950. if o.OtherContribute != nil {
  951. ret.OtherContribute = new(int64)
  952. *ret.OtherContribute = *o.OtherContribute
  953. }
  954. if o.Currency != nil {
  955. ret.Currency = new(string)
  956. *ret.Currency = *o.Currency
  957. }
  958. return &ret
  959. }
  960. // QueryOrderAmount
  961. type QueryOrderAmount struct {
  962. // 订单总金额,单位为分,只能为整数,详见支付金额
  963. Total *int64 `json:"total"`
  964. // 符合ISO 4217标准的三位字母代码,目前只支持人民币:CNY
  965. Currency *string `json:"currency,omitempty"`
  966. // 用户实际支付金额,单位为分,只能为整数,详见支付金额
  967. PayerTotal *int64 `json:"payer_total,omitempty"`
  968. // 订单折扣
  969. DiscountTotal *int64 `json:"discount_total,omitempty"`
  970. }
  971. func (o QueryOrderAmount) MarshalJSON() ([]byte, error) {
  972. toSerialize := map[string]interface{}{}
  973. if o.Total == nil {
  974. return nil, fmt.Errorf("field `Total` is required and must be specified in QueryOrderAmount")
  975. }
  976. toSerialize["total"] = o.Total
  977. if o.Currency != nil {
  978. toSerialize["currency"] = o.Currency
  979. }
  980. if o.PayerTotal != nil {
  981. toSerialize["payer_total"] = o.PayerTotal
  982. }
  983. if o.DiscountTotal != nil {
  984. toSerialize["discount_total"] = o.DiscountTotal
  985. }
  986. return json.Marshal(toSerialize)
  987. }
  988. func (o QueryOrderAmount) String() string {
  989. var ret string
  990. if o.Total == nil {
  991. ret += "Total:<nil>, "
  992. } else {
  993. ret += fmt.Sprintf("Total:%v, ", *o.Total)
  994. }
  995. if o.Currency == nil {
  996. ret += "Currency:<nil>, "
  997. } else {
  998. ret += fmt.Sprintf("Currency:%v, ", *o.Currency)
  999. }
  1000. if o.PayerTotal == nil {
  1001. ret += "PayerTotal:<nil>, "
  1002. } else {
  1003. ret += fmt.Sprintf("PayerTotal:%v, ", *o.PayerTotal)
  1004. }
  1005. if o.DiscountTotal == nil {
  1006. ret += "DiscountTotal:<nil>"
  1007. } else {
  1008. ret += fmt.Sprintf("DiscountTotal:%v", *o.DiscountTotal)
  1009. }
  1010. return fmt.Sprintf("QueryOrderAmount{%s}", ret)
  1011. }
  1012. func (o QueryOrderAmount) Clone() *QueryOrderAmount {
  1013. ret := QueryOrderAmount{}
  1014. if o.Total != nil {
  1015. ret.Total = new(int64)
  1016. *ret.Total = *o.Total
  1017. }
  1018. if o.Currency != nil {
  1019. ret.Currency = new(string)
  1020. *ret.Currency = *o.Currency
  1021. }
  1022. if o.PayerTotal != nil {
  1023. ret.PayerTotal = new(int64)
  1024. *ret.PayerTotal = *o.PayerTotal
  1025. }
  1026. if o.DiscountTotal != nil {
  1027. ret.DiscountTotal = new(int64)
  1028. *ret.DiscountTotal = *o.DiscountTotal
  1029. }
  1030. return &ret
  1031. }
  1032. // QueryPlateServiceRequest
  1033. type QueryPlateServiceRequest struct {
  1034. // appid是商户在微信申请公众号或移动应用成功后分配的帐号ID,登录平台为mp.weixin.qq.com或open.weixin.qq.com
  1035. Appid *string `json:"appid"`
  1036. // 微信支付分配的子商户号,服务商模式下必传
  1037. SubMchid *string `json:"sub_mchid,omitempty"`
  1038. // 车牌号,仅包括省份+车牌,不包括特殊字符。
  1039. PlateNumber *string `json:"plate_number"`
  1040. // 用户在商户对应appid下的唯一标识
  1041. Openid *string `json:"openid"`
  1042. // 车牌颜色
  1043. PlateColor *PlateColor `json:"plate_color"`
  1044. }
  1045. func (o QueryPlateServiceRequest) MarshalJSON() ([]byte, error) {
  1046. toSerialize := map[string]interface{}{}
  1047. if o.Appid == nil {
  1048. return nil, fmt.Errorf("field `Appid` is required and must be specified in QueryPlateServiceRequest")
  1049. }
  1050. toSerialize["appid"] = o.Appid
  1051. if o.SubMchid != nil {
  1052. toSerialize["sub_mchid"] = o.SubMchid
  1053. }
  1054. if o.PlateNumber == nil {
  1055. return nil, fmt.Errorf("field `PlateNumber` is required and must be specified in QueryPlateServiceRequest")
  1056. }
  1057. toSerialize["plate_number"] = o.PlateNumber
  1058. if o.Openid == nil {
  1059. return nil, fmt.Errorf("field `Openid` is required and must be specified in QueryPlateServiceRequest")
  1060. }
  1061. toSerialize["openid"] = o.Openid
  1062. if o.PlateColor == nil {
  1063. return nil, fmt.Errorf("field `PlateColor` is required and must be specified in QueryPlateServiceRequest")
  1064. }
  1065. toSerialize["plate_color"] = o.PlateColor
  1066. return json.Marshal(toSerialize)
  1067. }
  1068. func (o QueryPlateServiceRequest) String() string {
  1069. var ret string
  1070. if o.Appid == nil {
  1071. ret += "Appid:<nil>, "
  1072. } else {
  1073. ret += fmt.Sprintf("Appid:%v, ", *o.Appid)
  1074. }
  1075. if o.SubMchid == nil {
  1076. ret += "SubMchid:<nil>, "
  1077. } else {
  1078. ret += fmt.Sprintf("SubMchid:%v, ", *o.SubMchid)
  1079. }
  1080. if o.PlateNumber == nil {
  1081. ret += "PlateNumber:<nil>, "
  1082. } else {
  1083. ret += fmt.Sprintf("PlateNumber:%v, ", *o.PlateNumber)
  1084. }
  1085. if o.Openid == nil {
  1086. ret += "Openid:<nil>, "
  1087. } else {
  1088. ret += fmt.Sprintf("Openid:%v, ", *o.Openid)
  1089. }
  1090. if o.PlateColor == nil {
  1091. ret += "PlateColor:<nil>"
  1092. } else {
  1093. ret += fmt.Sprintf("PlateColor:%v", *o.PlateColor)
  1094. }
  1095. return fmt.Sprintf("QueryPlateServiceRequest{%s}", ret)
  1096. }
  1097. func (o QueryPlateServiceRequest) Clone() *QueryPlateServiceRequest {
  1098. ret := QueryPlateServiceRequest{}
  1099. if o.Appid != nil {
  1100. ret.Appid = new(string)
  1101. *ret.Appid = *o.Appid
  1102. }
  1103. if o.SubMchid != nil {
  1104. ret.SubMchid = new(string)
  1105. *ret.SubMchid = *o.SubMchid
  1106. }
  1107. if o.PlateNumber != nil {
  1108. ret.PlateNumber = new(string)
  1109. *ret.PlateNumber = *o.PlateNumber
  1110. }
  1111. if o.Openid != nil {
  1112. ret.Openid = new(string)
  1113. *ret.Openid = *o.Openid
  1114. }
  1115. if o.PlateColor != nil {
  1116. ret.PlateColor = new(PlateColor)
  1117. *ret.PlateColor = *o.PlateColor
  1118. }
  1119. return &ret
  1120. }
  1121. // QueryTransactionRequest
  1122. type QueryTransactionRequest struct {
  1123. // 微信支付分配的子商户号,服务商模式下必传
  1124. SubMchid *string `json:"sub_mchid,omitempty"`
  1125. // 商户系统内部订单号,只能是数字、大小写字母,且在同一个商户号下唯一
  1126. OutTradeNo *string `json:"out_trade_no"`
  1127. }
  1128. func (o QueryTransactionRequest) MarshalJSON() ([]byte, error) {
  1129. toSerialize := map[string]interface{}{}
  1130. if o.SubMchid != nil {
  1131. toSerialize["sub_mchid"] = o.SubMchid
  1132. }
  1133. if o.OutTradeNo == nil {
  1134. return nil, fmt.Errorf("field `OutTradeNo` is required and must be specified in QueryTransactionRequest")
  1135. }
  1136. toSerialize["out_trade_no"] = o.OutTradeNo
  1137. return json.Marshal(toSerialize)
  1138. }
  1139. func (o QueryTransactionRequest) String() string {
  1140. var ret string
  1141. if o.SubMchid == nil {
  1142. ret += "SubMchid:<nil>, "
  1143. } else {
  1144. ret += fmt.Sprintf("SubMchid:%v, ", *o.SubMchid)
  1145. }
  1146. if o.OutTradeNo == nil {
  1147. ret += "OutTradeNo:<nil>"
  1148. } else {
  1149. ret += fmt.Sprintf("OutTradeNo:%v", *o.OutTradeNo)
  1150. }
  1151. return fmt.Sprintf("QueryTransactionRequest{%s}", ret)
  1152. }
  1153. func (o QueryTransactionRequest) Clone() *QueryTransactionRequest {
  1154. ret := QueryTransactionRequest{}
  1155. if o.SubMchid != nil {
  1156. ret.SubMchid = new(string)
  1157. *ret.SubMchid = *o.SubMchid
  1158. }
  1159. if o.OutTradeNo != nil {
  1160. ret.OutTradeNo = new(string)
  1161. *ret.OutTradeNo = *o.OutTradeNo
  1162. }
  1163. return &ret
  1164. }
  1165. // Transaction
  1166. type Transaction struct {
  1167. // appid是商户在微信申请公众号或移动应用成功后分配的帐号ID,登录平台为mp.weixin.qq.com或open.weixin.qq.com
  1168. Appid *string `json:"appid"`
  1169. // 子商户申请的公众号或移动应用appid,需要在服务商的商户平台为子商户绑定
  1170. SubAppid *string `json:"sub_appid,omitempty"`
  1171. // 微信支付分配的商户号
  1172. SpMchid *string `json:"sp_mchid"`
  1173. // 微信支付分配的子商户号
  1174. SubMchid *string `json:"sub_mchid,omitempty"`
  1175. // 商户自定义字段,用于交易账单中对扣费服务的描述。
  1176. Description *string `json:"description"`
  1177. // 订单成功创建时返回,遵循[rfc3339](https://datatracker.ietf.org/doc/html/rfc3339)标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。
  1178. CreateTime *time.Time `json:"create_time"`
  1179. // 商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一
  1180. OutTradeNo *string `json:"out_trade_no"`
  1181. // 微信支付订单号
  1182. TransactionId *string `json:"transaction_id,omitempty"`
  1183. // SUCCESS—支付成功 ACCEPTED—已接收,等待扣款 PAY_FAIL–支付失败(其他原因,如银行返回失败) REFUND—转入退款
  1184. TradeState *string `json:"trade_state"`
  1185. // 对当前订单状态的描述和下一步操作的指引
  1186. TradeStateDescription *string `json:"trade_state_description,omitempty"`
  1187. // 订单支付完成时间,遵循[rfc3339](https://datatracker.ietf.org/doc/html/rfc3339)标准格式,格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE,yyyy-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。
  1188. SuccessTime *time.Time `json:"success_time,omitempty"`
  1189. // 银行类型,采用字符串类型的银行标识。BPA:该笔订单由微信进行垫付
  1190. BankType *string `json:"bank_type,omitempty"`
  1191. // 枚举值: Y:用户已还款 N:用户未还款 注意:使用此字段前需先确认bank_type字段值为BPA以及 trade_state字段值为SUCCESS。
  1192. UserRepaid *string `json:"user_repaid,omitempty"`
  1193. // 附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用
  1194. Attach *string `json:"attach,omitempty"`
  1195. // 交易场景值,目前支持 :PARKING:车场停车场景
  1196. TradeScene *string `json:"trade_scene"`
  1197. // 返回信息中的trade_scene为PARKING,返回该场景信息
  1198. ParkingInfo *ParkingTradeScene `json:"parking_info,omitempty"`
  1199. // 支付者信息
  1200. Payer *Payer `json:"payer"`
  1201. // 订单金额信息
  1202. Amount *QueryOrderAmount `json:"amount"`
  1203. // 优惠信息
  1204. PromotionDetail []PromotionDetail `json:"promotion_detail,omitempty"`
  1205. }
  1206. func (o Transaction) MarshalJSON() ([]byte, error) {
  1207. toSerialize := map[string]interface{}{}
  1208. if o.Appid == nil {
  1209. return nil, fmt.Errorf("field `Appid` is required and must be specified in Transaction")
  1210. }
  1211. toSerialize["appid"] = o.Appid
  1212. if o.SubAppid != nil {
  1213. toSerialize["sub_appid"] = o.SubAppid
  1214. }
  1215. if o.SpMchid == nil {
  1216. return nil, fmt.Errorf("field `SpMchid` is required and must be specified in Transaction")
  1217. }
  1218. toSerialize["sp_mchid"] = o.SpMchid
  1219. if o.SubMchid != nil {
  1220. toSerialize["sub_mchid"] = o.SubMchid
  1221. }
  1222. if o.Description == nil {
  1223. return nil, fmt.Errorf("field `Description` is required and must be specified in Transaction")
  1224. }
  1225. toSerialize["description"] = o.Description
  1226. if o.CreateTime == nil {
  1227. return nil, fmt.Errorf("field `CreateTime` is required and must be specified in Transaction")
  1228. }
  1229. toSerialize["create_time"] = o.CreateTime.Format(time.RFC3339)
  1230. if o.OutTradeNo == nil {
  1231. return nil, fmt.Errorf("field `OutTradeNo` is required and must be specified in Transaction")
  1232. }
  1233. toSerialize["out_trade_no"] = o.OutTradeNo
  1234. if o.TransactionId != nil {
  1235. toSerialize["transaction_id"] = o.TransactionId
  1236. }
  1237. if o.TradeState == nil {
  1238. return nil, fmt.Errorf("field `TradeState` is required and must be specified in Transaction")
  1239. }
  1240. toSerialize["trade_state"] = o.TradeState
  1241. if o.TradeStateDescription != nil {
  1242. toSerialize["trade_state_description"] = o.TradeStateDescription
  1243. }
  1244. if o.SuccessTime != nil {
  1245. toSerialize["success_time"] = o.SuccessTime.Format(time.RFC3339)
  1246. }
  1247. if o.BankType != nil {
  1248. toSerialize["bank_type"] = o.BankType
  1249. }
  1250. if o.UserRepaid != nil {
  1251. toSerialize["user_repaid"] = o.UserRepaid
  1252. }
  1253. if o.Attach != nil {
  1254. toSerialize["attach"] = o.Attach
  1255. }
  1256. if o.TradeScene == nil {
  1257. return nil, fmt.Errorf("field `TradeScene` is required and must be specified in Transaction")
  1258. }
  1259. toSerialize["trade_scene"] = o.TradeScene
  1260. if o.ParkingInfo != nil {
  1261. toSerialize["parking_info"] = o.ParkingInfo
  1262. }
  1263. if o.Payer == nil {
  1264. return nil, fmt.Errorf("field `Payer` is required and must be specified in Transaction")
  1265. }
  1266. toSerialize["payer"] = o.Payer
  1267. if o.Amount == nil {
  1268. return nil, fmt.Errorf("field `Amount` is required and must be specified in Transaction")
  1269. }
  1270. toSerialize["amount"] = o.Amount
  1271. if o.PromotionDetail != nil {
  1272. toSerialize["promotion_detail"] = o.PromotionDetail
  1273. }
  1274. return json.Marshal(toSerialize)
  1275. }
  1276. func (o Transaction) String() string {
  1277. var ret string
  1278. if o.Appid == nil {
  1279. ret += "Appid:<nil>, "
  1280. } else {
  1281. ret += fmt.Sprintf("Appid:%v, ", *o.Appid)
  1282. }
  1283. if o.SubAppid == nil {
  1284. ret += "SubAppid:<nil>, "
  1285. } else {
  1286. ret += fmt.Sprintf("SubAppid:%v, ", *o.SubAppid)
  1287. }
  1288. if o.SpMchid == nil {
  1289. ret += "SpMchid:<nil>, "
  1290. } else {
  1291. ret += fmt.Sprintf("SpMchid:%v, ", *o.SpMchid)
  1292. }
  1293. if o.SubMchid == nil {
  1294. ret += "SubMchid:<nil>, "
  1295. } else {
  1296. ret += fmt.Sprintf("SubMchid:%v, ", *o.SubMchid)
  1297. }
  1298. if o.Description == nil {
  1299. ret += "Description:<nil>, "
  1300. } else {
  1301. ret += fmt.Sprintf("Description:%v, ", *o.Description)
  1302. }
  1303. if o.CreateTime == nil {
  1304. ret += "CreateTime:<nil>, "
  1305. } else {
  1306. ret += fmt.Sprintf("CreateTime:%v, ", *o.CreateTime)
  1307. }
  1308. if o.OutTradeNo == nil {
  1309. ret += "OutTradeNo:<nil>, "
  1310. } else {
  1311. ret += fmt.Sprintf("OutTradeNo:%v, ", *o.OutTradeNo)
  1312. }
  1313. if o.TransactionId == nil {
  1314. ret += "TransactionId:<nil>, "
  1315. } else {
  1316. ret += fmt.Sprintf("TransactionId:%v, ", *o.TransactionId)
  1317. }
  1318. if o.TradeState == nil {
  1319. ret += "TradeState:<nil>, "
  1320. } else {
  1321. ret += fmt.Sprintf("TradeState:%v, ", *o.TradeState)
  1322. }
  1323. if o.TradeStateDescription == nil {
  1324. ret += "TradeStateDescription:<nil>, "
  1325. } else {
  1326. ret += fmt.Sprintf("TradeStateDescription:%v, ", *o.TradeStateDescription)
  1327. }
  1328. if o.SuccessTime == nil {
  1329. ret += "SuccessTime:<nil>, "
  1330. } else {
  1331. ret += fmt.Sprintf("SuccessTime:%v, ", *o.SuccessTime)
  1332. }
  1333. if o.BankType == nil {
  1334. ret += "BankType:<nil>, "
  1335. } else {
  1336. ret += fmt.Sprintf("BankType:%v, ", *o.BankType)
  1337. }
  1338. if o.UserRepaid == nil {
  1339. ret += "UserRepaid:<nil>, "
  1340. } else {
  1341. ret += fmt.Sprintf("UserRepaid:%v, ", *o.UserRepaid)
  1342. }
  1343. if o.Attach == nil {
  1344. ret += "Attach:<nil>, "
  1345. } else {
  1346. ret += fmt.Sprintf("Attach:%v, ", *o.Attach)
  1347. }
  1348. if o.TradeScene == nil {
  1349. ret += "TradeScene:<nil>, "
  1350. } else {
  1351. ret += fmt.Sprintf("TradeScene:%v, ", *o.TradeScene)
  1352. }
  1353. ret += fmt.Sprintf("ParkingInfo:%v, ", o.ParkingInfo)
  1354. ret += fmt.Sprintf("Payer:%v, ", o.Payer)
  1355. ret += fmt.Sprintf("Amount:%v, ", o.Amount)
  1356. ret += fmt.Sprintf("PromotionDetail:%v", o.PromotionDetail)
  1357. return fmt.Sprintf("Transaction{%s}", ret)
  1358. }
  1359. func (o Transaction) Clone() *Transaction {
  1360. ret := Transaction{}
  1361. if o.Appid != nil {
  1362. ret.Appid = new(string)
  1363. *ret.Appid = *o.Appid
  1364. }
  1365. if o.SubAppid != nil {
  1366. ret.SubAppid = new(string)
  1367. *ret.SubAppid = *o.SubAppid
  1368. }
  1369. if o.SpMchid != nil {
  1370. ret.SpMchid = new(string)
  1371. *ret.SpMchid = *o.SpMchid
  1372. }
  1373. if o.SubMchid != nil {
  1374. ret.SubMchid = new(string)
  1375. *ret.SubMchid = *o.SubMchid
  1376. }
  1377. if o.Description != nil {
  1378. ret.Description = new(string)
  1379. *ret.Description = *o.Description
  1380. }
  1381. if o.CreateTime != nil {
  1382. ret.CreateTime = new(time.Time)
  1383. *ret.CreateTime = *o.CreateTime
  1384. }
  1385. if o.OutTradeNo != nil {
  1386. ret.OutTradeNo = new(string)
  1387. *ret.OutTradeNo = *o.OutTradeNo
  1388. }
  1389. if o.TransactionId != nil {
  1390. ret.TransactionId = new(string)
  1391. *ret.TransactionId = *o.TransactionId
  1392. }
  1393. if o.TradeState != nil {
  1394. ret.TradeState = new(string)
  1395. *ret.TradeState = *o.TradeState
  1396. }
  1397. if o.TradeStateDescription != nil {
  1398. ret.TradeStateDescription = new(string)
  1399. *ret.TradeStateDescription = *o.TradeStateDescription
  1400. }
  1401. if o.SuccessTime != nil {
  1402. ret.SuccessTime = new(time.Time)
  1403. *ret.SuccessTime = *o.SuccessTime
  1404. }
  1405. if o.BankType != nil {
  1406. ret.BankType = new(string)
  1407. *ret.BankType = *o.BankType
  1408. }
  1409. if o.UserRepaid != nil {
  1410. ret.UserRepaid = new(string)
  1411. *ret.UserRepaid = *o.UserRepaid
  1412. }
  1413. if o.Attach != nil {
  1414. ret.Attach = new(string)
  1415. *ret.Attach = *o.Attach
  1416. }
  1417. if o.TradeScene != nil {
  1418. ret.TradeScene = new(string)
  1419. *ret.TradeScene = *o.TradeScene
  1420. }
  1421. if o.ParkingInfo != nil {
  1422. ret.ParkingInfo = o.ParkingInfo.Clone()
  1423. }
  1424. if o.Payer != nil {
  1425. ret.Payer = o.Payer.Clone()
  1426. }
  1427. if o.Amount != nil {
  1428. ret.Amount = o.Amount.Clone()
  1429. }
  1430. if o.PromotionDetail != nil {
  1431. ret.PromotionDetail = make([]PromotionDetail, len(o.PromotionDetail))
  1432. for i, item := range o.PromotionDetail {
  1433. ret.PromotionDetail[i] = *item.Clone()
  1434. }
  1435. }
  1436. return &ret
  1437. }