api_coupon.go 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. // Copyright 2021 Tencent Inc. All rights reserved.
  2. //
  3. // 营销商家券对外API
  4. //
  5. // No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
  6. //
  7. // API version: 0.0.11
  8. // Code generated by WechatPay APIv3 Generator based on [OpenAPI Generator](https://openapi-generator.tech); DO NOT EDIT.
  9. package merchantexclusivecoupon
  10. import (
  11. "context"
  12. "fmt"
  13. nethttp "net/http"
  14. neturl "net/url"
  15. "strings"
  16. "git.nanodreamtech.com/sg/wechatpay-go/core"
  17. "git.nanodreamtech.com/sg/wechatpay-go/core/consts"
  18. "git.nanodreamtech.com/sg/wechatpay-go/services"
  19. )
  20. type CouponApiService services.Service
  21. // AssociateTradeInfo 关联订单信息
  22. //
  23. // 适用场景:将有效态(未核销)的商家券与订单信息关联,用于后续参与摇奖&返佣激励等操作的统计
  24. // 适用对象:如普通服务商、普通直连商户
  25. // 频率:500QPS
  26. // 前置条件:已为用户发券,且调用查询接口查到用户的券code、批次ID等信息
  27. // 注意事项:仅对有关联订单需求的券进行该操作
  28. // 是否支持幂等:是
  29. func (a *CouponApiService) AssociateTradeInfo(ctx context.Context, req AssociateTradeInfoRequest) (resp *AssociateTradeInfoResponse, result *core.APIResult, err error) {
  30. var (
  31. localVarHTTPMethod = nethttp.MethodPost
  32. localVarPostBody interface{}
  33. localVarQueryParams neturl.Values
  34. localVarHeaderParams = nethttp.Header{}
  35. )
  36. localVarPath := consts.WechatPayAPIServer + "/v3/marketing/busifavor/coupons/associate"
  37. // Make sure All Required Params are properly set
  38. // Setup Body Params
  39. localVarPostBody = req
  40. // Determine the Content-Type Header
  41. localVarHTTPContentTypes := []string{"application/json"}
  42. // Setup Content-Type
  43. localVarHTTPContentType := core.SelectHeaderContentType(localVarHTTPContentTypes)
  44. // Perform Http Request
  45. result, err = a.Client.Request(ctx, localVarHTTPMethod, localVarPath, localVarHeaderParams, localVarQueryParams, localVarPostBody, localVarHTTPContentType)
  46. if err != nil {
  47. return nil, result, err
  48. }
  49. // Extract AssociateTradeInfoResponse from Http Response
  50. resp = new(AssociateTradeInfoResponse)
  51. err = core.UnMarshalResponse(result.Response, resp)
  52. if err != nil {
  53. return nil, result, err
  54. }
  55. return resp, result, nil
  56. }
  57. // DeactivateCoupon 使券失效
  58. //
  59. // 失效一张券,券被失效后无法再被核销
  60. func (a *CouponApiService) DeactivateCoupon(ctx context.Context, req DeactivateCouponRequest) (resp *DeactivateCouponResponse, result *core.APIResult, err error) {
  61. var (
  62. localVarHTTPMethod = nethttp.MethodPost
  63. localVarPostBody interface{}
  64. localVarQueryParams neturl.Values
  65. localVarHeaderParams = nethttp.Header{}
  66. )
  67. localVarPath := consts.WechatPayAPIServer + "/v3/marketing/busifavor/coupons/deactivate"
  68. // Make sure All Required Params are properly set
  69. // Setup Body Params
  70. localVarPostBody = req
  71. // Determine the Content-Type Header
  72. localVarHTTPContentTypes := []string{"application/json"}
  73. // Setup Content-Type
  74. localVarHTTPContentType := core.SelectHeaderContentType(localVarHTTPContentTypes)
  75. // Perform Http Request
  76. result, err = a.Client.Request(ctx, localVarHTTPMethod, localVarPath, localVarHeaderParams, localVarQueryParams, localVarPostBody, localVarHTTPContentType)
  77. if err != nil {
  78. return nil, result, err
  79. }
  80. // Extract DeactivateCouponResponse from Http Response
  81. resp = new(DeactivateCouponResponse)
  82. err = core.UnMarshalResponse(result.Response, resp)
  83. if err != nil {
  84. return nil, result, err
  85. }
  86. return resp, result, nil
  87. }
  88. // DisassociateTradeInfo 取消关联订单信息
  89. //
  90. // 适用场景:取消商家券与订单信息的关联关系
  91. // 适用对象:如普通服务商、普通直连商户
  92. // 频率:500QPS
  93. // 前置条件:已调用关联接口为券创建过关联关系
  94. // 注意事项:建议取消前调用查询接口,查到当前关联的商户单号并确认后,再进行取消操作
  95. // 是否支持幂等:是
  96. func (a *CouponApiService) DisassociateTradeInfo(ctx context.Context, req DisassociateTradeInfoRequest) (resp *DisassociateTradeInfoResponse, result *core.APIResult, err error) {
  97. var (
  98. localVarHTTPMethod = nethttp.MethodPost
  99. localVarPostBody interface{}
  100. localVarQueryParams neturl.Values
  101. localVarHeaderParams = nethttp.Header{}
  102. )
  103. localVarPath := consts.WechatPayAPIServer + "/v3/marketing/busifavor/coupons/disassociate"
  104. // Make sure All Required Params are properly set
  105. // Setup Body Params
  106. localVarPostBody = req
  107. // Determine the Content-Type Header
  108. localVarHTTPContentTypes := []string{"application/json"}
  109. // Setup Content-Type
  110. localVarHTTPContentType := core.SelectHeaderContentType(localVarHTTPContentTypes)
  111. // Perform Http Request
  112. result, err = a.Client.Request(ctx, localVarHTTPMethod, localVarPath, localVarHeaderParams, localVarQueryParams, localVarPostBody, localVarHTTPContentType)
  113. if err != nil {
  114. return nil, result, err
  115. }
  116. // Extract DisassociateTradeInfoResponse from Http Response
  117. resp = new(DisassociateTradeInfoResponse)
  118. err = core.UnMarshalResponse(result.Response, resp)
  119. if err != nil {
  120. return nil, result, err
  121. }
  122. return resp, result, nil
  123. }
  124. // ListCouponsByFilter 根据过滤条件查询用户的券
  125. //
  126. // 商户自定义筛选条件(如创建商户号、归属商户号、发放商户号等),查询指定微信用户卡包中满足对应条件的所有商家券信息。
  127. func (a *CouponApiService) ListCouponsByFilter(ctx context.Context, req ListCouponsByFilterRequest) (resp *CouponListResponse, result *core.APIResult, err error) {
  128. var (
  129. localVarHTTPMethod = nethttp.MethodGet
  130. localVarPostBody interface{}
  131. localVarQueryParams neturl.Values
  132. localVarHeaderParams = nethttp.Header{}
  133. )
  134. // Make sure Path Params are properly set
  135. if req.Openid == nil {
  136. return nil, nil, fmt.Errorf("field `Openid` is required and must be specified in ListCouponsByFilterRequest")
  137. }
  138. localVarPath := consts.WechatPayAPIServer + "/v3/marketing/busifavor/users/{openid}/coupons"
  139. // Build Path with Path Params
  140. localVarPath = strings.Replace(localVarPath, "{"+"openid"+"}", neturl.PathEscape(core.ParameterToString(*req.Openid, "")), -1)
  141. // Make sure All Required Params are properly set
  142. if req.Appid == nil {
  143. return nil, nil, fmt.Errorf("field `Appid` is required and must be specified in ListCouponsByFilterRequest")
  144. }
  145. // Setup Query Params
  146. localVarQueryParams = neturl.Values{}
  147. localVarQueryParams.Add("appid", core.ParameterToString(*req.Appid, ""))
  148. if req.StockId != nil {
  149. localVarQueryParams.Add("stock_id", core.ParameterToString(*req.StockId, ""))
  150. }
  151. if req.CreatorMerchant != nil {
  152. localVarQueryParams.Add("creator_merchant", core.ParameterToString(*req.CreatorMerchant, ""))
  153. }
  154. if req.BelongMerchant != nil {
  155. localVarQueryParams.Add("belong_merchant", core.ParameterToString(*req.BelongMerchant, ""))
  156. }
  157. if req.SenderMerchant != nil {
  158. localVarQueryParams.Add("sender_merchant", core.ParameterToString(*req.SenderMerchant, ""))
  159. }
  160. if req.Offset != nil {
  161. localVarQueryParams.Add("offset", core.ParameterToString(*req.Offset, ""))
  162. }
  163. if req.Limit != nil {
  164. localVarQueryParams.Add("limit", core.ParameterToString(*req.Limit, ""))
  165. }
  166. if req.CouponState != nil {
  167. localVarQueryParams.Add("coupon_state", core.ParameterToString(*req.CouponState, ""))
  168. }
  169. // Determine the Content-Type Header
  170. localVarHTTPContentTypes := []string{}
  171. // Setup Content-Type
  172. localVarHTTPContentType := core.SelectHeaderContentType(localVarHTTPContentTypes)
  173. // Perform Http Request
  174. result, err = a.Client.Request(ctx, localVarHTTPMethod, localVarPath, localVarHeaderParams, localVarQueryParams, localVarPostBody, localVarHTTPContentType)
  175. if err != nil {
  176. return nil, result, err
  177. }
  178. // Extract CouponListResponse from Http Response
  179. resp = new(CouponListResponse)
  180. err = core.UnMarshalResponse(result.Response, resp)
  181. if err != nil {
  182. return nil, result, err
  183. }
  184. return resp, result, nil
  185. }
  186. // QueryCoupon 查询用户券详情
  187. //
  188. // 商户可通过该接口查询微信用户卡包中某一张商家券的详情信息。
  189. func (a *CouponApiService) QueryCoupon(ctx context.Context, req QueryCouponRequest) (resp *CouponEntity, result *core.APIResult, err error) {
  190. var (
  191. localVarHTTPMethod = nethttp.MethodGet
  192. localVarPostBody interface{}
  193. localVarQueryParams neturl.Values
  194. localVarHeaderParams = nethttp.Header{}
  195. )
  196. // Make sure Path Params are properly set
  197. if req.CouponCode == nil {
  198. return nil, nil, fmt.Errorf("field `CouponCode` is required and must be specified in QueryCouponRequest")
  199. }
  200. if req.Appid == nil {
  201. return nil, nil, fmt.Errorf("field `Appid` is required and must be specified in QueryCouponRequest")
  202. }
  203. if req.Openid == nil {
  204. return nil, nil, fmt.Errorf("field `Openid` is required and must be specified in QueryCouponRequest")
  205. }
  206. localVarPath := consts.WechatPayAPIServer + "/v3/marketing/busifavor/users/{openid}/coupons/{coupon_code}/appids/{appid}"
  207. // Build Path with Path Params
  208. localVarPath = strings.Replace(localVarPath, "{"+"coupon_code"+"}", neturl.PathEscape(core.ParameterToString(*req.CouponCode, "")), -1)
  209. localVarPath = strings.Replace(localVarPath, "{"+"appid"+"}", neturl.PathEscape(core.ParameterToString(*req.Appid, "")), -1)
  210. localVarPath = strings.Replace(localVarPath, "{"+"openid"+"}", neturl.PathEscape(core.ParameterToString(*req.Openid, "")), -1)
  211. // Make sure All Required Params are properly set
  212. // Determine the Content-Type Header
  213. localVarHTTPContentTypes := []string{}
  214. // Setup Content-Type
  215. localVarHTTPContentType := core.SelectHeaderContentType(localVarHTTPContentTypes)
  216. // Perform Http Request
  217. result, err = a.Client.Request(ctx, localVarHTTPMethod, localVarPath, localVarHeaderParams, localVarQueryParams, localVarPostBody, localVarHTTPContentType)
  218. if err != nil {
  219. return nil, result, err
  220. }
  221. // Extract CouponEntity from Http Response
  222. resp = new(CouponEntity)
  223. err = core.UnMarshalResponse(result.Response, resp)
  224. if err != nil {
  225. return nil, result, err
  226. }
  227. return resp, result, nil
  228. }
  229. // ReturnCoupon 申请退券
  230. //
  231. // 商户可以在退款之后调用退券API,调用了该接口后,券在用户卡包内正常展示,用户可在有效期内正常使用该优惠券。
  232. // 若券过期状态下退款,可不用调用该退券API。
  233. // 前置条件:券的状态为USED
  234. func (a *CouponApiService) ReturnCoupon(ctx context.Context, req ReturnCouponRequest) (resp *ReturnCouponResponse, result *core.APIResult, err error) {
  235. var (
  236. localVarHTTPMethod = nethttp.MethodPost
  237. localVarPostBody interface{}
  238. localVarQueryParams neturl.Values
  239. localVarHeaderParams = nethttp.Header{}
  240. )
  241. localVarPath := consts.WechatPayAPIServer + "/v3/marketing/busifavor/coupons/return"
  242. // Make sure All Required Params are properly set
  243. // Setup Body Params
  244. localVarPostBody = req
  245. // Determine the Content-Type Header
  246. localVarHTTPContentTypes := []string{"application/json"}
  247. // Setup Content-Type
  248. localVarHTTPContentType := core.SelectHeaderContentType(localVarHTTPContentTypes)
  249. // Perform Http Request
  250. result, err = a.Client.Request(ctx, localVarHTTPMethod, localVarPath, localVarHeaderParams, localVarQueryParams, localVarPostBody, localVarHTTPContentType)
  251. if err != nil {
  252. return nil, result, err
  253. }
  254. // Extract ReturnCouponResponse from Http Response
  255. resp = new(ReturnCouponResponse)
  256. err = core.UnMarshalResponse(result.Response, resp)
  257. if err != nil {
  258. return nil, result, err
  259. }
  260. return resp, result, nil
  261. }
  262. // SendCoupon 向用户发券
  263. //
  264. // 用于向用户发送商家券
  265. func (a *CouponApiService) SendCoupon(ctx context.Context, req SendCouponRequest) (resp *SendCouponResponse, result *core.APIResult, err error) {
  266. var (
  267. localVarHTTPMethod = nethttp.MethodPost
  268. localVarPostBody interface{}
  269. localVarQueryParams neturl.Values
  270. localVarHeaderParams = nethttp.Header{}
  271. )
  272. localVarPath := consts.WechatPayAPIServer + "/v3/marketing/busifavor/coupons/send"
  273. // Make sure All Required Params are properly set
  274. // Setup Body Params
  275. localVarPostBody = req
  276. // Determine the Content-Type Header
  277. localVarHTTPContentTypes := []string{"application/json"}
  278. // Setup Content-Type
  279. localVarHTTPContentType := core.SelectHeaderContentType(localVarHTTPContentTypes)
  280. // Perform Http Request
  281. result, err = a.Client.Request(ctx, localVarHTTPMethod, localVarPath, localVarHeaderParams, localVarQueryParams, localVarPostBody, localVarHTTPContentType)
  282. if err != nil {
  283. return nil, result, err
  284. }
  285. // Extract SendCouponResponse from Http Response
  286. resp = new(SendCouponResponse)
  287. err = core.UnMarshalResponse(result.Response, resp)
  288. if err != nil {
  289. return nil, result, err
  290. }
  291. return resp, result, nil
  292. }
  293. // SendGovCard 发放政府消费卡
  294. //
  295. // 发放政府消费卡
  296. func (a *CouponApiService) SendGovCard(ctx context.Context, req SendGovCardRequest) (resp *CouponSendGovCardResponse, result *core.APIResult, err error) {
  297. var (
  298. localVarHTTPMethod = nethttp.MethodPost
  299. localVarPostBody interface{}
  300. localVarQueryParams neturl.Values
  301. localVarHeaderParams = nethttp.Header{}
  302. )
  303. // Make sure Path Params are properly set
  304. if req.CardId == nil {
  305. return nil, nil, fmt.Errorf("field `CardId` is required and must be specified in SendGovCardRequest")
  306. }
  307. localVarPath := consts.WechatPayAPIServer + "/v3/marketing/busifavor/coupons/{card_id}/send"
  308. // Build Path with Path Params
  309. localVarPath = strings.Replace(localVarPath, "{"+"card_id"+"}", neturl.PathEscape(core.ParameterToString(*req.CardId, "")), -1)
  310. // Make sure All Required Params are properly set
  311. // Setup Body Params
  312. localVarPostBody = &CouponSendGovCardRequest{
  313. Appid: req.Appid,
  314. Openid: req.Openid,
  315. OutRequestNo: req.OutRequestNo,
  316. SendTime: req.SendTime,
  317. }
  318. // Determine the Content-Type Header
  319. localVarHTTPContentTypes := []string{"application/json"}
  320. // Setup Content-Type
  321. localVarHTTPContentType := core.SelectHeaderContentType(localVarHTTPContentTypes)
  322. // Perform Http Request
  323. result, err = a.Client.Request(ctx, localVarHTTPMethod, localVarPath, localVarHeaderParams, localVarQueryParams, localVarPostBody, localVarHTTPContentType)
  324. if err != nil {
  325. return nil, result, err
  326. }
  327. // Extract CouponSendGovCardResponse from Http Response
  328. resp = new(CouponSendGovCardResponse)
  329. err = core.UnMarshalResponse(result.Response, resp)
  330. if err != nil {
  331. return nil, result, err
  332. }
  333. return resp, result, nil
  334. }
  335. // UseCoupon 核销用户的券
  336. //
  337. // 在用户满足优惠门槛后,商户可通过该接口核销用户微信卡包中具体某一张商家券。
  338. // 核销频率:500QPS
  339. func (a *CouponApiService) UseCoupon(ctx context.Context, req UseCouponRequest) (resp *UseCouponResponse, result *core.APIResult, err error) {
  340. var (
  341. localVarHTTPMethod = nethttp.MethodPost
  342. localVarPostBody interface{}
  343. localVarQueryParams neturl.Values
  344. localVarHeaderParams = nethttp.Header{}
  345. )
  346. localVarPath := consts.WechatPayAPIServer + "/v3/marketing/busifavor/coupons/use"
  347. // Make sure All Required Params are properly set
  348. // Setup Body Params
  349. localVarPostBody = req
  350. // Determine the Content-Type Header
  351. localVarHTTPContentTypes := []string{"application/json"}
  352. // Setup Content-Type
  353. localVarHTTPContentType := core.SelectHeaderContentType(localVarHTTPContentTypes)
  354. // Perform Http Request
  355. result, err = a.Client.Request(ctx, localVarHTTPMethod, localVarPath, localVarHeaderParams, localVarQueryParams, localVarPostBody, localVarHTTPContentType)
  356. if err != nil {
  357. return nil, result, err
  358. }
  359. // Extract UseCouponResponse from Http Response
  360. resp = new(UseCouponResponse)
  361. err = core.UnMarshalResponse(result.Response, resp)
  362. if err != nil {
  363. return nil, result, err
  364. }
  365. return resp, result, nil
  366. }