From ec612b64b8daf46822d2ab344fae98efc314415d Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Mon, 13 Oct 2025 20:17:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(tenpayv3):=20=E6=96=B0=E5=A2=9E=E6=91=87?= =?UTF-8?q?=E4=B8=80=E6=91=87=E6=9C=89=E4=BC=98=E6=83=A0=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=88=B8=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/WechatTenpayV3/Basic_ModelDefinition.md | 59 ++ ...MarketingPartnerProductCouponExtensions.cs | 580 ++++++++++++++++++ ...ateMarketingPartnerProductCouponRequest.cs | 293 +++++++++ ...teMarketingPartnerProductCouponResponse.cs | 22 + ...ateMarketingPartnerProductCouponRequest.cs | 36 ++ ...teMarketingPartnerProductCouponResponse.cs | 9 + ...erProductCouponByProductCouponIdRequest.cs | 22 + ...rProductCouponByProductCouponIdResponse.cs | 311 ++++++++++ ...PartnerProductCouponNotifyConfigRequest.cs | 9 + ...artnerProductCouponNotifyConfigResponse.cs | 26 + ...PartnerProductCouponNotifyConfigRequest.cs | 15 + ...artnerProductCouponNotifyConfigResponse.cs | 11 + ...rketingPartnerProductCouponStockRequest.cs | 556 +++++++++++++++++ ...ketingPartnerProductCouponStockResponse.cs | 9 + ...rketingPartnerProductCouponStockRequest.cs | 43 ++ ...ketingPartnerProductCouponStockResponse.cs | 9 + ...rtnerProductCouponStockByStockIdRequest.cs | 29 + ...tnerProductCouponStockByStockIdResponse.cs | 173 ++++++ ...ketingPartnerProductCouponStocksRequest.cs | 43 ++ ...etingPartnerProductCouponStocksResponse.cs | 529 ++++++++++++++++ ...artnerProductCouponStockToStoresRequest.cs | 51 ++ ...rtnerProductCouponStockToStoresResponse.cs | 56 ++ ...tnerProductCouponStockFromStoresRequest.cs | 45 ++ ...nerProductCouponStockFromStoresResponse.cs | 36 ++ ...oductCouponStockAssociatedStoresRequest.cs | 43 ++ ...ductCouponStockAssociatedStoresResponse.cs | 42 ++ ...gPartnerProductCouponStockBudgetRequest.cs | 71 +++ ...PartnerProductCouponStockBudgetResponse.cs | 9 + ...rketingPartnerProductCouponStockRequest.cs | 86 +++ ...ketingPartnerProductCouponStockResponse.cs | 9 + ...nerProductCouponStockCouponCodesRequest.cs | 45 ++ ...erProductCouponStockCouponCodesResponse.cs | 70 +++ ...ateMarketingPartnerProductCouponRequest.cs | 43 ++ ...teMarketingPartnerProductCouponResponse.cs | 9 + ...ngPartnerProductCouponMediaImageRequest.cs | 38 ++ ...gPartnerProductCouponMediaImageResponse.cs | 15 + ...ngPartnerProductCouponUserCouponRequest.cs | 57 ++ ...gPartnerProductCouponUserCouponResponse.cs | 9 + ...ngPartnerProductCouponUserCouponRequest.cs | 64 ++ ...gPartnerProductCouponUserCouponResponse.cs | 9 + ...ductCouponUserCouponByCouponCodeRequest.cs | 50 ++ ...uctCouponUserCouponByCouponCodeResponse.cs | 183 ++++++ ...gPartnerProductCouponUserCouponsRequest.cs | 64 ++ ...PartnerProductCouponUserCouponsResponse.cs | 452 ++++++++++++++ ...ngPartnerProductCouponUserCouponRequest.cs | 64 ++ ...gPartnerProductCouponUserCouponResponse.cs | 9 + ...ngPartnerProductCouponUserCouponRequest.cs | 106 ++++ ...gPartnerProductCouponUserCouponResponse.cs | 9 + ...ngPartnerProductCouponUserCouponRequest.cs | 116 ++++ ...gPartnerProductCouponUserCouponResponse.cs | 9 + ...eMarketingPartnerProductCouponRequest.json | 83 +++ ...MarketingPartnerProductCouponResponse.json | 96 +++ ...eMarketingPartnerProductCouponRequest.json | 5 + ...MarketingPartnerProductCouponResponse.json | 53 ++ ...roductCouponByProductCouponIdResponse.json | 53 ++ ...tnerProductCouponNotifyConfigResponse.json | 4 + ...rtnerProductCouponNotifyConfigRequest.json | 3 + ...tnerProductCouponNotifyConfigResponse.json | 4 + ...etingPartnerProductCouponStockRequest.json | 129 ++++ ...tingPartnerProductCouponStockResponse.json | 140 +++++ ...etingPartnerProductCouponStockRequest.json | 5 + ...tingPartnerProductCouponStockResponse.json | 140 +++++ ...erProductCouponStockByStockIdResponse.json | 140 +++++ ...ingPartnerProductCouponStocksResponse.json | 146 +++++ ...tnerProductCouponStockToStoresRequest.json | 8 + ...nerProductCouponStockToStoresResponse.json | 15 + ...erProductCouponStockFromStoresRequest.json | 8 + ...rProductCouponStockFromStoresResponse.json | 15 + ...ctCouponStockAssociatedStoresResponse.json | 9 + ...artnerProductCouponStockBudgetRequest.json | 9 + ...rtnerProductCouponStockBudgetResponse.json | 140 +++++ ...etingPartnerProductCouponStockRequest.json | 41 ++ ...tingPartnerProductCouponStockResponse.json | 140 +++++ ...rProductCouponStockCouponCodesRequest.json | 7 + ...ProductCouponStockCouponCodesResponse.json | 19 + ...eMarketingPartnerProductCouponRequest.json | 29 + ...MarketingPartnerProductCouponResponse.json | 53 ++ ...PartnerProductCouponMediaImageRequest.json | 4 + ...artnerProductCouponMediaImageResponse.json | 3 + ...PartnerProductCouponUserCouponRequest.json | 7 + ...artnerProductCouponUserCouponResponse.json | 252 ++++++++ ...PartnerProductCouponUserCouponRequest.json | 8 + ...artnerProductCouponUserCouponResponse.json | 252 ++++++++ ...tCouponUserCouponByCouponCodeResponse.json | 252 ++++++++ ...rtnerProductCouponUserCouponsResponse.json | 258 ++++++++ ...PartnerProductCouponUserCouponRequest.json | 8 + ...artnerProductCouponUserCouponResponse.json | 252 ++++++++ ...PartnerProductCouponUserCouponRequest.json | 17 + ...artnerProductCouponUserCouponResponse.json | 252 ++++++++ ...PartnerProductCouponUserCouponRequest.json | 15 + ...artnerProductCouponUserCouponResponse.json | 252 ++++++++ 91 files changed, 7979 insertions(+) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMarketingPartnerProductCouponExtensions.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/GetMarketingPartnerProductCouponByProductCouponIdRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/GetMarketingPartnerProductCouponByProductCouponIdResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/GetMarketingPartnerProductCouponNotifyConfigRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/GetMarketingPartnerProductCouponNotifyConfigResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/GetMarketingPartnerProductCouponStockByStockIdRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/GetMarketingPartnerProductCouponStockByStockIdResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/QueryMarketingPartnerProductCouponStocksRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/QueryMarketingPartnerProductCouponStocksResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/QueryMarketingPartnerProductCouponStockAssociatedStoresRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/QueryMarketingPartnerProductCouponStockAssociatedStoresResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/GetMarketingPartnerProductCouponUserCouponByCouponCodeRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/GetMarketingPartnerProductCouponUserCouponByCouponCodeResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/QueryMarketingPartnerProductCouponUserCouponsRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/QueryMarketingPartnerProductCouponUserCouponsResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/GetMarketingPartnerProductCouponByProductCouponIdResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/GetMarketingPartnerProductCouponNotifyConfigResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/GetMarketingPartnerProductCouponStockByStockIdResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/QueryMarketingPartnerProductCouponStocksResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/QueryMarketingPartnerProductCouponStockAssociatedStoresResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/GetMarketingPartnerProductCouponUserCouponByCouponCodeResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/QueryMarketingPartnerProductCouponUserCouponsResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponResponse.json diff --git a/docs/WechatTenpayV3/Basic_ModelDefinition.md b/docs/WechatTenpayV3/Basic_ModelDefinition.md index 5d1efab1..2167358f 100644 --- a/docs/WechatTenpayV3/Basic_ModelDefinition.md +++ b/docs/WechatTenpayV3/Basic_ModelDefinition.md @@ -52,6 +52,7 @@ | √ | 经营能力:还款支付 | 合作伙伴 | | | √ | 运营工具:代金券 | 直连商户 & 合作伙伴 | | | √ | 运营工具:商家券 | 直连商户 & 合作伙伴 | | +| √ | 运营工具:商品券 | 合作伙伴 | | | √ | 运营工具:消费金 | 直连商户 | | | √ | 运营工具:委托营销 | 直连商户 & 合作伙伴 | | | √ | 运营工具:支付有礼 | 直连商户 & 合作伙伴 | | @@ -1229,6 +1230,64 @@ - 向用户发放商品券:`SendMarketingBusifavorProductCoupon` + - 商品券(摇一摇有优惠) + + - 商品券管理 + + - 创建商品券:`CreateMarketingPartnerProductCoupon` + + - 修改商品券:`UpdateMarketingPartnerProductCoupon` + + - 查询商品券:`GetMarketingPartnerProductCouponByProductCouponId` + + - 失效商品券:`DeactivateMarketingPartnerProductCoupon` + + - 商户券回调通知配置 + + - 获取商品券事件通知地址:`GetMarketingPartnerProductCouponNotifyConfig` + + - 设置商品券事件通知地址:`UpdateMarketingPartnerProductCouponNotifyConfig` + + - 商品券批次管理 + + - 添加商品券批次:`CreateMarketingPartnerProductCouponStock` + + - 查询商品券批次列表:`QueryMarketingPartnerProductCouponStocks` + + - 查询商品券指定批次:`GetMarketingPartnerProductCouponStockByStockId` + + - 修改商品券批次:`UpdateMarketingPartnerProductCouponStock` + + - 修改商品券批次发放预算:`UpdateMarketingPartnerProductCouponStockBudget` + + - 失效商品券批次:`DeactivateMarketingPartnerProductCouponStock` + + - 批次关联门店:`AssociateMarketingPartnerProductCouponStockToStores` + + - 查询批次关联门店列表:`QueryMarketingPartnerProductCouponStockAssociatedStores` + + - 批次取消关联门店:`DisassociateMarketingPartnerProductCouponStockFromStores` + + - 预上传券 Code:`UploadMarketingPartnerProductCouponStockCouponCodes` + + - 用户商品券管理 + + - 向用户发放商品券:`SendMarketingPartnerProductCouponUserCoupon` + + - 确认发放用户商品券:`ConfirmMarketingPartnerProductCouponUserCoupon` + + - 查询用户商品券详情:`GetMarketingPartnerProductCouponUserCouponByCouponCode` + + - 指定券状态查询用户商品券列表:`QueryMarketingPartnerProductCouponUserCoupons` + + - 核销用户商品券:`UseMarketingPartnerProductCouponUserCoupon` + + - 失效用户商品券:`DeactivateMarketingPartnerProductCouponUserCoupon` + + - 退券:`ReturnMarketingPartnerProductCouponUserCoupon` + + - 图片上传:`UploadMarketingPartnerProductCouponMediaImage` + - 委托营销 - 建立合作关系:`BuildMarketingPartnership` diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMarketingPartnerProductCouponExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMarketingPartnerProductCouponExtensions.cs new file mode 100644 index 00000000..cc75d79d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteMarketingPartnerProductCouponExtensions.cs @@ -0,0 +1,580 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 +{ + using SKIT.FlurlHttpClient; + using SKIT.FlurlHttpClient.Primitives; + + public static class WechatTenpayClientExecuteMarketingPartnerProductCouponExtensions + { + /// + /// 异步调用 [POST] /marketing/partner/product-coupon/product-coupons 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCreateMarketingPartnerProductCouponAsync(this WechatTenpayClient client, Models.CreateMarketingPartnerProductCouponRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "marketing", "partner", "product-coupon", "product-coupons"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /marketing/partner/product-coupon/product-coupons/{product_coupon_id} 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteGetMarketingPartnerProductCouponByProductCouponIdAsync(this WechatTenpayClient client, Models.GetMarketingPartnerProductCouponByProductCouponIdRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "marketing", "partner", "product-coupon", "product-coupons", request.ProductCouponId) + .SetQueryParam("brand_id", request.BrandId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [PATCH] /marketing/partner/product-coupon/product-coupons/{product_coupon_id} 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteUpdateMarketingPartnerProductCouponAsync(this WechatTenpayClient client, Models.UpdateMarketingPartnerProductCouponRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, new HttpMethod("PATCH"), "marketing", "partner", "product-coupon", "product-coupons", request.ProductCouponId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/deactivate 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteDeactivateMarketingPartnerProductCouponAsync(this WechatTenpayClient client, Models.DeactivateMarketingPartnerProductCouponRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "marketing", "partner", "product-coupon", "product-coupons", request.ProductCouponId, "deactivate"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /marketing/partner/product-coupon/media/upload-image 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteUploadMarketingPartnerProductCouponMediaImageAsync(this WechatTenpayClient client, Models.UploadMarketingPartnerProductCouponMediaImageRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.FileName is null) + request.FileName = Guid.NewGuid().ToString("N").ToLower() + ".png"; + + if (request.FileHash is null) + request.FileHash = EncodedString.ToHexString(Utilities.SHA256Utility.Hash(request.FileBytes)).Value!.ToLower(); + + if (request.FileContentType is null) + request.FileContentType = MimeTypes.GetMimeMapping(request.FileName!); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "marketing", "partner", "product-coupon", "media", "image-upload"); + + using var httpContent = Utilities.HttpContentBuilder.BuildWithFile(fileName: request.FileName, fileBytes: request.FileBytes, fileContentType: request.FileContentType, fileMetaJson: client.JsonSerializer.Serialize(request)); + return await client.SendFlurlRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + #region NotifyConfigs + /// + /// 异步调用 [GET] /marketing/partner/product-coupon/notify-configs 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteGetMarketingPartnerProductCouponNotifyConfigAsync(this WechatTenpayClient client, Models.GetMarketingPartnerProductCouponNotifyConfigRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "marketing", "partner", "product-coupon", "notify-configs"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /marketing/partner/product-coupon/notify-configs 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteUpdateMarketingPartnerProductCouponNotifyConfigAsync(this WechatTenpayClient client, Models.UpdateMarketingPartnerProductCouponNotifyConfigRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "marketing", "partner", "product-coupon", "notify-configs"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + + #region Stocks + /// + /// 异步调用 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCreateMarketingPartnerProductCouponStockAsync(this WechatTenpayClient client, Models.CreateMarketingPartnerProductCouponStockRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "marketing", "partner", "product-coupon", "product-coupons", request.ProductCouponId, "stocks"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteQueryMarketingPartnerProductCouponStocksAsync(this WechatTenpayClient client, Models.QueryMarketingPartnerProductCouponStocksRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "marketing", "partner", "product-coupon", "product-coupons", request.ProductCouponId, "stocks") + .SetQueryParam("brand_id", request.BrandId) + .SetQueryParam("state", request.StockState) + .SetQueryParam("page_size", request.PageSize) + .SetQueryParam("page_token", request.PageToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id} 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteGetMarketingPartnerProductCouponStockByStockIdAsync(this WechatTenpayClient client, Models.GetMarketingPartnerProductCouponStockByStockIdRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "marketing", "partner", "product-coupon", "product-coupons", request.ProductCouponId, "stocks", request.StockId) + .SetQueryParam("brand_id", request.BrandId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [PATCH] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id} 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteUpdateMarketingPartnerProductCouponStockAsync(this WechatTenpayClient client, Models.UpdateMarketingPartnerProductCouponStockRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, new HttpMethod("PATCH"), "marketing", "partner", "product-coupon", "product-coupons", request.ProductCouponId, "stocks", request.StockId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/deactivate 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteDeactivateMarketingPartnerProductCouponStockAsync(this WechatTenpayClient client, Models.DeactivateMarketingPartnerProductCouponStockRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "marketing", "partner", "product-coupon", "product-coupons", request.ProductCouponId, "stocks", request.StockId, "deactivate"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/update-budget 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteUpdateMarketingPartnerProductCouponStockBudgetAsync(this WechatTenpayClient client, Models.UpdateMarketingPartnerProductCouponStockBudgetRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "marketing", "partner", "product-coupon", "product-coupons", request.ProductCouponId, "stocks", request.StockId, "update-budget"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/upload-coupon-codes 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteUploadMarketingPartnerProductCouponStockCouponCodesAsync(this WechatTenpayClient client, Models.UploadMarketingPartnerProductCouponStockCouponCodesRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "marketing", "partner", "product-coupon", "product-coupons", request.ProductCouponId, "stocks", request.StockId, "upload-coupon-codes"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + #region /Stocks/Stores + /// + /// 异步调用 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/associate-stores 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteAssociateMarketingPartnerProductCouponStockToStoresAsync(this WechatTenpayClient client, Models.AssociateMarketingPartnerProductCouponStockToStoresRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "marketing", "partner", "product-coupon", "product-coupons", request.ProductCouponId, "stocks", request.StockId, "associate-stores"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/disassociate-stores 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteDisassociateMarketingPartnerProductCouponStockFromStoresAsync(this WechatTenpayClient client, Models.DisassociateMarketingPartnerProductCouponStockFromStoresRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "marketing", "partner", "product-coupon", "product-coupons", request.ProductCouponId, "stocks", request.StockId, "disassociate-stores"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/associated-stores 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteQueryMarketingPartnerProductCouponStockAssociatedStoresAsync(this WechatTenpayClient client, Models.QueryMarketingPartnerProductCouponStockAssociatedStoresRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "marketing", "partner", "product-coupon", "product-coupons", request.ProductCouponId, "stocks", request.StockId, "associated-stores") + .SetQueryParam("brand_id", request.BrandId) + .SetQueryParam("page_token", request.PageToken) + .SetQueryParam("page_size", request.PageSize); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + #endregion + + #region UserCoupons + /// + /// 异步调用 [POST] /marketing/partner/product-coupon/users/{openid}/coupons 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteSendMarketingPartnerProductCouponUserCouponAsync(this WechatTenpayClient client, Models.SendMarketingPartnerProductCouponUserCouponRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "marketing", "partner", "product-coupon", "users", request.OpenId, "coupons"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /marketing/partner/product-coupon/users/{openid}/coupons 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteQueryMarketingPartnerProductCouponUserCouponsAsync(this WechatTenpayClient client, Models.QueryMarketingPartnerProductCouponUserCouponsRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "marketing", "partner", "product-coupon", "users", request.OpenId, "coupons") + .SetQueryParam("brand_id", request.BrandId) + .SetQueryParam("product_coupon_id", request.ProductCouponId) + .SetQueryParam("stock_id", request.StockId) + .SetQueryParam("appid", request.AppId) + .SetQueryParam("coupon_state", request.CouponState) + .SetQueryParam("page_size", request.PageSize) + .SetQueryParam("page_token", request.PageToken); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /marketing/partner/product-coupon/users/{openid}/coupons/{coupon_code} 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteGetMarketingPartnerProductCouponUserCouponByCouponCodeAsync(this WechatTenpayClient client, Models.GetMarketingPartnerProductCouponUserCouponByCouponCodeRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Get, "marketing", "partner", "product-coupon", "users", request.OpenId, "coupons", request.CouponCode) + .SetQueryParam("brand_id", request.BrandId) + .SetQueryParam("product_coupon_id", request.ProductCouponId) + .SetQueryParam("stock_id", request.StockId) + .SetQueryParam("appid", request.AppId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /marketing/partner/product-coupon/users/{openid}/coupons/{coupon_code}/confirm 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteConfirmMarketingPartnerProductCouponUserCouponAsync(this WechatTenpayClient client, Models.ConfirmMarketingPartnerProductCouponUserCouponRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "marketing", "partner", "product-coupon", "users", request.OpenId, "coupons", request.CouponCode, "confirm"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /marketing/partner/product-coupon/users/{openid}/coupons/{coupon_code}/use 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteUseMarketingPartnerProductCouponUserCouponAsync(this WechatTenpayClient client, Models.UseMarketingPartnerProductCouponUserCouponRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "marketing", "partner", "product-coupon", "users", request.OpenId, "coupons", request.CouponCode, "use"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /marketing/partner/product-coupon/users/{openid}/coupons/{coupon_code}/deactivate 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteDeactivateMarketingPartnerProductCouponUserCouponAsync(this WechatTenpayClient client, Models.DeactivateMarketingPartnerProductCouponUserCouponRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "marketing", "partner", "product-coupon", "users", request.OpenId, "coupons", request.CouponCode, "deactivate"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /marketing/partner/product-coupon/users/{openid}/coupons/{coupon_code}/return 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteReturnMarketingPartnerProductCouponUserCouponAsync(this WechatTenpayClient client, Models.ReturnMarketingPartnerProductCouponUserCouponRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + IFlurlRequest flurlReq = client + .CreateFlurlRequest(request, HttpMethod.Post, "marketing", "partner", "product-coupon", "users", request.OpenId, "coupons", request.CouponCode, "return"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponRequest.cs new file mode 100644 index 00000000..b8b2eb0a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponRequest.cs @@ -0,0 +1,293 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons 接口的请求。 + /// + public class CreateMarketingPartnerProductCouponRequest : WechatTenpayRequest + { + public static class Types + { + public class SingleUsageInfo + { + public static class Types + { + public class NormalCoupon + { + /// + /// 获取或设置门槛金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("threshold")] + [System.Text.Json.Serialization.JsonPropertyName("threshold")] + public int Threshold { get; set; } + + /// + /// 获取或设置固定减免金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("discount_amount")] + [System.Text.Json.Serialization.JsonPropertyName("discount_amount")] + public int DiscountAmount { get; set; } + } + + public class DiscountCoupon + { + /// + /// 获取或设置门槛金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("threshold")] + [System.Text.Json.Serialization.JsonPropertyName("threshold")] + public int Threshold { get; set; } + + /// + /// 获取或设置固定减免百分比(单位:百分数)。 + /// + [Newtonsoft.Json.JsonProperty("percent_off")] + [System.Text.Json.Serialization.JsonPropertyName("percent_off")] + public int PercentOff { get; set; } + } + } + + /// + /// 获取或设置满减券使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("normal_coupon")] + [System.Text.Json.Serialization.JsonPropertyName("normal_coupon")] + public Types.NormalCoupon? NormalCoupon { get; set; } + + /// + /// 获取或设置折扣券使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("discount_coupon")] + [System.Text.Json.Serialization.JsonPropertyName("discount_coupon")] + public Types.DiscountCoupon? DiscountCoupon { get; set; } + } + + public class SequentialUsageInfo + { + /// + /// 获取或设置多次优惠规则类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get; set; } = string.Empty; + + /// + /// 获取或设置可使用次数。 + /// + [Newtonsoft.Json.JsonProperty("count")] + [System.Text.Json.Serialization.JsonPropertyName("count")] + public int Count { get; set; } + + /// + /// 获取或设置有效天数。 + /// + [Newtonsoft.Json.JsonProperty("available_days")] + [System.Text.Json.Serialization.JsonPropertyName("available_days")] + public int? AvailableDays { get; set; } + + /// + /// 获取或设置使用间隔天数。 + /// + [Newtonsoft.Json.JsonProperty("interval_days")] + [System.Text.Json.Serialization.JsonPropertyName("interval_days")] + public int? IntervalDays { get; set; } + } + + public class DisplayInfo + { + public static class Types + { + public class ComboPackage + { + public static class Types + { + public class Choice + { + /// + /// 获取或设置单品名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; + + /// + /// 获取或设置单品图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("image_url")] + [System.Text.Json.Serialization.JsonPropertyName("image_url")] + public string? ImageUrl { get; set; } + + /// + /// 获取或设置跳转小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("mini_program_appid")] + [System.Text.Json.Serialization.JsonPropertyName("mini_program_appid")] + public string? MiniProgramAppId { get; set; } + + /// + /// 获取或设置跳转小程序页面路径。 + /// + [Newtonsoft.Json.JsonProperty("mini_program_path")] + [System.Text.Json.Serialization.JsonPropertyName("mini_program_path")] + public string? MiniProgramPagePath { get; set; } + + /// + /// 获取或设置单品价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("price")] + [System.Text.Json.Serialization.JsonPropertyName("price")] + public int Price { get; set; } + + /// + /// 获取或设置单品数量。 + /// + [Newtonsoft.Json.JsonProperty("count")] + [System.Text.Json.Serialization.JsonPropertyName("count")] + public int Count { get; set; } + } + } + + /// + /// 获取或设置套餐名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; + + /// + /// 获取或设置可选单品数量。 + /// + [Newtonsoft.Json.JsonProperty("pick_count")] + [System.Text.Json.Serialization.JsonPropertyName("pick_count")] + public int PickCount { get; set; } + + /// + /// 获取或设置单品列表。 + /// + [Newtonsoft.Json.JsonProperty("choice_list")] + [System.Text.Json.Serialization.JsonPropertyName("choice_list")] + public IList ChoiceList { get; set; } = new List(); + } + } + + /// + /// 获取或设置商品券名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; + + /// + /// 获取或设置商品图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("image_url")] + [System.Text.Json.Serialization.JsonPropertyName("image_url")] + public string ImageUrl { get; set; } = string.Empty; + + /// + /// 获取或设置背景图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("background_url")] + [System.Text.Json.Serialization.JsonPropertyName("background_url")] + public string BackgroundUrl { get; set; } = string.Empty; + + /// + /// 获取或设置详情图片 URL 列表。 + /// + [Newtonsoft.Json.JsonProperty("detail_image_url_list")] + [System.Text.Json.Serialization.JsonPropertyName("detail_image_url_list")] + public IList? DetailImageUrlList { get; set; } + + /// + /// 获取或设置商品原价。 + /// + [Newtonsoft.Json.JsonProperty("original_price")] + [System.Text.Json.Serialization.JsonPropertyName("original_price")] + public int? OriginalPrice { get; set; } + + /// + /// 获取或设置套餐组合列表。 + /// + [Newtonsoft.Json.JsonProperty("combo_package_list")] + [System.Text.Json.Serialization.JsonPropertyName("combo_package_list")] + public IList? ComboPackageList { get; set; } + } + + public class StockInfo : CreateMarketingPartnerProductCouponStockRequest.Types.StockInfo + { + } + } + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置商户请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumebr { get; set; } = string.Empty; + + /// + /// 获取或设置优惠范围。 + /// + [Newtonsoft.Json.JsonProperty("scope")] + [System.Text.Json.Serialization.JsonPropertyName("scope")] + public string Scope { get; set; } = string.Empty; + + /// + /// 获取或设置商品券类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get; set; } = string.Empty; + + /// + /// 获取或设置使用模式。 + /// + [Newtonsoft.Json.JsonProperty("usage_mode")] + [System.Text.Json.Serialization.JsonPropertyName("usage_mode")] + public string UsageMode { get; set; } = string.Empty; + + /// + /// 获取或设置单券模式信息。 + /// + [Newtonsoft.Json.JsonProperty("single_usage_info")] + [System.Text.Json.Serialization.JsonPropertyName("single_usage_info")] + public Types.SingleUsageInfo? SingleUsageInfo { get; set; } + + /// + /// 获取或设置多次优惠模式信息。 + /// + [Newtonsoft.Json.JsonProperty("sequential_usage_info")] + [System.Text.Json.Serialization.JsonPropertyName("sequential_usage_info")] + public Types.SequentialUsageInfo? SequentialUsageInfo { get; set; } + + /// + /// 获取或设置展示信息。 + /// + [Newtonsoft.Json.JsonProperty("display_info")] + [System.Text.Json.Serialization.JsonPropertyName("display_info")] + public Types.DisplayInfo DisplayInfo { get; set; } = new Types.DisplayInfo(); + + /// + /// 获取或设置外部商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_product_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_product_no")] + public string? OutProductNumber { get; set; } + + /// + /// 获取或设置批次信息。 + /// + [Newtonsoft.Json.JsonProperty("stock")] + [System.Text.Json.Serialization.JsonPropertyName("stock")] + public Types.StockInfo? StockInfo { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponResponse.cs new file mode 100644 index 00000000..560720cc --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponResponse.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons 接口的响应。 + /// + public class CreateMarketingPartnerProductCouponResponse : GetMarketingPartnerProductCouponByProductCouponIdResponse + { + public static new class Types + { + public class StockInfo : QueryMarketingPartnerProductCouponStocksResponse.Types.Stock + { + } + } + + /// + /// 获取或设置批次信息1。 + /// + [Newtonsoft.Json.JsonProperty("stock")] + [System.Text.Json.Serialization.JsonPropertyName("stock")] + public Types.StockInfo? StockInfo { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponRequest.cs new file mode 100644 index 00000000..6df0a10e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponRequest.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/deactivate 接口的请求。 + /// + public class DeactivateMarketingPartnerProductCouponRequest : WechatTenpayRequest + { + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置商户请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumber { get; set; } = string.Empty; + + /// + /// 获取或设置失效原因。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_reason")] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_reason")] + public string Reason { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponResponse.cs new file mode 100644 index 00000000..a2a57708 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/deactivate 接口的响应。 + /// + public class DeactivateMarketingPartnerProductCouponResponse : GetMarketingPartnerProductCouponByProductCouponIdResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/GetMarketingPartnerProductCouponByProductCouponIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/GetMarketingPartnerProductCouponByProductCouponIdRequest.cs new file mode 100644 index 00000000..c79eb7d3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/GetMarketingPartnerProductCouponByProductCouponIdRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/partner/product-coupon/product-coupons/{product_coupon_id} 接口的请求。 + /// + public class GetMarketingPartnerProductCouponByProductCouponIdRequest : WechatTenpayRequest + { + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string BrandId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/GetMarketingPartnerProductCouponByProductCouponIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/GetMarketingPartnerProductCouponByProductCouponIdResponse.cs new file mode 100644 index 00000000..8e32fcad --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/GetMarketingPartnerProductCouponByProductCouponIdResponse.cs @@ -0,0 +1,311 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/partner/product-coupon/product-coupons/{product_coupon_id} 接口的响应。 + /// + public class GetMarketingPartnerProductCouponByProductCouponIdResponse : WechatTenpayResponse + { + public static class Types + { + public class SingleUsageInfo + { + public static class Types + { + public class NormalCoupon + { + /// + /// 获取或设置门槛金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("threshold")] + [System.Text.Json.Serialization.JsonPropertyName("threshold")] + public int Threshold { get; set; } + + /// + /// 获取或设置固定减免金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("discount_amount")] + [System.Text.Json.Serialization.JsonPropertyName("discount_amount")] + public int DiscountAmount { get; set; } + } + + public class DiscountCoupon + { + /// + /// 获取或设置门槛金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("threshold")] + [System.Text.Json.Serialization.JsonPropertyName("threshold")] + public int Threshold { get; set; } + + /// + /// 获取或设置固定减免百分比(单位:百分数)。 + /// + [Newtonsoft.Json.JsonProperty("percent_off")] + [System.Text.Json.Serialization.JsonPropertyName("percent_off")] + public int PercentOff { get; set; } + } + } + + /// + /// 获取或设置满减券使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("normal_coupon")] + [System.Text.Json.Serialization.JsonPropertyName("normal_coupon")] + public Types.NormalCoupon? NormalCoupon { get; set; } + + /// + /// 获取或设置折扣券使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("discount_coupon")] + [System.Text.Json.Serialization.JsonPropertyName("discount_coupon")] + public Types.DiscountCoupon? DiscountCoupon { get; set; } + } + + public class SequentialUsageInfo + { + /// + /// 获取或设置多次优惠规则类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get; set; } = default!; + + /// + /// 获取或设置可使用次数。 + /// + [Newtonsoft.Json.JsonProperty("count")] + [System.Text.Json.Serialization.JsonPropertyName("count")] + public int Count { get; set; } + + /// + /// 获取或设置有效天数。 + /// + [Newtonsoft.Json.JsonProperty("available_days")] + [System.Text.Json.Serialization.JsonPropertyName("available_days")] + public int? AvailableDays { get; set; } + + /// + /// 获取或设置使用间隔天数。 + /// + [Newtonsoft.Json.JsonProperty("interval_days")] + [System.Text.Json.Serialization.JsonPropertyName("interval_days")] + public int? IntervalDays { get; set; } + } + + public class DisplayInfo + { + public static class Types + { + public class ComboPackage + { + public static class Types + { + public class Choice + { + /// + /// 获取或设置单品名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置单品图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("image_url")] + [System.Text.Json.Serialization.JsonPropertyName("image_url")] + public string? ImageUrl { get; set; } + + /// + /// 获取或设置跳转小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("mini_program_appid")] + [System.Text.Json.Serialization.JsonPropertyName("mini_program_appid")] + public string? MiniProgramAppId { get; set; } + + /// + /// 获取或设置跳转小程序页面路径。 + /// + [Newtonsoft.Json.JsonProperty("mini_program_path")] + [System.Text.Json.Serialization.JsonPropertyName("mini_program_path")] + public string? MiniProgramPagePath { get; set; } + + /// + /// 获取或设置单品价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("price")] + [System.Text.Json.Serialization.JsonPropertyName("price")] + public int Price { get; set; } + + /// + /// 获取或设置单品数量。 + /// + [Newtonsoft.Json.JsonProperty("count")] + [System.Text.Json.Serialization.JsonPropertyName("count")] + public int Count { get; set; } + } + } + + /// + /// 获取或设置套餐名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置可选单品数量。 + /// + [Newtonsoft.Json.JsonProperty("pick_count")] + [System.Text.Json.Serialization.JsonPropertyName("pick_count")] + public int PickCount { get; set; } + + /// + /// 获取或设置单品列表。 + /// + [Newtonsoft.Json.JsonProperty("choice_list")] + [System.Text.Json.Serialization.JsonPropertyName("choice_list")] + public Types.Choice[] ChoiceList { get; set; } = default!; + } + } + + /// + /// 获取或设置商品券名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置商品图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("image_url")] + [System.Text.Json.Serialization.JsonPropertyName("image_url")] + public string ImageUrl { get; set; } = default!; + + /// + /// 获取或设置背景图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("background_url")] + [System.Text.Json.Serialization.JsonPropertyName("background_url")] + public string BackgroundUrl { get; set; } = default!; + + /// + /// 获取或设置详情图片 URL 列表。 + /// + [Newtonsoft.Json.JsonProperty("detail_image_url_list")] + [System.Text.Json.Serialization.JsonPropertyName("detail_image_url_list")] + public string[]? DetailImageUrlList { get; set; } + + /// + /// 获取或设置商品原价。 + /// + [Newtonsoft.Json.JsonProperty("original_price")] + [System.Text.Json.Serialization.JsonPropertyName("original_price")] + public int? OriginalPrice { get; set; } + + /// + /// 获取或设置套餐组合列表。 + /// + [Newtonsoft.Json.JsonProperty("combo_package_list")] + [System.Text.Json.Serialization.JsonPropertyName("combo_package_list")] + public Types.ComboPackage[]? ComboPackageList { get; set; } + } + } + + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_coupon_id")] + public string ProductCouponId { get; set; } = default!; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = default!; + + /// + /// 获取或设置优惠范围。 + /// + [Newtonsoft.Json.JsonProperty("scope")] + [System.Text.Json.Serialization.JsonPropertyName("scope")] + public string Scope { get; set; } = default!; + + /// + /// 获取或设置商品券类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get; set; } = default!; + + /// + /// 获取或设置使用模式。 + /// + [Newtonsoft.Json.JsonProperty("usage_mode")] + [System.Text.Json.Serialization.JsonPropertyName("usage_mode")] + public string UsageMode { get; set; } = default!; + + /// + /// 获取或设置单券模式信息。 + /// + [Newtonsoft.Json.JsonProperty("single_usage_info")] + [System.Text.Json.Serialization.JsonPropertyName("single_usage_info")] + public Types.SingleUsageInfo? SingleUsageInfo { get; set; } + + /// + /// 获取或设置多次优惠模式信息。 + /// + [Newtonsoft.Json.JsonProperty("sequential_usage_info")] + [System.Text.Json.Serialization.JsonPropertyName("sequential_usage_info")] + public Types.SequentialUsageInfo? SequentialUsageInfo { get; set; } + + /// + /// 获取或设置展示信息。 + /// + [Newtonsoft.Json.JsonProperty("display_info")] + [System.Text.Json.Serialization.JsonPropertyName("display_info")] + public Types.DisplayInfo DisplayInfo { get; set; } = default!; + + /// + /// 获取或设置外部商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_product_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_product_no")] + public string? OutProductNumber { get; set; } + + /// + /// 获取或设置商品券状态。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string State { get; set; } = default!; + + /// + /// 获取或设置失效请求单号。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_request_no")] + public string? DeactivateOutRequestNumber { get; set; } + + /// + /// 获取或设置失效时间。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? DeactivateTime { get; set; } + + /// + /// 获取或设置失效原因。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_reason")] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_reason")] + public string? DeactivateReason { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/GetMarketingPartnerProductCouponNotifyConfigRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/GetMarketingPartnerProductCouponNotifyConfigRequest.cs new file mode 100644 index 00000000..d7d2212d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/GetMarketingPartnerProductCouponNotifyConfigRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/partner/product-coupon/notify-configs 接口的请求。 + /// + public class GetMarketingPartnerProductCouponNotifyConfigRequest : WechatTenpayRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/GetMarketingPartnerProductCouponNotifyConfigResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/GetMarketingPartnerProductCouponNotifyConfigResponse.cs new file mode 100644 index 00000000..2c289392 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/GetMarketingPartnerProductCouponNotifyConfigResponse.cs @@ -0,0 +1,26 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/partner/product-coupon/notify-configs 接口的响应。 + /// + public class GetMarketingPartnerProductCouponNotifyConfigResponse : WechatTenpayResponse + { + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string NotifyUrl { get; set; } = default!; + + /// + /// 获取或设置更新时间。 + /// + [Newtonsoft.Json.JsonProperty("update_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("update_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset UpdateTime { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigRequest.cs new file mode 100644 index 00000000..bcf4210d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/notify-configs 接口的请求。 + /// + public class UpdateMarketingPartnerProductCouponNotifyConfigRequest : WechatTenpayRequest + { + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string NotifyUrl { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigResponse.cs new file mode 100644 index 00000000..8a725228 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigResponse.cs @@ -0,0 +1,11 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/notify-configs 接口的响应。 + /// + public class UpdateMarketingPartnerProductCouponNotifyConfigResponse : GetMarketingPartnerProductCouponNotifyConfigResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockRequest.cs new file mode 100644 index 00000000..48863ab8 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockRequest.cs @@ -0,0 +1,556 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks 接口的请求。 + /// + public class CreateMarketingPartnerProductCouponStockRequest : WechatTenpayRequest + { + public static class Types + { + public class StockInfo + { + public static class Types + { + public class SendRule + { + /// + /// 获取或设置发放次数总上限。 + /// + [Newtonsoft.Json.JsonProperty("max_count")] + [System.Text.Json.Serialization.JsonPropertyName("max_count")] + public int MaxCount { get; set; } + + /// + /// 获取或设置每日发放次数上限。 + /// + [Newtonsoft.Json.JsonProperty("max_count_per_day")] + [System.Text.Json.Serialization.JsonPropertyName("max_count_per_day")] + public int? MaxCountPerDay { get; set; } + + /// + /// 获取或设置每个用户领取次数上限。 + /// + [Newtonsoft.Json.JsonProperty("max_count_per_user")] + [System.Text.Json.Serialization.JsonPropertyName("max_count_per_user")] + public int? MaxCountPerUser { get; set; } + } + + public class UsageRule + { + public static class Types + { + public class AvailablePeriod + { + public static class Types + { + public class WeeklyPeriod + { + /// + /// 获取或设置每周可用星期数列表。 + /// + [Newtonsoft.Json.JsonProperty("day_list")] + [System.Text.Json.Serialization.JsonPropertyName("day_list")] + public IList? DayList { get; set; } + + /// + /// 获取或设置当天可用时间段列表。 + /// + [Newtonsoft.Json.JsonProperty("day_period_list")] + [System.Text.Json.Serialization.JsonPropertyName("day_period_list")] + public IList? DayPeriodList { get; set; } + } + + public class DayPeriod + { + /// + /// 获取或设置当天可用开始时间(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("begin_time")] + [System.Text.Json.Serialization.JsonPropertyName("begin_time")] + public int BeginTime { get; set; } + + /// + /// 获取或设置当天可用结束时间(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("end_time")] + [System.Text.Json.Serialization.JsonPropertyName("end_time")] + public int EndTime { get; set; } + } + + public class IrregularPeriod + { + /// + /// 获取或设置开始时间。 + /// + [Newtonsoft.Json.JsonProperty("begin_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("begin_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset BeginTime { get; set; } + + /// + /// 获取或设置结束时间。 + /// + [Newtonsoft.Json.JsonProperty("end_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("end_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset EndTime { get; set; } + } + } + + /// + /// 获取或设置开始时间。 + /// + [Newtonsoft.Json.JsonProperty("available_begin_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("available_begin_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset BeginTime { get; set; } + + /// + /// 获取或设置结束时间。 + /// + [Newtonsoft.Json.JsonProperty("available_end_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("available_end_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset EndTime { get; set; } + + /// + /// 获取或设置生效后 N 天内有效。 + /// + [Newtonsoft.Json.JsonProperty("available_days")] + [System.Text.Json.Serialization.JsonPropertyName("available_days")] + public int? AvailableDays { get; set; } + + /// + /// 获取或设置领取后 N 天开始生效。 + /// + [Newtonsoft.Json.JsonProperty("wait_days_after_receive")] + [System.Text.Json.Serialization.JsonPropertyName("wait_days_after_receive")] + public int? WaitDaysAfterReceive { get; set; } + + /// + /// 获取或设置每周固定可用时间信息。 + /// + [Newtonsoft.Json.JsonProperty("weekly_available_period")] + [System.Text.Json.Serialization.JsonPropertyName("weekly_available_period")] + public Types.WeeklyPeriod? WeeklyPeriod { get; set; } + + /// + /// 获取或设置无规律的可用时间段信息。 + /// + [Newtonsoft.Json.JsonProperty("irregular_available_period_list")] + [System.Text.Json.Serialization.JsonPropertyName("irregular_available_period_list")] + public IList? IrregularPeriodList { get; set; } + } + + public class NormalCoupon + { + /// + /// 获取或设置门槛金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("threshold")] + [System.Text.Json.Serialization.JsonPropertyName("threshold")] + public int Threshold { get; set; } + + /// + /// 获取或设置固定减免金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("discount_amount")] + [System.Text.Json.Serialization.JsonPropertyName("discount_amount")] + public int DiscountAmount { get; set; } + } + + public class DiscountCoupon + { + /// + /// 获取或设置门槛金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("threshold")] + [System.Text.Json.Serialization.JsonPropertyName("threshold")] + public int Threshold { get; set; } + + /// + /// 获取或设置固定减免百分比(单位:百分数)。 + /// + [Newtonsoft.Json.JsonProperty("percent_off")] + [System.Text.Json.Serialization.JsonPropertyName("percent_off")] + public int PercentOff { get; set; } + } + + public class ExchangeCoupon + { + /// + /// 获取或设置门槛金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("threshold")] + [System.Text.Json.Serialization.JsonPropertyName("threshold")] + public int Threshold { get; set; } + + /// + /// 获取或设置固定兑换价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("exchange_price")] + [System.Text.Json.Serialization.JsonPropertyName("exchange_price")] + public int ExchangePrice { get; set; } + } + } + } + + public class SingleUsageRule : UsageRule + { + /// + /// 获取或设置券可核销时间信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_available_period")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_available_period")] + public Types.AvailablePeriod AvailablePeriod { get; set; } = new Types.AvailablePeriod(); + + /// + /// 获取或设置满减券使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("normal_coupon")] + [System.Text.Json.Serialization.JsonPropertyName("normal_coupon")] + public Types.NormalCoupon? NormalCoupon { get; set; } + + /// + /// 获取或设置折扣券使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("discount_coupon")] + [System.Text.Json.Serialization.JsonPropertyName("discount_coupon")] + public Types.DiscountCoupon? DiscountCoupon { get; set; } + + /// + /// 获取或设置兑换券使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("exchange_coupon")] + [System.Text.Json.Serialization.JsonPropertyName("exchange_coupon")] + public Types.ExchangeCoupon? ExchangeCoupon { get; set; } + } + + public class SequentialUsageRule : UsageRule + { + /// + /// 获取或设置券可核销时间信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_available_period")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_available_period")] + public Types.AvailablePeriod AvailablePeriod { get; set; } = new Types.AvailablePeriod(); + + /// + /// 获取或设置满减券使用规则列表。 + /// + [Newtonsoft.Json.JsonProperty("normal_coupon_list")] + [System.Text.Json.Serialization.JsonPropertyName("normal_coupon_list")] + public IList? NormalCouponList { get; set; } + + /// + /// 获取或设置折扣券使用规则列表。 + /// + [Newtonsoft.Json.JsonProperty("discount_coupon_list")] + [System.Text.Json.Serialization.JsonPropertyName("discount_coupon_list")] + public IList? DiscountCouponList { get; set; } + + /// + /// 获取或设置兑换券使用规则列表。 + /// + [Newtonsoft.Json.JsonProperty("exchange_coupon_list")] + [System.Text.Json.Serialization.JsonPropertyName("exchange_coupon_list")] + public IList? ExchangeCouponList { get; set; } + + /// + /// 获取或设置是否提供首笔特惠。 + /// + [Newtonsoft.Json.JsonProperty("special_first")] + [System.Text.Json.Serialization.JsonPropertyName("special_first")] + public bool? IsSpecialFirst { get; set; } + } + + public class UsageRuleDisplayInfo + { + public static class Types + { + public class AvailableStore + { + /// + /// 获取或设置可用门店描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置门店小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("mini_program_appid")] + [System.Text.Json.Serialization.JsonPropertyName("mini_program_appid")] + public string? MiniProgramAppId { get; set; } + + /// + /// 获取或设置门店小程序页面路径。 + /// + [Newtonsoft.Json.JsonProperty("mini_program_path")] + [System.Text.Json.Serialization.JsonPropertyName("mini_program_path")] + public string? MiniProgramPagePath { get; set; } + } + } + + /// + /// 获取或设置券使用方式列表。 + /// + [Newtonsoft.Json.JsonProperty("coupon_usage_method_list")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_usage_method_list")] + public IList UsageMethodList { get; set; } = new List(); + + /// + /// 获取或设置券使用说明。 + /// + [Newtonsoft.Json.JsonProperty("usage_description")] + [System.Text.Json.Serialization.JsonPropertyName("usage_description")] + public string? UsageDescription { get; set; } + + /// + /// 获取或设置品牌方小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("mini_program_appid")] + [System.Text.Json.Serialization.JsonPropertyName("mini_program_appid")] + public string? MiniProgramAppId { get; set; } + + /// + /// 获取或设置品牌方小程序页面路径。 + /// + [Newtonsoft.Json.JsonProperty("mini_program_path")] + [System.Text.Json.Serialization.JsonPropertyName("mini_program_path")] + public string? MiniProgramPagePath { get; set; } + + /// + /// 获取或设置品牌方 App 跳转路径。 + /// + [Newtonsoft.Json.JsonProperty("app_path")] + [System.Text.Json.Serialization.JsonPropertyName("app_path")] + public string? AppPath { get; set; } + + /// + /// 获取或设置可用门店信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_available_store_info")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_available_store_info")] + public Types.AvailableStore? AvailableStore { get; set; } + } + + public class CouponDisplayInfo + { + public static class Types + { + public class EntranceMiniProgram + { + /// + /// 获取或设置小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置小程序页面路径。 + /// + [Newtonsoft.Json.JsonProperty("path")] + [System.Text.Json.Serialization.JsonPropertyName("path")] + public string PagePath { get; set; } = string.Empty; + + /// + /// 获取或设置入口文案。 + /// + [Newtonsoft.Json.JsonProperty("entrance_wording")] + [System.Text.Json.Serialization.JsonPropertyName("entrance_wording")] + public string EntranceWording { get; set; } = string.Empty; + + /// + /// 获取或设置引导文案。 + /// + [Newtonsoft.Json.JsonProperty("guidance_wording")] + [System.Text.Json.Serialization.JsonPropertyName("guidance_wording")] + public string GuidanceWording { get; set; } = string.Empty; + } + + public class EntranceOfficalAccount + { + /// + /// 获取或设置公众号 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + } + + public class EntranceFinder + { + /// + /// 获取或设置视频号 ID。 + /// + [Newtonsoft.Json.JsonProperty("finder_id")] + [System.Text.Json.Serialization.JsonPropertyName("finder_id")] + public string FinderId { get; set; } = string.Empty; + + /// + /// 获取或设置视频 ID。 + /// + [Newtonsoft.Json.JsonProperty("finder_video_id")] + [System.Text.Json.Serialization.JsonPropertyName("finder_video_id")] + public string VideoId { get; set; } = string.Empty; + + /// + /// 获取或设置视频封面图 URL。 + /// + [Newtonsoft.Json.JsonProperty("finder_video_cover_image_url")] + [System.Text.Json.Serialization.JsonPropertyName("finder_video_cover_image_url")] + public string VideoCoverImageUrl { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置券 Code 展示模式。 + /// + [Newtonsoft.Json.JsonProperty("code_display_mode")] + [System.Text.Json.Serialization.JsonPropertyName("code_display_mode")] + public string CodeDisplayMode { get; set; } = string.Empty; + + /// + /// 获取或设置背景颜色。 + /// + [Newtonsoft.Json.JsonProperty("background_color")] + [System.Text.Json.Serialization.JsonPropertyName("background_color")] + public string? BackgroundColor { get; set; } + + /// + /// 获取或设置小程序入口信息。 + /// + [Newtonsoft.Json.JsonProperty("entrance_mini_program")] + [System.Text.Json.Serialization.JsonPropertyName("entrance_mini_program")] + public Types.EntranceMiniProgram? EntranceMiniProgram { get; set; } + + /// + /// 获取或设置公众号入口信息。 + /// + [Newtonsoft.Json.JsonProperty("entrance_official_account")] + [System.Text.Json.Serialization.JsonPropertyName("entrance_official_account")] + public Types.EntranceOfficalAccount? EntranceOfficalAccount { get; set; } + + /// + /// 获取或设置视频号入口信息。 + /// + [Newtonsoft.Json.JsonProperty("entrance_finder")] + [System.Text.Json.Serialization.JsonPropertyName("entrance_finder")] + public Types.EntranceFinder? EntranceFinder { get; set; } + } + + public class NotifyConfig + { + /// + /// 获取或设置公众号或小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("notify_appid")] + [System.Text.Json.Serialization.JsonPropertyName("notify_appid")] + public string AppId { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置券 Code 分配模式。 + /// + [Newtonsoft.Json.JsonProperty("coupon_code_mode")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_code_mode")] + public string CouponCodeMode { get; set; } = string.Empty; + + /// + /// 获取或设置发放规则信息。 + /// + [Newtonsoft.Json.JsonProperty("stock_send_rule")] + [System.Text.Json.Serialization.JsonPropertyName("stock_send_rule")] + public Types.SendRule SendRule { get; set; } = new Types.SendRule(); + + /// + /// 获取或设置单券使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("single_usage_rule")] + [System.Text.Json.Serialization.JsonPropertyName("single_usage_rule")] + public Types.SingleUsageRule? SingleUsageRule { get; set; } + + /// + /// 获取或设置多次优惠使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("sequential_usage_rule")] + [System.Text.Json.Serialization.JsonPropertyName("sequential_usage_rule")] + public Types.SequentialUsageRule? SequentialUsageRule { get; set; } + + /// + /// 获取或设置使用规则展示信息。 + /// + [Newtonsoft.Json.JsonProperty("usage_rule_display_info")] + [System.Text.Json.Serialization.JsonPropertyName("usage_rule_display_info")] + public Types.UsageRuleDisplayInfo UsageRuleDisplayInfo { get; set; } = new Types.UsageRuleDisplayInfo(); + + /// + /// 获取或设置商品券展示信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_display_info")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_display_info")] + public Types.CouponDisplayInfo CouponDisplayInfo { get; set; } = new Types.CouponDisplayInfo(); + + /// + /// 获取或设置可用门店范围。 + /// + [Newtonsoft.Json.JsonProperty("store_scope")] + [System.Text.Json.Serialization.JsonPropertyName("store_scope")] + public string StoreScope { get; set; } = string.Empty; + + /// + /// 获取或设置事件通知配置信息。 + /// + [Newtonsoft.Json.JsonProperty("notify_config")] + [System.Text.Json.Serialization.JsonPropertyName("notify_config")] + public Types.NotifyConfig? NotifyConfig { get; set; } + + /// + /// 获取或设置备注。 + /// + [Newtonsoft.Json.JsonProperty("remark")] + [System.Text.Json.Serialization.JsonPropertyName("remark")] + public string? Remark { get; set; } + } + } + + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置商户请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumebr { get; set; } = string.Empty; + + /// + /// 获取或设置批次信息。 + /// + [Newtonsoft.Json.JsonProperty("stock")] + [System.Text.Json.Serialization.JsonPropertyName("stock")] + public Types.StockInfo? StockInfo { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockResponse.cs new file mode 100644 index 00000000..d000dfb0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks 接口的响应。 + /// + public class CreateMarketingPartnerProductCouponStockResponse : GetMarketingPartnerProductCouponStockByStockIdResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockRequest.cs new file mode 100644 index 00000000..431085dc --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockRequest.cs @@ -0,0 +1,43 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/deactivate 接口的请求。 + /// + public class DeactivateMarketingPartnerProductCouponStockRequest : WechatTenpayRequest + { + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string StockId { get; set; } = string.Empty; + + /// + /// 获取或设置商户请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumebr { get; set; } = string.Empty; + + /// + /// 获取或设置失效原因。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_reason")] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_reason")] + public string Reason { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockResponse.cs new file mode 100644 index 00000000..c8431aae --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/deactivate 接口的响应。 + /// + public class DeactivateMarketingPartnerProductCouponStockResponse : GetMarketingPartnerProductCouponStockByStockIdResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/GetMarketingPartnerProductCouponStockByStockIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/GetMarketingPartnerProductCouponStockByStockIdRequest.cs new file mode 100644 index 00000000..604ed590 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/GetMarketingPartnerProductCouponStockByStockIdRequest.cs @@ -0,0 +1,29 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id} 接口的请求。 + /// + public class GetMarketingPartnerProductCouponStockByStockIdRequest : WechatTenpayRequest + { + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string StockId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/GetMarketingPartnerProductCouponStockByStockIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/GetMarketingPartnerProductCouponStockByStockIdResponse.cs new file mode 100644 index 00000000..133566c3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/GetMarketingPartnerProductCouponStockByStockIdResponse.cs @@ -0,0 +1,173 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id} 接口的响应。 + /// + public class GetMarketingPartnerProductCouponStockByStockIdResponse : WechatTenpayResponse + { + public static class Types + { + public class SendRule : QueryMarketingPartnerProductCouponStocksResponse.Types.Stock.Types.SendRule + { + } + + public class SingleUsageRule : QueryMarketingPartnerProductCouponStocksResponse.Types.Stock.Types.SingleUsageRule + { + } + + public class SequentialUsageRule : QueryMarketingPartnerProductCouponStocksResponse.Types.Stock.Types.SequentialUsageRule + { + } + + public class UsageRuleDisplayInfo : QueryMarketingPartnerProductCouponStocksResponse.Types.Stock.Types.UsageRuleDisplayInfo + { + } + + public class CouponDisplayInfo : QueryMarketingPartnerProductCouponStocksResponse.Types.Stock.Types.CouponDisplayInfo + { + } + + public class NotifyConfig : QueryMarketingPartnerProductCouponStocksResponse.Types.Stock.Types.NotifyConfig + { + } + + public class CodeCountInfo : QueryMarketingPartnerProductCouponStocksResponse.Types.Stock.Types.CodeCountInfo + { + } + + public class SentCountInfo : QueryMarketingPartnerProductCouponStocksResponse.Types.Stock.Types.SentCountInfo + { + } + } + + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_coupon_id")] + public string ProductCouponId { get; set; } = default!; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = default!; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonProperty("stock_id")] + [System.Text.Json.Serialization.JsonPropertyName("stock_id")] + public string StockId { get; set; } = default!; + + /// + /// 获取或设置券 Code 分配模式。 + /// + [Newtonsoft.Json.JsonProperty("coupon_code_mode")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_code_mode")] + public string CouponCodeMode { get; set; } = default!; + + /// + /// 获取或设置发放规则信息。 + /// + [Newtonsoft.Json.JsonProperty("stock_send_rule")] + [System.Text.Json.Serialization.JsonPropertyName("stock_send_rule")] + public Types.SendRule SendRule { get; set; } = default!; + + /// + /// 获取或设置单券使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("single_usage_rule")] + [System.Text.Json.Serialization.JsonPropertyName("single_usage_rule")] + public Types.SingleUsageRule? SingleUsageRule { get; set; } + + /// + /// 获取或设置多次优惠使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("sequential_usage_rule")] + [System.Text.Json.Serialization.JsonPropertyName("sequential_usage_rule")] + public Types.SequentialUsageRule? SequentialUsageRule { get; set; } + + /// + /// 获取或设置使用规则展示信息。 + /// + [Newtonsoft.Json.JsonProperty("usage_rule_display_info")] + [System.Text.Json.Serialization.JsonPropertyName("usage_rule_display_info")] + public Types.UsageRuleDisplayInfo UsageRuleDisplayInfo { get; set; } = default!; + + /// + /// 获取或设置商品券展示信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_display_info")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_display_info")] + public Types.CouponDisplayInfo CouponDisplayInfo { get; set; } = default!; + + /// + /// 获取或设置可用门店范围。 + /// + [Newtonsoft.Json.JsonProperty("store_scope")] + [System.Text.Json.Serialization.JsonPropertyName("store_scope")] + public string StoreScope { get; set; } = default!; + + /// + /// 获取或设置事件通知配置信息。 + /// + [Newtonsoft.Json.JsonProperty("notify_config")] + [System.Text.Json.Serialization.JsonPropertyName("notify_config")] + public Types.NotifyConfig? NotifyConfig { get; set; } + + /// + /// 获取或设置备注。 + /// + [Newtonsoft.Json.JsonProperty("remark")] + [System.Text.Json.Serialization.JsonPropertyName("remark")] + public string? Remark { get; set; } + + /// + /// 获取或设置 Code 数量信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_code_count_info")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_code_count_info")] + public Types.CodeCountInfo CodeCountInfo { get; set; } = default!; + + /// + /// 获取或设置已发放数量信息。 + /// + [Newtonsoft.Json.JsonProperty("sent_count_info")] + [System.Text.Json.Serialization.JsonPropertyName("sent_count_info")] + public Types.SentCountInfo SentCountInfo { get; set; } = default!; + + /// + /// 获取或设置批次状态。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string State { get; set; } = default!; + + /// + /// 获取或设置失效请求单号。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_request_no")] + public string? DeactivateOutRequestNumber { get; set; } + + /// + /// 获取或设置失效时间。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? DeactivateTime { get; set; } + + /// + /// 获取或设置失效原因。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_reason")] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_reason")] + public string? DeactivateReason { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/QueryMarketingPartnerProductCouponStocksRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/QueryMarketingPartnerProductCouponStocksRequest.cs new file mode 100644 index 00000000..45476e0d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/QueryMarketingPartnerProductCouponStocksRequest.cs @@ -0,0 +1,43 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks 接口的请求。 + /// + public class QueryMarketingPartnerProductCouponStocksRequest : WechatTenpayRequest + { + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次状态。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? StockState { get; set; } + + /// + /// 获取或设置分页游标。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? PageToken { get; set; } + + /// + /// 获取或设置分页大小。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int? PageSize { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/QueryMarketingPartnerProductCouponStocksResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/QueryMarketingPartnerProductCouponStocksResponse.cs new file mode 100644 index 00000000..5f385f53 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/QueryMarketingPartnerProductCouponStocksResponse.cs @@ -0,0 +1,529 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks 接口的响应。 + /// + public class QueryMarketingPartnerProductCouponStocksResponse : WechatTenpayResponse + { + public static class Types + { + public class Stock + { + public static class Types + { + public class SendRule : CreateMarketingPartnerProductCouponStockRequest.Types.StockInfo.Types.SendRule + { + } + + public class UsageRule + { + public static class Types + { + public class AvailablePeriod + { + public static class Types + { + public class WeeklyPeriod + { + /// + /// 获取或设置每周可用星期数列表。 + /// + [Newtonsoft.Json.JsonProperty("day_list")] + [System.Text.Json.Serialization.JsonPropertyName("day_list")] + public string[]? DayList { get; set; } + + /// + /// 获取或设置当天可用时间段列表。 + /// + [Newtonsoft.Json.JsonProperty("day_period_list")] + [System.Text.Json.Serialization.JsonPropertyName("day_period_list")] + public DayPeriod[]? DayPeriodList { get; set; } + } + + public class DayPeriod + { + /// + /// 获取或设置当天可用开始时间(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("begin_time")] + [System.Text.Json.Serialization.JsonPropertyName("begin_time")] + public int BeginTime { get; set; } + + /// + /// 获取或设置当天可用结束时间(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("end_time")] + [System.Text.Json.Serialization.JsonPropertyName("end_time")] + public int EndTime { get; set; } + } + + public class IrregularPeriod + { + /// + /// 获取或设置开始时间。 + /// + [Newtonsoft.Json.JsonProperty("begin_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("begin_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset BeginTime { get; set; } + + /// + /// 获取或设置结束时间。 + /// + [Newtonsoft.Json.JsonProperty("end_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("end_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset EndTime { get; set; } + } + } + + /// + /// 获取或设置开始时间。 + /// + [Newtonsoft.Json.JsonProperty("available_begin_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("available_begin_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset BeginTime { get; set; } + + /// + /// 获取或设置结束时间。 + /// + [Newtonsoft.Json.JsonProperty("available_end_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("available_end_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset EndTime { get; set; } + + /// + /// 获取或设置生效后 N 天内有效。 + /// + [Newtonsoft.Json.JsonProperty("available_days")] + [System.Text.Json.Serialization.JsonPropertyName("available_days")] + public int? AvailableDays { get; set; } + + /// + /// 获取或设置领取后 N 天开始生效。 + /// + [Newtonsoft.Json.JsonProperty("wait_days_after_receive")] + [System.Text.Json.Serialization.JsonPropertyName("wait_days_after_receive")] + public int? WaitDaysAfterReceive { get; set; } + + /// + /// 获取或设置每周固定可用时间信息。 + /// + [Newtonsoft.Json.JsonProperty("weekly_available_period")] + [System.Text.Json.Serialization.JsonPropertyName("weekly_available_period")] + public Types.WeeklyPeriod? WeeklyPeriod { get; set; } + + /// + /// 获取或设置无规律的可用时间段信息。 + /// + [Newtonsoft.Json.JsonProperty("irregular_available_period_list")] + [System.Text.Json.Serialization.JsonPropertyName("irregular_available_period_list")] + public Types.IrregularPeriod[]? IrregularPeriodList { get; set; } + } + + public class NormalCoupon : CreateMarketingPartnerProductCouponStockRequest.Types.StockInfo.Types.UsageRule.Types.NormalCoupon + { + } + + public class DiscountCoupon : CreateMarketingPartnerProductCouponStockRequest.Types.StockInfo.Types.UsageRule.Types.DiscountCoupon + { + } + + public class ExchangeCoupon : CreateMarketingPartnerProductCouponStockRequest.Types.StockInfo.Types.UsageRule.Types.ExchangeCoupon + { + } + } + } + + public class SingleUsageRule : UsageRule + { + /// + /// 获取或设置券可核销时间信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_available_period")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_available_period")] + public Types.AvailablePeriod AvailablePeriod { get; set; } = default!; + + /// + /// 获取或设置满减券使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("normal_coupon")] + [System.Text.Json.Serialization.JsonPropertyName("normal_coupon")] + public Types.NormalCoupon? NormalCoupon { get; set; } + + /// + /// 获取或设置折扣券使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("discount_coupon")] + [System.Text.Json.Serialization.JsonPropertyName("discount_coupon")] + public Types.DiscountCoupon? DiscountCoupon { get; set; } + + /// + /// 获取或设置兑换券使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("exchange_coupon")] + [System.Text.Json.Serialization.JsonPropertyName("exchange_coupon")] + public Types.ExchangeCoupon? ExchangeCoupon { get; set; } + } + + public class SequentialUsageRule : UsageRule + { + /// + /// 获取或设置券可核销时间信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_available_period")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_available_period")] + public Types.AvailablePeriod AvailablePeriod { get; set; } = default!; + + /// + /// 获取或设置满减券使用规则列表。 + /// + [Newtonsoft.Json.JsonProperty("normal_coupon_list")] + [System.Text.Json.Serialization.JsonPropertyName("normal_coupon_list")] + public Types.NormalCoupon[]? NormalCouponList { get; set; } + + /// + /// 获取或设置折扣券使用规则列表。 + /// + [Newtonsoft.Json.JsonProperty("discount_coupon_list")] + [System.Text.Json.Serialization.JsonPropertyName("discount_coupon_list")] + public Types.DiscountCoupon[]? DiscountCouponList { get; set; } + + /// + /// 获取或设置兑换券使用规则列表。 + /// + [Newtonsoft.Json.JsonProperty("exchange_coupon_list")] + [System.Text.Json.Serialization.JsonPropertyName("exchange_coupon_list")] + public Types.ExchangeCoupon[]? ExchangeCouponList { get; set; } + + /// + /// 获取或设置是否提供首笔特惠。 + /// + [Newtonsoft.Json.JsonProperty("special_first")] + [System.Text.Json.Serialization.JsonPropertyName("special_first")] + public bool? IsSpecialFirst { get; set; } + } + + public class UsageRuleDisplayInfo + { + public static class Types + { + public class AvailableStore + { + /// + /// 获取或设置可用门店描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = default!; + + /// + /// 获取或设置门店小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("mini_program_appid")] + [System.Text.Json.Serialization.JsonPropertyName("mini_program_appid")] + public string? MiniProgramAppId { get; set; } + + /// + /// 获取或设置门店小程序页面路径。 + /// + [Newtonsoft.Json.JsonProperty("mini_program_path")] + [System.Text.Json.Serialization.JsonPropertyName("mini_program_path")] + public string? MiniProgramPagePath { get; set; } + } + } + + /// + /// 获取或设置券使用方式列表。 + /// + [Newtonsoft.Json.JsonProperty("coupon_usage_method_list")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_usage_method_list")] + public string[] UsageMethodList { get; set; } = default!; + + /// + /// 获取或设置券使用说明。 + /// + [Newtonsoft.Json.JsonProperty("usage_description")] + [System.Text.Json.Serialization.JsonPropertyName("usage_description")] + public string? UsageDescription { get; set; } + + /// + /// 获取或设置品牌方小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("mini_program_appid")] + [System.Text.Json.Serialization.JsonPropertyName("mini_program_appid")] + public string? MiniProgramAppId { get; set; } + + /// + /// 获取或设置品牌方小程序页面路径。 + /// + [Newtonsoft.Json.JsonProperty("mini_program_path")] + [System.Text.Json.Serialization.JsonPropertyName("mini_program_path")] + public string? MiniProgramPagePath { get; set; } + + /// + /// 获取或设置品牌方 App 跳转路径。 + /// + [Newtonsoft.Json.JsonProperty("app_path")] + [System.Text.Json.Serialization.JsonPropertyName("app_path")] + public string? AppPath { get; set; } + + /// + /// 获取或设置可用门店信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_available_store_info")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_available_store_info")] + public Types.AvailableStore? AvailableStore { get; set; } + } + + public class CouponDisplayInfo + { + public static class Types + { + public class EntranceMiniProgram : CreateMarketingPartnerProductCouponStockRequest.Types.StockInfo.Types.CouponDisplayInfo.Types.EntranceMiniProgram + { + } + + public class EntranceOfficalAccount : CreateMarketingPartnerProductCouponStockRequest.Types.StockInfo.Types.CouponDisplayInfo.Types.EntranceOfficalAccount + { + } + + public class EntranceFinder : CreateMarketingPartnerProductCouponStockRequest.Types.StockInfo.Types.CouponDisplayInfo.Types.EntranceFinder + { + } + } + + /// + /// 获取或设置券 Code 展示模式。 + /// + [Newtonsoft.Json.JsonProperty("code_display_mode")] + [System.Text.Json.Serialization.JsonPropertyName("code_display_mode")] + public string CodeDisplayMode { get; set; } = default!; + + /// + /// 获取或设置背景颜色。 + /// + [Newtonsoft.Json.JsonProperty("background_color")] + [System.Text.Json.Serialization.JsonPropertyName("background_color")] + public string? BackgroundColor { get; set; } + + /// + /// 获取或设置小程序入口信息。 + /// + [Newtonsoft.Json.JsonProperty("entrance_mini_program")] + [System.Text.Json.Serialization.JsonPropertyName("entrance_mini_program")] + public Types.EntranceMiniProgram? EntranceMiniProgram { get; set; } + + /// + /// 获取或设置公众号入口信息。 + /// + [Newtonsoft.Json.JsonProperty("entrance_official_account")] + [System.Text.Json.Serialization.JsonPropertyName("entrance_official_account")] + public Types.EntranceOfficalAccount? EntranceOfficalAccount { get; set; } + + /// + /// 获取或设置视频号入口信息。 + /// + [Newtonsoft.Json.JsonProperty("entrance_finder")] + [System.Text.Json.Serialization.JsonPropertyName("entrance_finder")] + public Types.EntranceFinder? EntranceFinder { get; set; } + } + + public class NotifyConfig : CreateMarketingPartnerProductCouponStockRequest.Types.StockInfo.Types.NotifyConfig + { + } + + public class CodeCountInfo + { + /// + /// 获取或设置总数量。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + + /// + /// 获取或设置可用数量。 + /// + [Newtonsoft.Json.JsonProperty("available_count")] + [System.Text.Json.Serialization.JsonPropertyName("available_count")] + public int AvailableCount { get; set; } + } + + public class SentCountInfo + { + /// + /// 获取或设置已发放总次数。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + + /// + /// 获取或设置当天已发放次数。 + /// + [Newtonsoft.Json.JsonProperty("today_count")] + [System.Text.Json.Serialization.JsonPropertyName("today_count")] + public int TodayCount { get; set; } + } + } + + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_coupon_id")] + public string ProductCouponId { get; set; } = default!; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = default!; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonProperty("stock_id")] + [System.Text.Json.Serialization.JsonPropertyName("stock_id")] + public string StockId { get; set; } = default!; + + /// + /// 获取或设置券 Code 分配模式。 + /// + [Newtonsoft.Json.JsonProperty("coupon_code_mode")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_code_mode")] + public string CouponCodeMode { get; set; } = default!; + + /// + /// 获取或设置发放规则信息。 + /// + [Newtonsoft.Json.JsonProperty("stock_send_rule")] + [System.Text.Json.Serialization.JsonPropertyName("stock_send_rule")] + public Types.SendRule SendRule { get; set; } = default!; + + /// + /// 获取或设置单券使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("single_usage_rule")] + [System.Text.Json.Serialization.JsonPropertyName("single_usage_rule")] + public Types.SingleUsageRule? SingleUsageRule { get; set; } + + /// + /// 获取或设置多次优惠使用规则信息。 + /// + [Newtonsoft.Json.JsonProperty("sequential_usage_rule")] + [System.Text.Json.Serialization.JsonPropertyName("sequential_usage_rule")] + public Types.SequentialUsageRule? SequentialUsageRule { get; set; } + + /// + /// 获取或设置使用规则展示信息。 + /// + [Newtonsoft.Json.JsonProperty("usage_rule_display_info")] + [System.Text.Json.Serialization.JsonPropertyName("usage_rule_display_info")] + public Types.UsageRuleDisplayInfo UsageRuleDisplayInfo { get; set; } = default!; + + /// + /// 获取或设置商品券展示信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_display_info")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_display_info")] + public Types.CouponDisplayInfo CouponDisplayInfo { get; set; } = default!; + + /// + /// 获取或设置可用门店范围。 + /// + [Newtonsoft.Json.JsonProperty("store_scope")] + [System.Text.Json.Serialization.JsonPropertyName("store_scope")] + public string StoreScope { get; set; } = default!; + + /// + /// 获取或设置事件通知配置信息。 + /// + [Newtonsoft.Json.JsonProperty("notify_config")] + [System.Text.Json.Serialization.JsonPropertyName("notify_config")] + public Types.NotifyConfig? NotifyConfig { get; set; } + + /// + /// 获取或设置备注。 + /// + [Newtonsoft.Json.JsonProperty("remark")] + [System.Text.Json.Serialization.JsonPropertyName("remark")] + public string? Remark { get; set; } + + /// + /// 获取或设置 Code 数量信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_code_count_info")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_code_count_info")] + public Types.CodeCountInfo CodeCountInfo { get; set; } = default!; + + /// + /// 获取或设置已发放数量信息。 + /// + [Newtonsoft.Json.JsonProperty("sent_count_info")] + [System.Text.Json.Serialization.JsonPropertyName("sent_count_info")] + public Types.SentCountInfo SentCountInfo { get; set; } = default!; + + /// + /// 获取或设置批次状态。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string State { get; set; } = default!; + + /// + /// 获取或设置失效请求单号。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_request_no")] + public string? DeactivateOutRequestNumber { get; set; } + + /// + /// 获取或设置失效时间。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? DeactivateTime { get; set; } + + /// + /// 获取或设置失效原因。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_reason")] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_reason")] + public string? DeactivateReason { get; set; } + } + } + + /// + /// 获取或设置批次列表。 + /// + [Newtonsoft.Json.JsonProperty("stock_list")] + [System.Text.Json.Serialization.JsonPropertyName("stock_list")] + public Types.Stock[] StockList { get; set; } = default!; + + /// + /// 获取或设置下一页分页游标。 + /// + [Newtonsoft.Json.JsonProperty("next_page_token")] + [System.Text.Json.Serialization.JsonPropertyName("next_page_token")] + public string? NextPageToken { get; set; } + + /// + /// 获取或设置券总数量。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresRequest.cs new file mode 100644 index 00000000..7dc55a43 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresRequest.cs @@ -0,0 +1,51 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/associate-stores 接口的请求。 + /// + public class AssociateMarketingPartnerProductCouponStockToStoresRequest : WechatTenpayRequest + { + public static class Types + { + public class Store + { + /// + /// 获取或设置门店 ID。 + /// + [Newtonsoft.Json.JsonProperty("store_id")] + [System.Text.Json.Serialization.JsonPropertyName("store_id")] + public string StoreId { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string StockId { get; set; } = string.Empty; + + /// + /// 获取或设置门店列表。 + /// + [Newtonsoft.Json.JsonProperty("store_list")] + [System.Text.Json.Serialization.JsonPropertyName("store_list")] + public IList StoreList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresResponse.cs new file mode 100644 index 00000000..24074acf --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresResponse.cs @@ -0,0 +1,56 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/associate-stores 接口的响应。 + /// + public class AssociateMarketingPartnerProductCouponStockToStoresResponse : WechatTenpayResponse + { + public static class Types + { + public class Store + { + /// + /// 获取或设置门店 ID。 + /// + [Newtonsoft.Json.JsonProperty("store_id")] + [System.Text.Json.Serialization.JsonPropertyName("store_id")] + public string StoreId { get; set; } = default!; + + /// + /// 获取或设置错误码。 + /// + [Newtonsoft.Json.JsonProperty("code")] + [System.Text.Json.Serialization.JsonPropertyName("code")] + public string? ErrorCode { get; set; } + + /// + /// 获取或设置错误信息。 + /// + [Newtonsoft.Json.JsonProperty("message")] + [System.Text.Json.Serialization.JsonPropertyName("message")] + public string? ErrorMessage { get; set; } + } + } + + /// + /// 获取或设置门店总数。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + + /// + /// 获取或设置关联成功的门店列表。 + /// + [Newtonsoft.Json.JsonProperty("success_store_list")] + [System.Text.Json.Serialization.JsonPropertyName("success_store_list")] + public Types.Store[]? SucceededStoreList { get; set; } + + /// + /// 获取或设置关联失败的门店列表。 + /// + [Newtonsoft.Json.JsonProperty("failed_store_list")] + [System.Text.Json.Serialization.JsonPropertyName("failed_store_list")] + public Types.Store[]? FailedStoreList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresRequest.cs new file mode 100644 index 00000000..3d72ffe7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresRequest.cs @@ -0,0 +1,45 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/disassociate-stores 接口的请求。 + /// + public class DisassociateMarketingPartnerProductCouponStockFromStoresRequest : WechatTenpayRequest + { + public static class Types + { + public class Store : AssociateMarketingPartnerProductCouponStockToStoresRequest.Types.Store + { + } + } + + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string StockId { get; set; } = string.Empty; + + /// + /// 获取或设置门店列表。 + /// + [Newtonsoft.Json.JsonProperty("store_list")] + [System.Text.Json.Serialization.JsonPropertyName("store_list")] + public IList StoreList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresResponse.cs new file mode 100644 index 00000000..e4210572 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresResponse.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/disassociate-stores 接口的响应。 + /// + public class DisassociateMarketingPartnerProductCouponStockFromStoresResponse : WechatTenpayResponse + { + public static class Types + { + public class Store : AssociateMarketingPartnerProductCouponStockToStoresResponse.Types.Store + { + } + } + + /// + /// 获取或设置门店总数。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + + /// + /// 获取或设置取消关联成功的门店列表。 + /// + [Newtonsoft.Json.JsonProperty("success_store_list")] + [System.Text.Json.Serialization.JsonPropertyName("success_store_list")] + public Types.Store[]? SucceededStoreList { get; set; } + + /// + /// 获取或设置取消关联失败的门店列表。 + /// + [Newtonsoft.Json.JsonProperty("failed_store_list")] + [System.Text.Json.Serialization.JsonPropertyName("failed_store_list")] + public Types.Store[]? FailedStoreList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/QueryMarketingPartnerProductCouponStockAssociatedStoresRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/QueryMarketingPartnerProductCouponStockAssociatedStoresRequest.cs new file mode 100644 index 00000000..1a6f3f3a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/QueryMarketingPartnerProductCouponStockAssociatedStoresRequest.cs @@ -0,0 +1,43 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/associated-stores 接口的请求。 + /// + public class QueryMarketingPartnerProductCouponStockAssociatedStoresRequest : WechatTenpayRequest + { + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string StockId { get; set; } = string.Empty; + + /// + /// 获取或设置分页游标。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? PageToken { get; set; } + + /// + /// 获取或设置分页大小。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int? PageSize { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/QueryMarketingPartnerProductCouponStockAssociatedStoresResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/QueryMarketingPartnerProductCouponStockAssociatedStoresResponse.cs new file mode 100644 index 00000000..00ceb965 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/QueryMarketingPartnerProductCouponStockAssociatedStoresResponse.cs @@ -0,0 +1,42 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/associated-stores 接口的响应。 + /// + public class QueryMarketingPartnerProductCouponStockAssociatedStoresResponse : WechatTenpayResponse + { + public static class Types + { + public class Store + { + /// + /// 获取或设置门店 ID。 + /// + [Newtonsoft.Json.JsonProperty("store_id")] + [System.Text.Json.Serialization.JsonPropertyName("store_id")] + public string StoreId { get; set; } = default!; + } + } + + /// + /// 获取或设置门店列表。 + /// + [Newtonsoft.Json.JsonProperty("store_list")] + [System.Text.Json.Serialization.JsonPropertyName("store_list")] + public Types.Store[] StoreList { get; set; } = default!; + + /// + /// 获取或设置下一页分页游标。 + /// + [Newtonsoft.Json.JsonProperty("next_page_token")] + [System.Text.Json.Serialization.JsonPropertyName("next_page_token")] + public string? NextPageToken { get; set; } + + /// + /// 获取或设置券总数量。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetRequest.cs new file mode 100644 index 00000000..48b7e2c7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetRequest.cs @@ -0,0 +1,71 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/update-budget 接口的请求。 + /// + public class UpdateMarketingPartnerProductCouponStockBudgetRequest : WechatTenpayRequest + { + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string StockId { get; set; } = string.Empty; + + /// + /// 获取或设置商户请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumebr { get; set; } = string.Empty; + + /// + /// 获取或设置更新模式。 + /// + [Newtonsoft.Json.JsonProperty("update_mode")] + [System.Text.Json.Serialization.JsonPropertyName("update_mode")] + public string UpdateMode { get; set; } = string.Empty; + + /// + /// 获取或设置当前批次发放次数总上限。 + /// + [Newtonsoft.Json.JsonProperty("current_max_count")] + [System.Text.Json.Serialization.JsonPropertyName("current_max_count")] + public int? CurrentMaxCount { get; set; } + + /// + /// 获取或设置目标批次发放次数总上限。 + /// + [Newtonsoft.Json.JsonProperty("target_max_count")] + [System.Text.Json.Serialization.JsonPropertyName("target_max_count")] + public int? TargetMaxCount { get; set; } + + /// + /// 获取或设置当前批次每日发放次数上限。 + /// + [Newtonsoft.Json.JsonProperty("current_max_count_per_day")] + [System.Text.Json.Serialization.JsonPropertyName("current_max_count_per_day")] + public int? CurrentMaxCountPerDay { get; set; } + + /// + /// 获取或设置目标批次每日发放次数上限。 + /// + [Newtonsoft.Json.JsonProperty("target_max_count_per_day")] + [System.Text.Json.Serialization.JsonPropertyName("target_max_count_per_day")] + public int? TargetMaxCountPerDay { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetResponse.cs new file mode 100644 index 00000000..083a4404 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/update-budget 接口的响应。 + /// + public class UpdateMarketingPartnerProductCouponStockBudgetResponse : GetMarketingPartnerProductCouponStockByStockIdResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockRequest.cs new file mode 100644 index 00000000..513ac28c --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockRequest.cs @@ -0,0 +1,86 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [PATCH] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id} 接口的请求。 + /// + public class UpdateMarketingPartnerProductCouponStockRequest : WechatTenpayRequest + { + public static class Types + { + public class UsageRuleDisplayInfo : CreateMarketingPartnerProductCouponStockRequest.Types.StockInfo.Types.UsageRuleDisplayInfo + { + } + + public class CouponDisplayInfo : CreateMarketingPartnerProductCouponStockRequest.Types.StockInfo.Types.CouponDisplayInfo + { + } + + public class NotifyConfig : CreateMarketingPartnerProductCouponStockRequest.Types.StockInfo.Types.NotifyConfig + { + } + } + + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string StockId { get; set; } = string.Empty; + + /// + /// 获取或设置商户请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumebr { get; set; } = string.Empty; + + /// + /// 获取或设置使用规则展示信息。 + /// + [Newtonsoft.Json.JsonProperty("usage_rule_display_info")] + [System.Text.Json.Serialization.JsonPropertyName("usage_rule_display_info")] + public Types.UsageRuleDisplayInfo? UsageRuleDisplayInfo { get; set; } + + /// + /// 获取或设置商品券展示信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_display_info")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_display_info")] + public Types.CouponDisplayInfo? CouponDisplayInfo { get; set; } + + /// + /// 获取或设置可用门店范围。 + /// + [Newtonsoft.Json.JsonProperty("store_scope")] + [System.Text.Json.Serialization.JsonPropertyName("store_scope")] + public string? StoreScope { get; set; } + + /// + /// 获取或设置事件通知配置信息。 + /// + [Newtonsoft.Json.JsonProperty("notify_config")] + [System.Text.Json.Serialization.JsonPropertyName("notify_config")] + public Types.NotifyConfig? NotifyConfig { get; set; } + + /// + /// 获取或设置备注。 + /// + [Newtonsoft.Json.JsonProperty("remark")] + [System.Text.Json.Serialization.JsonPropertyName("remark")] + public string? Remark { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockResponse.cs new file mode 100644 index 00000000..2f8bffa5 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [PATCH] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id} 接口的响应。 + /// + public class UpdateMarketingPartnerProductCouponStockResponse : GetMarketingPartnerProductCouponStockByStockIdResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesRequest.cs new file mode 100644 index 00000000..5a22d4a9 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesRequest.cs @@ -0,0 +1,45 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/upload-coupon-codes 接口的请求。 + /// + public class UploadMarketingPartnerProductCouponStockCouponCodesRequest : WechatTenpayRequest + { + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string StockId { get; set; } = string.Empty; + + /// + /// 获取或设置商户请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumebr { get; set; } = string.Empty; + + /// + /// 获取或设置券 Code 列表。 + /// + [Newtonsoft.Json.JsonProperty("code_list")] + [System.Text.Json.Serialization.JsonPropertyName("code_list")] + public IList CodeList { get; set; } = new List(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesResponse.cs new file mode 100644 index 00000000..9098e810 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesResponse.cs @@ -0,0 +1,70 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/product-coupons/{product_coupon_id}/stocks/{stock_id}/upload-coupon-codes 接口的响应。 + /// + public class UploadMarketingPartnerProductCouponStockCouponCodesResponse : WechatTenpayResponse + { + public static class Types + { + public class FailCode + { + /// + /// 获取或设置上传失败的券 Code。 + /// + [Newtonsoft.Json.JsonProperty("coupon_code")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_code")] + public string CouponCode { get; set; } = default!; + + /// + /// 获取或设置上传失败错误码。 + /// + [Newtonsoft.Json.JsonProperty("code")] + [System.Text.Json.Serialization.JsonPropertyName("code")] + public string ErrorCode { get; set; } = default!; + + /// + /// 获取或设置上传失败错误信息。 + /// + [Newtonsoft.Json.JsonProperty("message")] + [System.Text.Json.Serialization.JsonPropertyName("message")] + public string ErrorMessage { get; set; } = default!; + } + } + + /// + /// 获取或设置去重后上传 Code 总数。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + + /// + /// 获取或设置上传成功的 Code 列表。 + /// + [Newtonsoft.Json.JsonProperty("success_code_list")] + [System.Text.Json.Serialization.JsonPropertyName("success_code_list")] + public string[]? SuccessCodeList { get; set; } + + /// + /// 获取或设置上传失败的 Code 列表。 + /// + [Newtonsoft.Json.JsonProperty("failed_code_list")] + [System.Text.Json.Serialization.JsonPropertyName("failed_code_list")] + public Types.FailCode[]? FailCodeList { get; set; } + + /// + /// 获取或设置已存在的 Code 列表。 + /// + [Newtonsoft.Json.JsonProperty("already_exist_code_list")] + [System.Text.Json.Serialization.JsonPropertyName("already_exist_code_list")] + public string[]? AlreadyExistedCodeList { get; set; } + + /// + /// 获取或设置本次请求中重复的 Code 列表。 + /// + [Newtonsoft.Json.JsonProperty("duplicate_code_list")] + [System.Text.Json.Serialization.JsonPropertyName("duplicate_code_list")] + public string[]? DuplicateCodeList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponRequest.cs new file mode 100644 index 00000000..422c6d5e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponRequest.cs @@ -0,0 +1,43 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [PATCH] /marketing/partner/product-coupon/product-coupons/{product_coupon_id} 接口的请求。 + /// + public class UpdateMarketingPartnerProductCouponRequest : WechatTenpayRequest + { + public static class Types + { + public class DisplayInfo : CreateMarketingPartnerProductCouponRequest.Types.DisplayInfo + { + } + } + + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置商户请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumebr { get; set; } = string.Empty; + + /// + /// 获取或设置展示信息。 + /// + [Newtonsoft.Json.JsonProperty("display_info")] + [System.Text.Json.Serialization.JsonPropertyName("display_info")] + public Types.DisplayInfo DisplayInfo { get; set; } = new Types.DisplayInfo(); + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponResponse.cs new file mode 100644 index 00000000..e8ab3c21 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [PATCH] /marketing/partner/product-coupon/product-coupons/{product_coupon_id} 接口的响应。 + /// + public class UpdateMarketingPartnerProductCouponResponse : GetMarketingPartnerProductCouponByProductCouponIdResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageRequest.cs new file mode 100644 index 00000000..a15b656d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageRequest.cs @@ -0,0 +1,38 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/media/upload-image 接口的请求。 + /// + public class UploadMarketingPartnerProductCouponMediaImageRequest : WechatTenpayRequest + { + /// + /// 获取或设置图片文件字节数组。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public byte[] FileBytes { get; set; } = Array.Empty(); + + /// + /// 获取或设置图片文件名(必须以 jpg、bmp、png 为后缀)。如果不指定将由系统自动生成。 + /// + [Newtonsoft.Json.JsonProperty("filename")] + [System.Text.Json.Serialization.JsonPropertyName("filename")] + public string? FileName { get; set; } + + /// + /// 获取或设置图片文件摘要。如果不指定将由系统自动生成。 + /// + [Newtonsoft.Json.JsonProperty("sha256")] + [System.Text.Json.Serialization.JsonPropertyName("sha256")] + public string? FileHash { get; set; } + + /// + /// 获取或设置图片文件 Conent-Type。如果不指定将由系统自动生成。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? FileContentType { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageResponse.cs new file mode 100644 index 00000000..c0d3014e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/media/upload-image 接口的响应。 + /// + public class UploadMarketingPartnerProductCouponMediaImageResponse : WechatTenpayResponse + { + /// + /// 获取或设置图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("image_url")] + [System.Text.Json.Serialization.JsonPropertyName("image_url")] + public string ImageUrl { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponRequest.cs new file mode 100644 index 00000000..ebd00d28 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponRequest.cs @@ -0,0 +1,57 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/users/{openid}/coupons/{coupon_code}/confirm 接口的请求。 + /// + public class ConfirmMarketingPartnerProductCouponUserCouponRequest : WechatTenpayRequest + { + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_coupon_id")] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonProperty("stock_id")] + [System.Text.Json.Serialization.JsonPropertyName("stock_id")] + public string StockId { get; set; } = string.Empty; + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置券 Code。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string CouponCode { get; set; } = string.Empty; + + /// + /// 获取或设置商户请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumber { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponResponse.cs new file mode 100644 index 00000000..e93570ae --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/users/{openid}/coupons/{coupon_code}/confirm 接口的响应。 + /// + public class ConfirmMarketingPartnerProductCouponUserCouponResponse : GetMarketingPartnerProductCouponUserCouponByCouponCodeResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponRequest.cs new file mode 100644 index 00000000..1efa18b7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponRequest.cs @@ -0,0 +1,64 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/users/{openid}/coupons/{coupon_code}/deactivate 接口的请求。 + /// + public class DeactivateMarketingPartnerProductCouponUserCouponRequest : WechatTenpayRequest + { + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_coupon_id")] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonProperty("stock_id")] + [System.Text.Json.Serialization.JsonPropertyName("stock_id")] + public string StockId { get; set; } = string.Empty; + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置券 Code。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string CouponCode { get; set; } = string.Empty; + + /// + /// 获取或设置商户请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumber { get; set; } = string.Empty; + + /// + /// 获取或设置失效原因。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_reason")] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_reason")] + public string Reason { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponResponse.cs new file mode 100644 index 00000000..0d024c6c --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/users/{openid}/coupons/{coupon_code}/deactivate 接口的响应。 + /// + public class DeactivateMarketingPartnerProductCouponUserCouponResponse : GetMarketingPartnerProductCouponUserCouponByCouponCodeResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/GetMarketingPartnerProductCouponUserCouponByCouponCodeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/GetMarketingPartnerProductCouponUserCouponByCouponCodeRequest.cs new file mode 100644 index 00000000..857c0813 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/GetMarketingPartnerProductCouponUserCouponByCouponCodeRequest.cs @@ -0,0 +1,50 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/partner/product-coupon/users/{openid}/coupons/{coupon_code} 接口的请求。 + /// + public class GetMarketingPartnerProductCouponUserCouponByCouponCodeRequest : WechatTenpayRequest + { + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string StockId { get; set; } = string.Empty; + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置券 Code。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string CouponCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/GetMarketingPartnerProductCouponUserCouponByCouponCodeResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/GetMarketingPartnerProductCouponUserCouponByCouponCodeResponse.cs new file mode 100644 index 00000000..b7ad55b5 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/GetMarketingPartnerProductCouponUserCouponByCouponCodeResponse.cs @@ -0,0 +1,183 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/partner/product-coupon/users/{openid}/coupons/{coupon_code} 接口的响应。 + /// + public class GetMarketingPartnerProductCouponUserCouponByCouponCodeResponse : WechatTenpayResponse + { + public static class Types + { + public class SingleUsageDetail : QueryMarketingPartnerProductCouponUserCouponsResponse.Types.UserCoupon.Types.SingleUsageDetail + { + } + + public class SequentialUsageDetail : QueryMarketingPartnerProductCouponUserCouponsResponse.Types.UserCoupon.Types.SequentialUsageDetail + { + } + + public class ProductCouponInfo : QueryMarketingPartnerProductCouponUserCouponsResponse.Types.UserCoupon.Types.ProductCouponInfo + { + } + + public class StockInfo : QueryMarketingPartnerProductCouponUserCouponsResponse.Types.UserCoupon.Types.StockInfo + { + } + + public class TagInfo : QueryMarketingPartnerProductCouponUserCouponsResponse.Types.UserCoupon.Types.TagInfo + { + } + } + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = default!; + + /// + /// 获取或设置券 Code。 + /// + [Newtonsoft.Json.JsonProperty("coupon_code")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_code")] + public string CouponCode { get; set; } = default!; + + /// + /// 获取或设置券状态。 + /// + [Newtonsoft.Json.JsonProperty("coupon_state")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_state")] + public string CouponState { get; set; } = default!; + + /// + /// 获取或设置有效期开始时间。 + /// + [Newtonsoft.Json.JsonProperty("valid_begin_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("valid_begin_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset ValidBeginTime { get; set; } + + /// + /// 获取或设置有效期结束时间。 + /// + [Newtonsoft.Json.JsonProperty("valid_end_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("valid_end_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset ValidEndTime { get; set; } + + /// + /// 获取或设置领券时间。 + /// + [Newtonsoft.Json.JsonProperty("receive_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("receive_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset ReceiveTime { get; set; } + + /// + /// 获取或设置发券请求单号。 + /// + [Newtonsoft.Json.JsonProperty("send_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("send_request_no")] + public string SendOutRequestNumber { get; set; } = default!; + + /// + /// 获取或设置发券渠道。 + /// + [Newtonsoft.Json.JsonProperty("send_channel")] + [System.Text.Json.Serialization.JsonPropertyName("send_channel")] + public string SendChannel { get; set; } = default!; + + /// + /// 获取或设置确认请求单号。 + /// + [Newtonsoft.Json.JsonProperty("confirm_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("confirm_request_no")] + public string? ConfirmOutRequestNumber { get; set; } + + /// + /// 获取或设置确认发放时间。 + /// + [Newtonsoft.Json.JsonProperty("confirm_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("confirm_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? ConfirmTime { get; set; } + + /// + /// 获取或设置失效请求单号。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_request_no")] + public string? DeactivateOutRequestNumber { get; set; } + + /// + /// 获取或设置失效时间。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? DeactivateTime { get; set; } + + /// + /// 获取或设置失效原因。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_reason")] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_reason")] + public string? DeactivateReason { get; set; } + + /// + /// 获取或设置单券使用详情。 + /// + [Newtonsoft.Json.JsonProperty("single_usage_detail")] + [System.Text.Json.Serialization.JsonPropertyName("single_usage_detail")] + public Types.SingleUsageDetail? SingleUsageDetail { get; set; } + + /// + /// 获取或设置多次优惠使用详情。 + /// + [Newtonsoft.Json.JsonProperty("sequential_usage_detail")] + [System.Text.Json.Serialization.JsonPropertyName("sequential_usage_detail")] + public Types.SequentialUsageDetail? SequentialUsageDetail { get; set; } + + /// + /// 获取或设置商品券信息。 + /// + [Newtonsoft.Json.JsonProperty("product_coupon")] + [System.Text.Json.Serialization.JsonPropertyName("product_coupon")] + public Types.ProductCouponInfo ProductCouponInfo { get; set; } = default!; + + /// + /// 获取或设置批次信息。 + /// + [Newtonsoft.Json.JsonProperty("stock")] + [System.Text.Json.Serialization.JsonPropertyName("stock")] + public Types.StockInfo StockInfo { get; set; } = default!; + + /// + /// 获取或设置附加信息。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置渠道自定义信息。 + /// + [Newtonsoft.Json.JsonProperty("channel_custom_info")] + [System.Text.Json.Serialization.JsonPropertyName("channel_custom_info")] + public string? ChannelCustomInfo { get; set; } + + /// + /// 获取或设置标签信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_tag_info")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_tag_info")] + public Types.TagInfo? TagInfo { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/QueryMarketingPartnerProductCouponUserCouponsRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/QueryMarketingPartnerProductCouponUserCouponsRequest.cs new file mode 100644 index 00000000..76d7c626 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/QueryMarketingPartnerProductCouponUserCouponsRequest.cs @@ -0,0 +1,64 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/partner/product-coupon/users/{openid}/coupons 接口的请求。 + /// + public class QueryMarketingPartnerProductCouponUserCouponsRequest : WechatTenpayRequest + { + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? ProductCouponId { get; set; } + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? StockId { get; set; } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置券状态。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? CouponState { get; set; } + + /// + /// 获取或设置分页游标。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? PageToken { get; set; } + + /// + /// 获取或设置分页大小。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int? PageSize { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/QueryMarketingPartnerProductCouponUserCouponsResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/QueryMarketingPartnerProductCouponUserCouponsResponse.cs new file mode 100644 index 00000000..7f81427e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/QueryMarketingPartnerProductCouponUserCouponsResponse.cs @@ -0,0 +1,452 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /marketing/partner/product-coupon/users/{openid}/coupons 接口的响应。 + /// + public class QueryMarketingPartnerProductCouponUserCouponsResponse : WechatTenpayResponse + { + public static class Types + { + public class UserCoupon + { + public static class Types + { + public class UsageDetail + { + public static class Types + { + public class AssociatedOrder : UseMarketingPartnerProductCouponUserCouponRequest.Types.AssociatedOrder + { + } + } + + /// + /// 获取或设置核销请求单号。 + /// + [Newtonsoft.Json.JsonProperty("use_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("use_request_no")] + public string? UseOutRequestNumber { get; set; } + + /// + /// 获取或设置核销时间。 + /// + [Newtonsoft.Json.JsonProperty("use_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("use_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? UseTime { get; set; } + + /// + /// 获取或设置退券请求单号。 + /// + [Newtonsoft.Json.JsonProperty("return_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("return_request_no")] + public string? ReturnOutRequestNumber { get; set; } + + /// + /// 获取或设置退券时间。 + /// + [Newtonsoft.Json.JsonProperty("return_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("return_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? ReturnTime { get; set; } + + /// + /// 获取或设置关联订单信息。 + /// + [Newtonsoft.Json.JsonProperty("associated_order_info")] + [System.Text.Json.Serialization.JsonPropertyName("associated_order_info")] + public Types.AssociatedOrder? AssociatedOrder { get; set; } + } + + public class SingleUsageDetail : UsageDetail + { + } + + public class SequentialUsageDetail + { + public static class Types + { + public class DetailItem : UsageDetail + { + /// + /// 获取或设置轮次使用详情状态。 + /// + [Newtonsoft.Json.JsonProperty("detail_state")] + [System.Text.Json.Serialization.JsonPropertyName("detail_state")] + public string DetailState { get; set; } = default!; + + /// + /// 获取或设置有效期开始时间。 + /// + [Newtonsoft.Json.JsonProperty("valid_begin_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("valid_begin_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset ValidBeginTime { get; set; } + + /// + /// 获取或设置有效期结束时间。 + /// + [Newtonsoft.Json.JsonProperty("valid_end_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("valid_end_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset ValidEndTime { get; set; } + + /// + /// 获取或设置删除时间。 + /// + [Newtonsoft.Json.JsonProperty("delete_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("delete_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? DeleteTime { get; set; } + } + } + + /// + /// 获取或设置总可使用次数。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + + /// + /// 获取或设置已使用次数。 + /// + [Newtonsoft.Json.JsonProperty("used_count")] + [System.Text.Json.Serialization.JsonPropertyName("used_count")] + public int UsedCount { get; set; } + + /// + /// 获取或设置轮次使用详情列表。 + /// + [Newtonsoft.Json.JsonProperty("detail_item_list")] + [System.Text.Json.Serialization.JsonPropertyName("detail_item_list")] + public Types.DetailItem[]? DetailItemList { get; set; } + } + + public class ProductCouponInfo + { + public static class Types + { + public class SingleUsageInfo : GetMarketingPartnerProductCouponByProductCouponIdResponse.Types.SingleUsageInfo + { + } + + public class SequentialUsageInfo : GetMarketingPartnerProductCouponByProductCouponIdResponse.Types.SequentialUsageInfo + { + } + + public class DisplayInfo : GetMarketingPartnerProductCouponByProductCouponIdResponse.Types.DisplayInfo + { + } + } + + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_coupon_id")] + public string ProductCouponId { get; set; } = default!; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = default!; + + /// + /// 获取或设置优惠范围。 + /// + [Newtonsoft.Json.JsonProperty("scope")] + [System.Text.Json.Serialization.JsonPropertyName("scope")] + public string Scope { get; set; } = default!; + + /// + /// 获取或设置商品券类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get; set; } = default!; + + /// + /// 获取或设置使用模式。 + /// + [Newtonsoft.Json.JsonProperty("usage_mode")] + [System.Text.Json.Serialization.JsonPropertyName("usage_mode")] + public string UsageMode { get; set; } = default!; + + /// + /// 获取或设置单券模式信息。 + /// + [Newtonsoft.Json.JsonProperty("single_usage_info")] + [System.Text.Json.Serialization.JsonPropertyName("single_usage_info")] + public Types.SingleUsageInfo? SingleUsageInfo { get; set; } + + /// + /// 获取或设置多次优惠模式信息。 + /// + [Newtonsoft.Json.JsonProperty("sequential_usage_info")] + [System.Text.Json.Serialization.JsonPropertyName("sequential_usage_info")] + public Types.SequentialUsageInfo? SequentialUsageInfo { get; set; } + + /// + /// 获取或设置展示信息。 + /// + [Newtonsoft.Json.JsonProperty("display_info")] + [System.Text.Json.Serialization.JsonPropertyName("display_info")] + public Types.DisplayInfo DisplayInfo { get; set; } = default!; + + /// + /// 获取或设置外部商品 ID。 + /// + [Newtonsoft.Json.JsonProperty("out_product_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_product_no")] + public string? OutProductNumber { get; set; } + + /// + /// 获取或设置商品券状态。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string State { get; set; } = default!; + + /// + /// 获取或设置失效请求单号。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_request_no")] + public string? DeactivateOutRequestNumber { get; set; } + + /// + /// 获取或设置失效时间。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? DeactivateTime { get; set; } + + /// + /// 获取或设置失效原因。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_reason")] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_reason")] + public string? DeactivateReason { get; set; } + } + + public class StockInfo : QueryMarketingPartnerProductCouponStocksResponse.Types.Stock + { + } + + public class TagInfo + { + public static class Types + { + public class MemberTag + { + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("member_card_id")] + [System.Text.Json.Serialization.JsonPropertyName("member_card_id")] + public string MemberCardId { get; set; } = default!; + } + } + + /// + /// 获取或设置用户商品券标签列表。 + /// + [Newtonsoft.Json.JsonProperty("coupon_tag_list")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_tag_list")] + public string[]? CouponTagList { get; set; } + + /// + /// 获取或设置会员标签信息。 + /// + [Newtonsoft.Json.JsonProperty("member_tag_info")] + [System.Text.Json.Serialization.JsonPropertyName("member_tag_info")] + public Types.MemberTag? MemberTag { get; set; } + } + } + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = default!; + + /// + /// 获取或设置券 Code。 + /// + [Newtonsoft.Json.JsonProperty("coupon_code")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_code")] + public string CouponCode { get; set; } = default!; + + /// + /// 获取或设置券状态。 + /// + [Newtonsoft.Json.JsonProperty("coupon_state")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_state")] + public string CouponState { get; set; } = default!; + + /// + /// 获取或设置有效期开始时间。 + /// + [Newtonsoft.Json.JsonProperty("valid_begin_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("valid_begin_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset ValidBeginTime { get; set; } + + /// + /// 获取或设置有效期结束时间。 + /// + [Newtonsoft.Json.JsonProperty("valid_end_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("valid_end_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset ValidEndTime { get; set; } + + /// + /// 获取或设置领券时间。 + /// + [Newtonsoft.Json.JsonProperty("receive_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("receive_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset ReceiveTime { get; set; } + + /// + /// 获取或设置发券请求单号。 + /// + [Newtonsoft.Json.JsonProperty("send_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("send_request_no")] + public string SendOutRequestNumber { get; set; } = default!; + + /// + /// 获取或设置发券渠道。 + /// + [Newtonsoft.Json.JsonProperty("send_channel")] + [System.Text.Json.Serialization.JsonPropertyName("send_channel")] + public string SendChannel { get; set; } = default!; + + /// + /// 获取或设置确认请求单号。 + /// + [Newtonsoft.Json.JsonProperty("confirm_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("confirm_request_no")] + public string? ConfirmOutRequestNumber { get; set; } + + /// + /// 获取或设置确认发放时间。 + /// + [Newtonsoft.Json.JsonProperty("confirm_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("confirm_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? ConfirmTime { get; set; } + + /// + /// 获取或设置失效请求单号。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_request_no")] + public string? DeactivateOutRequestNumber { get; set; } + + /// + /// 获取或设置失效时间。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? DeactivateTime { get; set; } + + /// + /// 获取或设置失效原因。 + /// + [Newtonsoft.Json.JsonProperty("deactivate_reason")] + [System.Text.Json.Serialization.JsonPropertyName("deactivate_reason")] + public string? DeactivateReason { get; set; } + + /// + /// 获取或设置单券使用详情。 + /// + [Newtonsoft.Json.JsonProperty("single_usage_detail")] + [System.Text.Json.Serialization.JsonPropertyName("single_usage_detail")] + public Types.SingleUsageDetail? SingleUsageDetail { get; set; } + + /// + /// 获取或设置多次优惠使用详情。 + /// + [Newtonsoft.Json.JsonProperty("sequential_usage_detail")] + [System.Text.Json.Serialization.JsonPropertyName("sequential_usage_detail")] + public Types.SequentialUsageDetail? SequentialUsageDetail { get; set; } + + /// + /// 获取或设置商品券信息。 + /// + [Newtonsoft.Json.JsonProperty("product_coupon")] + [System.Text.Json.Serialization.JsonPropertyName("product_coupon")] + public Types.ProductCouponInfo ProductCouponInfo { get; set; } = default!; + + /// + /// 获取或设置批次信息。 + /// + [Newtonsoft.Json.JsonProperty("stock")] + [System.Text.Json.Serialization.JsonPropertyName("stock")] + public Types.StockInfo StockInfo { get; set; } = default!; + + /// + /// 获取或设置附加信息。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置渠道自定义信息。 + /// + [Newtonsoft.Json.JsonProperty("channel_custom_info")] + [System.Text.Json.Serialization.JsonPropertyName("channel_custom_info")] + public string? ChannelCustomInfo { get; set; } + + /// + /// 获取或设置标签信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_tag_info")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_tag_info")] + public Types.TagInfo? TagInfo { get; set; } + } + } + + /// + /// 获取或设置用户券列表。 + /// + [Newtonsoft.Json.JsonProperty("user_coupon_list")] + [System.Text.Json.Serialization.JsonPropertyName("user_coupon_list")] + public Types.UserCoupon[] UserCouponList { get; set; } = default!; + + /// + /// 获取或设置下一页分页游标。 + /// + [Newtonsoft.Json.JsonProperty("next_page_token")] + [System.Text.Json.Serialization.JsonPropertyName("next_page_token")] + public string? NextPageToken { get; set; } + + /// + /// 获取或设置券总数量。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponRequest.cs new file mode 100644 index 00000000..0eb472cd --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponRequest.cs @@ -0,0 +1,64 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/users/{openid}/coupons/{coupon_code}/return 接口的请求。 + /// + public class ReturnMarketingPartnerProductCouponUserCouponRequest : WechatTenpayRequest + { + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_coupon_id")] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonProperty("stock_id")] + [System.Text.Json.Serialization.JsonPropertyName("stock_id")] + public string StockId { get; set; } = string.Empty; + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置券 Code。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string CouponCode { get; set; } = string.Empty; + + /// + /// 获取或设置商户请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumber { get; set; } = string.Empty; + + /// + /// 获取或设置多次优惠索引。 + /// + [Newtonsoft.Json.JsonProperty("sequential_coupon_index")] + [System.Text.Json.Serialization.JsonPropertyName("sequential_coupon_index")] + public int? SequentialCouponIndex { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponResponse.cs new file mode 100644 index 00000000..f6b9cc66 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/users/{openid}/coupons/{coupon_code}/return 接口的响应。 + /// + public class ReturnMarketingPartnerProductCouponUserCouponResponse : GetMarketingPartnerProductCouponUserCouponByCouponCodeResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponRequest.cs new file mode 100644 index 00000000..1bd211ce --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponRequest.cs @@ -0,0 +1,106 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/users/{openid}/coupons 接口的请求。 + /// + public class SendMarketingPartnerProductCouponUserCouponRequest : WechatTenpayRequest + { + public static class Types + { + public class TagInfo + { + public static class Types + { + public class MemberTag + { + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("member_card_id")] + [System.Text.Json.Serialization.JsonPropertyName("member_card_id")] + public string MemberCardId { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置用户商品券标签列表。 + /// + [Newtonsoft.Json.JsonProperty("coupon_tag_list")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_tag_list")] + public IList? CouponTagList { get; set; } + + /// + /// 获取或设置会员标签信息。 + /// + [Newtonsoft.Json.JsonProperty("member_tag_info")] + [System.Text.Json.Serialization.JsonPropertyName("member_tag_info")] + public Types.MemberTag? MemberTag { get; set; } + } + } + + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_coupon_id")] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonProperty("stock_id")] + [System.Text.Json.Serialization.JsonPropertyName("stock_id")] + public string StockId { get; set; } = string.Empty; + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置券 Code。 + /// + [Newtonsoft.Json.JsonProperty("coupon_code")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_code")] + public string? CouponCode { get; set; } + + /// + /// 获取或设置商户请求单号。 + /// + [Newtonsoft.Json.JsonProperty("send_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("send_request_no")] + public string OutRequestNumber { get; set; } = string.Empty; + + /// + /// 获取或设置附加信息。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置标签信息。 + /// + [Newtonsoft.Json.JsonProperty("coupon_tag_info")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_tag_info")] + public Types.TagInfo? TagInfo { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponResponse.cs new file mode 100644 index 00000000..d434ebd0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/users/{openid}/coupons 接口的响应。 + /// + public class SendMarketingPartnerProductCouponUserCouponResponse : GetMarketingPartnerProductCouponUserCouponByCouponCodeResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponRequest.cs new file mode 100644 index 00000000..cc8b5e12 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponRequest.cs @@ -0,0 +1,116 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/users/{openid}/coupons/{coupon_code}/use 接口的请求。 + /// + public class UseMarketingPartnerProductCouponUserCouponRequest : WechatTenpayRequest + { + public static class Types + { + public class AssociatedOrder + { + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string? MerchantId { get; set; } + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string? SubMerchantId { get; set; } + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string? OutTradeNumber { get; set; } + + /// + /// 获取或设置微信支付单号。 + /// + [Newtonsoft.Json.JsonProperty("transaction_id")] + [System.Text.Json.Serialization.JsonPropertyName("transaction_id")] + public string? TransactionId { get; set; } + } + } + + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_coupon_id")] + public string ProductCouponId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置批次 ID。 + /// + [Newtonsoft.Json.JsonProperty("stock_id")] + [System.Text.Json.Serialization.JsonPropertyName("stock_id")] + public string StockId { get; set; } = string.Empty; + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置券 Code。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string CouponCode { get; set; } = string.Empty; + + /// + /// 获取或设置商户请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumber { get; set; } = string.Empty; + + /// + /// 获取或设置核销时间。 + /// + [Newtonsoft.Json.JsonProperty("use_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("use_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset UseTime { get; set; } + + /// + /// 获取或设置关联订单信息。 + /// + [Newtonsoft.Json.JsonProperty("associated_order_info")] + [System.Text.Json.Serialization.JsonPropertyName("associated_order_info")] + public Types.AssociatedOrder AssociatedOrder { get; set; } = new Types.AssociatedOrder(); + + /// + /// 获取或设置多次优惠索引。 + /// + [Newtonsoft.Json.JsonProperty("sequential_coupon_index")] + [System.Text.Json.Serialization.JsonPropertyName("sequential_coupon_index")] + public int? SequentialCouponIndex { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponResponse.cs new file mode 100644 index 00000000..cc9b20d6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /marketing/partner/product-coupon/users/{openid}/coupons/{coupon_code}/use 接口的响应。 + /// + public class UseMarketingPartnerProductCouponUserCouponResponse : GetMarketingPartnerProductCouponUserCouponByCouponCodeResponse + { + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponRequest.json new file mode 100644 index 00000000..75c0a613 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponRequest.json @@ -0,0 +1,83 @@ +{ + "out_product_no": "Product_1234567890", + "scope": "ALL", + "usage_mode": "SINGLE", + "display_info": { + "name": "全场满100立打8折", + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "background_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "detail_image_url_list": [ + "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + ] + }, + "single_usage_info": { + "discount_coupon": { + "threshold": 10000, + "percent_off": 20 + } + }, + "type": "DISCOUNT", + "stock": { + "remark": "8月工作日有效批次", + "coupon_code_mode": "UPLOAD", + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-08-01T00:00:00+08:00", + "available_end_time": "2025-08-31T23:59:59+08:00", + "available_days": 30, + "weekly_available_period": { + "day_list": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY" + ] + } + } + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "OFFLINE", + "MINI_PROGRAM", + "PAYMENT_CODE" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "usage_description": "工作日可用", + "coupon_available_store_info": { + "description": "所有门店可用,可使用小程序查看门店列表", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "store_scope": "NONE", + "notify_config": { + "notify_appid": "wx4fd12345678" + } + }, + "out_request_no": "12345_20250101_A3489", + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponResponse.json new file mode 100644 index 00000000..e1f0dedf --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/CreateMarketingPartnerProductCouponResponse.json @@ -0,0 +1,96 @@ +{ + "product_coupon_id": "1000000013", + "scope": "ALL", + "type": "DISCOUNT", + "usage_mode": "SINGLE", + "single_usage_info": { + "discount_coupon": { + "threshold": 10000, + "percent_off": 20 + } + }, + "display_info": { + "name": "全场满100立打8折", + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "background_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "detail_image_url_list": [ + "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + ] + }, + "state": "EFFECTIVE", + "out_product_no": "Product_1234567890", + "stock": { + "product_coupon_id": "1000000013", + "stock_id": "1000000013001", + "remark": "8月工作日有效批次", + "coupon_code_mode": "UPLOAD", + "coupon_code_count_info": { + "total_count": 0, + "available_count": 0 + }, + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-08-01T00:00:00+08:00", + "available_end_time": "2025-08-31T23:59:59+08:00", + "available_days": 30, + "weekly_available_period": { + "day_list": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY" + ] + } + } + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "OFFLINE", + "MINI_PROGRAM", + "PAYMENT_CODE" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "usage_description": "工作日可用", + "coupon_available_store_info": { + "description": "所有门店可用,可使用小程序查看门店列表", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "NONE", + "sent_count_info": { + "total_count": 0, + "today_count": 0 + }, + "state": "SENDING", + "brand_id": "120344" + }, + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponRequest.json new file mode 100644 index 00000000..c70536de --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponRequest.json @@ -0,0 +1,5 @@ +{ + "out_request_no": "34657_20250101_123456", + "deactivate_reason": "批次信息有误,重新创建", + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponResponse.json new file mode 100644 index 00000000..4f047ffc --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/DeactivateMarketingPartnerProductCouponResponse.json @@ -0,0 +1,53 @@ +{ + "product_coupon_id": "1002323", + "scope": "ALL", + "type": "NORMAL", + "usage_mode": "SEQUENTIAL", + "single_usage_info": { + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + } + }, + "sequential_usage_info": { + "type": "EQUAL", + "count": 10, + "available_days": 10, + "interval_days": 1 + }, + "display_info": { + "name": "全场满100可减10元", + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "background_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "detail_image_url_list": [ + "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + ], + "original_price": 10000, + "combo_package_list": [ + { + "name": "咖啡2选1", + "pick_count": 3, + "choice_list": [ + { + "name": "美式", + "price": 10000, + "count": 2, + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "mini_program_appid": "wx4fd12345678", + "mini_program_path": "/pages/index/index" + } + ] + } + ] + }, + "out_product_no": "Product_1234567890", + "state": "AUDITING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-06-20T13:29:35+08:00", + "deactivate_reason": "商品已下架", + "brand_id": "120344" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/GetMarketingPartnerProductCouponByProductCouponIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/GetMarketingPartnerProductCouponByProductCouponIdResponse.json new file mode 100644 index 00000000..b16b16d1 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/GetMarketingPartnerProductCouponByProductCouponIdResponse.json @@ -0,0 +1,53 @@ +{ + "product_coupon_id": "1002323", + "scope": "ALL", + "type": "NORMAL", + "usage_mode": "SEQUENTIAL", + "single_usage_info": { + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + } + }, + "sequential_usage_info": { + "type": "EQUAL", + "count": 10, + "available_days": 10, + "interval_days": 1 + }, + "display_info": { + "name": "全场满100可减10元", + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "background_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "detail_image_url_list": [ + "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + ], + "original_price": 10000, + "combo_package_list": [ + { + "name": "咖啡2选1", + "pick_count": 3, + "choice_list": [ + { + "name": "美式", + "price": 10000, + "count": 2, + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "mini_program_appid": "wx4fd12345678", + "mini_program_path": "/pages/index/index" + } + ] + } + ] + }, + "out_product_no": "Product_1234567890", + "state": "AUDITING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-06-20T13:29:35+08:00", + "deactivate_reason": "商品已下架", + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/GetMarketingPartnerProductCouponNotifyConfigResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/GetMarketingPartnerProductCouponNotifyConfigResponse.json new file mode 100644 index 00000000..186c9db8 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/GetMarketingPartnerProductCouponNotifyConfigResponse.json @@ -0,0 +1,4 @@ +{ + "notify_url": "https://www.example.com/notify", + "update_time": "2025-01-01T00:00+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigRequest.json new file mode 100644 index 00000000..294d2b0a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigRequest.json @@ -0,0 +1,3 @@ +{ + "notify_url": "https://www.example.com/notify" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigResponse.json new file mode 100644 index 00000000..186c9db8 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/NotifyConfigs/UpdateMarketingPartnerProductCouponNotifyConfigResponse.json @@ -0,0 +1,4 @@ +{ + "notify_url": "https://www.example.com/notify", + "update_time": "2025-01-01T00:00+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockRequest.json new file mode 100644 index 00000000..b7f2e276 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockRequest.json @@ -0,0 +1,129 @@ +{ + "out_request_no": "34657_20250101_123456", + "stock": { + "remark": "满减券", + "coupon_code_mode": "UPLOAD", + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_day": 10000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "available_days": 10, + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + }, + "exchange_coupon": { + "threshold": 10000, + "exchange_price": 100 + } + }, + "sequential_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon_list": [ + { + "threshold": 10000, + "discount_amount": 100 + } + ], + "discount_coupon_list": [ + { + "threshold": 10000, + "percent_off": 30 + } + ], + "exchange_coupon_list": [ + { + "threshold": 10000, + "exchange_price": 100 + } + ], + "special_first": false + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "MINI_PROGRAM" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "app_path": "https://www.example.com/jump-to-app", + "usage_description": "全场可用", + "coupon_available_store_info": { + "description": "可在上海市区的所有门店使用,详细列表参考小程序内信息为准", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "SPECIFIC" + }, + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockResponse.json new file mode 100644 index 00000000..98d39da2 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/CreateMarketingPartnerProductCouponStockResponse.json @@ -0,0 +1,140 @@ +{ + "product_coupon_id": "200000001", + "stock_id": "123456789", + "remark": "满减券", + "coupon_code_mode": "UPLOAD", + "coupon_code_count_info": { + "total_count": 10000, + "available_count": 999 + }, + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_day": 10000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "available_days": 10, + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + }, + "exchange_coupon": { + "threshold": 10000, + "exchange_price": 100 + } + }, + "sequential_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon_list": [ + { + "threshold": 10000, + "discount_amount": 100 + } + ], + "discount_coupon_list": [ + { + "threshold": 10000, + "percent_off": 30 + } + ], + "exchange_coupon_list": [ + { + "threshold": 10000, + "exchange_price": 100 + } + ], + "special_first": false + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "MINI_PROGRAM" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "app_path": "https://www.example.com/jump-to-app", + "usage_description": "全场可用", + "coupon_available_store_info": { + "description": "可在上海市区的所有门店使用,详细列表参考小程序内信息为准", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "SPECIFIC", + "sent_count_info": { + "total_count": 100, + "today_count": 10 + }, + "state": "SENDING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-01T00:00+08:00", + "deactivate_reason": "批次信息有误,重新创建", + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockRequest.json new file mode 100644 index 00000000..c70536de --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockRequest.json @@ -0,0 +1,5 @@ +{ + "out_request_no": "34657_20250101_123456", + "deactivate_reason": "批次信息有误,重新创建", + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockResponse.json new file mode 100644 index 00000000..98d39da2 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/DeactivateMarketingPartnerProductCouponStockResponse.json @@ -0,0 +1,140 @@ +{ + "product_coupon_id": "200000001", + "stock_id": "123456789", + "remark": "满减券", + "coupon_code_mode": "UPLOAD", + "coupon_code_count_info": { + "total_count": 10000, + "available_count": 999 + }, + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_day": 10000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "available_days": 10, + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + }, + "exchange_coupon": { + "threshold": 10000, + "exchange_price": 100 + } + }, + "sequential_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon_list": [ + { + "threshold": 10000, + "discount_amount": 100 + } + ], + "discount_coupon_list": [ + { + "threshold": 10000, + "percent_off": 30 + } + ], + "exchange_coupon_list": [ + { + "threshold": 10000, + "exchange_price": 100 + } + ], + "special_first": false + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "MINI_PROGRAM" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "app_path": "https://www.example.com/jump-to-app", + "usage_description": "全场可用", + "coupon_available_store_info": { + "description": "可在上海市区的所有门店使用,详细列表参考小程序内信息为准", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "SPECIFIC", + "sent_count_info": { + "total_count": 100, + "today_count": 10 + }, + "state": "SENDING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-01T00:00+08:00", + "deactivate_reason": "批次信息有误,重新创建", + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/GetMarketingPartnerProductCouponStockByStockIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/GetMarketingPartnerProductCouponStockByStockIdResponse.json new file mode 100644 index 00000000..98d39da2 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/GetMarketingPartnerProductCouponStockByStockIdResponse.json @@ -0,0 +1,140 @@ +{ + "product_coupon_id": "200000001", + "stock_id": "123456789", + "remark": "满减券", + "coupon_code_mode": "UPLOAD", + "coupon_code_count_info": { + "total_count": 10000, + "available_count": 999 + }, + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_day": 10000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "available_days": 10, + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + }, + "exchange_coupon": { + "threshold": 10000, + "exchange_price": 100 + } + }, + "sequential_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon_list": [ + { + "threshold": 10000, + "discount_amount": 100 + } + ], + "discount_coupon_list": [ + { + "threshold": 10000, + "percent_off": 30 + } + ], + "exchange_coupon_list": [ + { + "threshold": 10000, + "exchange_price": 100 + } + ], + "special_first": false + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "MINI_PROGRAM" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "app_path": "https://www.example.com/jump-to-app", + "usage_description": "全场可用", + "coupon_available_store_info": { + "description": "可在上海市区的所有门店使用,详细列表参考小程序内信息为准", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "SPECIFIC", + "sent_count_info": { + "total_count": 100, + "today_count": 10 + }, + "state": "SENDING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-01T00:00+08:00", + "deactivate_reason": "批次信息有误,重新创建", + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/QueryMarketingPartnerProductCouponStocksResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/QueryMarketingPartnerProductCouponStocksResponse.json new file mode 100644 index 00000000..f4b14a63 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/QueryMarketingPartnerProductCouponStocksResponse.json @@ -0,0 +1,146 @@ +{ + "total_count": 100, + "stock_list": [ + { + "product_coupon_id": "200000001", + "stock_id": "123456789", + "remark": "满减券", + "coupon_code_mode": "UPLOAD", + "coupon_code_count_info": { + "total_count": 10000, + "available_count": 999 + }, + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_day": 10000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "available_days": 10, + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + }, + "exchange_coupon": { + "threshold": 10000, + "exchange_price": 100 + } + }, + "sequential_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon_list": [ + { + "threshold": 10000, + "discount_amount": 100 + } + ], + "discount_coupon_list": [ + { + "threshold": 10000, + "percent_off": 30 + } + ], + "exchange_coupon_list": [ + { + "threshold": 10000, + "exchange_price": 100 + } + ], + "special_first": false + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "MINI_PROGRAM" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "app_path": "https://www.example.com/jump-to-app", + "usage_description": "全场可用", + "coupon_available_store_info": { + "description": "可在上海市区的所有门店使用,详细列表参考小程序内信息为准", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "SPECIFIC", + "sent_count_info": { + "total_count": 100, + "today_count": 10 + }, + "state": "SENDING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-01T00:00+08:00", + "deactivate_reason": "批次信息有误,重新创建", + "brand_id": "120344" + } + ], + "next_page_token": "MTIzNDUK" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresRequest.json new file mode 100644 index 00000000..fa5d557c --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresRequest.json @@ -0,0 +1,8 @@ +{ + "store_list": [ + { + "store_id": "100000001" + } + ], + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresResponse.json new file mode 100644 index 00000000..12b9a5e8 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/AssociateMarketingPartnerProductCouponStockToStoresResponse.json @@ -0,0 +1,15 @@ +{ + "total_count": 10, + "success_store_list": [ + { + "store_id": "100000001" + } + ], + "failed_store_list": [ + { + "store_id": "100000001", + "code": "INVALID_REQUEST", + "message": "门店ID非法或不属于当前品牌" + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresRequest.json new file mode 100644 index 00000000..fa5d557c --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresRequest.json @@ -0,0 +1,8 @@ +{ + "store_list": [ + { + "store_id": "100000001" + } + ], + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresResponse.json new file mode 100644 index 00000000..12b9a5e8 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/DisassociateMarketingPartnerProductCouponStockFromStoresResponse.json @@ -0,0 +1,15 @@ +{ + "total_count": 10, + "success_store_list": [ + { + "store_id": "100000001" + } + ], + "failed_store_list": [ + { + "store_id": "100000001", + "code": "INVALID_REQUEST", + "message": "门店ID非法或不属于当前品牌" + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/QueryMarketingPartnerProductCouponStockAssociatedStoresResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/QueryMarketingPartnerProductCouponStockAssociatedStoresResponse.json new file mode 100644 index 00000000..ef8b7bc3 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/Stores/QueryMarketingPartnerProductCouponStockAssociatedStoresResponse.json @@ -0,0 +1,9 @@ +{ + "total_count": 500, + "store_list": [ + { + "store_id": "100000001" + } + ], + "next_page_token": "MTIzNDUK" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetRequest.json new file mode 100644 index 00000000..0c5f1f32 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetRequest.json @@ -0,0 +1,9 @@ +{ + "out_request_no": "BUDGET1212512514", + "update_mode": "MAX_COUNT", + "current_max_count": 1, + "target_max_count": 1, + "current_max_count_per_day": 1, + "target_max_count_per_day": 1, + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetResponse.json new file mode 100644 index 00000000..98d39da2 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockBudgetResponse.json @@ -0,0 +1,140 @@ +{ + "product_coupon_id": "200000001", + "stock_id": "123456789", + "remark": "满减券", + "coupon_code_mode": "UPLOAD", + "coupon_code_count_info": { + "total_count": 10000, + "available_count": 999 + }, + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_day": 10000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "available_days": 10, + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + }, + "exchange_coupon": { + "threshold": 10000, + "exchange_price": 100 + } + }, + "sequential_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon_list": [ + { + "threshold": 10000, + "discount_amount": 100 + } + ], + "discount_coupon_list": [ + { + "threshold": 10000, + "percent_off": 30 + } + ], + "exchange_coupon_list": [ + { + "threshold": 10000, + "exchange_price": 100 + } + ], + "special_first": false + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "MINI_PROGRAM" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "app_path": "https://www.example.com/jump-to-app", + "usage_description": "全场可用", + "coupon_available_store_info": { + "description": "可在上海市区的所有门店使用,详细列表参考小程序内信息为准", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "SPECIFIC", + "sent_count_info": { + "total_count": 100, + "today_count": 10 + }, + "state": "SENDING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-01T00:00+08:00", + "deactivate_reason": "批次信息有误,重新创建", + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockRequest.json new file mode 100644 index 00000000..6b634674 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockRequest.json @@ -0,0 +1,41 @@ +{ + "out_request_no": "34657_20250101_123456", + "remark": "疯狂星期四项目专用", + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "MINI_PROGRAM" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "app_path": "https://www.example.com/jump-to-app", + "usage_description": "全场可用", + "coupon_available_store_info": { + "description": "可在上海市区的所有门店使用,详细列表参考小程序内信息为准", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "SPECIFIC", + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockResponse.json new file mode 100644 index 00000000..98d39da2 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UpdateMarketingPartnerProductCouponStockResponse.json @@ -0,0 +1,140 @@ +{ + "product_coupon_id": "200000001", + "stock_id": "123456789", + "remark": "满减券", + "coupon_code_mode": "UPLOAD", + "coupon_code_count_info": { + "total_count": 10000, + "available_count": 999 + }, + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_day": 10000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "available_days": 10, + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + }, + "exchange_coupon": { + "threshold": 10000, + "exchange_price": 100 + } + }, + "sequential_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon_list": [ + { + "threshold": 10000, + "discount_amount": 100 + } + ], + "discount_coupon_list": [ + { + "threshold": 10000, + "percent_off": 30 + } + ], + "exchange_coupon_list": [ + { + "threshold": 10000, + "exchange_price": 100 + } + ], + "special_first": false + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "MINI_PROGRAM" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "app_path": "https://www.example.com/jump-to-app", + "usage_description": "全场可用", + "coupon_available_store_info": { + "description": "可在上海市区的所有门店使用,详细列表参考小程序内信息为准", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "SPECIFIC", + "sent_count_info": { + "total_count": 100, + "today_count": 10 + }, + "state": "SENDING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-01T00:00+08:00", + "deactivate_reason": "批次信息有误,重新创建", + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesRequest.json new file mode 100644 index 00000000..88936f40 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesRequest.json @@ -0,0 +1,7 @@ +{ + "out_request_no": "34657_20250101_123456", + "code_list": [ + "vCode_1234567890" + ], + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesResponse.json new file mode 100644 index 00000000..64142e60 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/Stocks/UploadMarketingPartnerProductCouponStockCouponCodesResponse.json @@ -0,0 +1,19 @@ +{ + "total_count": 1, + "success_code_list": [ + "vCode_8888888888" + ], + "failed_code_list": [ + { + "coupon_code": "vCode_1234567890", + "code": "SYSTEM_ERROR", + "message": "系统失败" + } + ], + "already_exist_code_list": [ + "vCode_1111111111" + ], + "duplicate_code_list": [ + "vCode_8888888888" + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponRequest.json new file mode 100644 index 00000000..8bcc0906 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponRequest.json @@ -0,0 +1,29 @@ +{ + "out_request_no": "34657_20250101_123456", + "display_info": { + "name": "全场满100可减10元", + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "background_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "detail_image_url_list": [ + "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + ], + "original_price": 10000, + "combo_package_list": [ + { + "name": "咖啡2选1", + "pick_count": 3, + "choice_list": [ + { + "name": "美式", + "price": 10000, + "count": 2, + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "mini_program_appid": "wx4fd12345678", + "mini_program_path": "/pages/index/index" + } + ] + } + ] + }, + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponResponse.json new file mode 100644 index 00000000..b16b16d1 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UpdateMarketingPartnerProductCouponResponse.json @@ -0,0 +1,53 @@ +{ + "product_coupon_id": "1002323", + "scope": "ALL", + "type": "NORMAL", + "usage_mode": "SEQUENTIAL", + "single_usage_info": { + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + } + }, + "sequential_usage_info": { + "type": "EQUAL", + "count": 10, + "available_days": 10, + "interval_days": 1 + }, + "display_info": { + "name": "全场满100可减10元", + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "background_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "detail_image_url_list": [ + "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + ], + "original_price": 10000, + "combo_package_list": [ + { + "name": "咖啡2选1", + "pick_count": 3, + "choice_list": [ + { + "name": "美式", + "price": 10000, + "count": 2, + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "mini_program_appid": "wx4fd12345678", + "mini_program_path": "/pages/index/index" + } + ] + } + ] + }, + "out_product_no": "Product_1234567890", + "state": "AUDITING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-06-20T13:29:35+08:00", + "deactivate_reason": "商品已下架", + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageRequest.json new file mode 100644 index 00000000..ef5c1127 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageRequest.json @@ -0,0 +1,4 @@ +{ + "filename": "header.jpg", + "sha256": "6aa6c99ce1d04afc2668154126c607af5a680734fa119e2a096529f6d6f2c0a2" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageResponse.json new file mode 100644 index 00000000..4df8af3a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UploadMarketingPartnerProductCouponMediaImageResponse.json @@ -0,0 +1,3 @@ +{ + "image_url": "https://qpic.cn/xxx" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponRequest.json new file mode 100644 index 00000000..8858fd5d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponRequest.json @@ -0,0 +1,7 @@ +{ + "product_coupon_id": "1002323", + "stock_id": "100232301", + "appid": "wx233544546545989", + "out_request_no": "MCHCONFIRM202003101234", + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponResponse.json new file mode 100644 index 00000000..8f861e6d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ConfirmMarketingPartnerProductCouponUserCouponResponse.json @@ -0,0 +1,252 @@ +{ + "coupon_code": "123446565767", + "coupon_state": "USED", + "valid_begin_time": "2025-01-01T00:00+08:00", + "valid_end_time": "2025-01-30T23:59:59+08:00", + "receive_time": "2025-01-01T09:10:00+08:00", + "send_request_no": "MCHSEND202003101234", + "send_channel": "API", + "confirm_request_no": "MCHCONFIRM202003101234", + "confirm_time": "2025-01-20T13:29:35+08:00", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-20T13:29:35+08:00", + "deactivate_reason": "商品已下线", + "single_usage_detail": { + "use_request_no": "MCHUSE202003101234", + "use_time": "2025-07-20T13:29:35+08:00", + "associated_order_info": { + "transaction_id": "4200000000123456789123456789", + "out_trade_no": "trade_no_20250724123456", + "mchid": "1234567890", + "sub_mchid": "1234567890" + }, + "return_request_no": "MCHRETURN202003101234", + "return_time": "2025-07-20T14:29:35+08:00" + }, + "sequential_usage_detail": { + "total_count": 10, + "used_count": 3, + "detail_item_list": [ + { + "detail_state": "USED", + "valid_begin_time": "2025-07-24T00:00+08:00", + "valid_end_time": "2025-07-30T23:59:59+08:00", + "use_request_no": "MCHUSE202003101234", + "use_time": "2025-07-20T13:29:35+08:00", + "associated_order_info": { + "transaction_id": "4200000000123456789123456789", + "out_trade_no": "trade_no_20250724123456", + "mchid": "1234567890", + "sub_mchid": "1234567890" + }, + "return_request_no": "MCHRETURN202003101234", + "return_time": "2025-07-20T14:29:35+08:00", + "delete_time": "2025-07-20T14:29:35+08:00" + } + ] + }, + "product_coupon": { + "product_coupon_id": "1002323", + "scope": "ALL", + "type": "NORMAL", + "usage_mode": "SEQUENTIAL", + "single_usage_info": { + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + } + }, + "sequential_usage_info": { + "type": "EQUAL", + "count": 10, + "available_days": 10, + "interval_days": 1 + }, + "display_info": { + "name": "全场满100可减10元", + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "background_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "detail_image_url_list": [ + "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + ], + "original_price": 10000, + "combo_package_list": [ + { + "name": "咖啡2选1", + "pick_count": 3, + "choice_list": [ + { + "name": "美式", + "price": 10000, + "count": 2, + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "mini_program_appid": "wx4fd12345678", + "mini_program_path": "/pages/index/index" + } + ] + } + ] + }, + "out_product_no": "Product_1234567890", + "state": "AUDITING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-06-20T13:29:35+08:00", + "deactivate_reason": "商品已下架", + "brand_id": "120344" + }, + "stock": { + "product_coupon_id": "200000001", + "stock_id": "123456789", + "remark": "满减券", + "coupon_code_mode": "UPLOAD", + "coupon_code_count_info": { + "total_count": 10000, + "available_count": 999 + }, + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_day": 10000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "available_days": 10, + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + }, + "exchange_coupon": { + "threshold": 10000, + "exchange_price": 100 + } + }, + "sequential_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon_list": [ + { + "threshold": 10000, + "discount_amount": 100 + } + ], + "discount_coupon_list": [ + { + "threshold": 10000, + "percent_off": 30 + } + ], + "exchange_coupon_list": [ + { + "threshold": 10000, + "exchange_price": 100 + } + ], + "special_first": false + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "MINI_PROGRAM" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "app_path": "https://www.example.com/jump-to-app", + "usage_description": "全场可用", + "coupon_available_store_info": { + "description": "可在上海市区的所有门店使用,详细列表参考小程序内信息为准", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "SPECIFIC", + "sent_count_info": { + "total_count": 100, + "today_count": 10 + }, + "state": "SENDING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-01T00:00+08:00", + "deactivate_reason": "批次信息有误,重新创建", + "brand_id": "120344" + }, + "attach": "example_attach", + "channel_custom_info": "example_channel_custom_info", + "brand_id": "120344", + "coupon_tag_info": { + "coupon_tag_list": [ + "MEMBER" + ], + "member_tag_info": { + "member_card_id": "MemberCardId_1234567890" + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponRequest.json new file mode 100644 index 00000000..fe183a26 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponRequest.json @@ -0,0 +1,8 @@ +{ + "product_coupon_id": "1002323", + "stock_id": "100232301", + "appid": "wx233544546545989", + "out_request_no": "1002600620019090123144054436", + "deactivate_reason": "商品已下线,使用户商品券失效", + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponResponse.json new file mode 100644 index 00000000..8f861e6d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/DeactivateMarketingPartnerProductCouponUserCouponResponse.json @@ -0,0 +1,252 @@ +{ + "coupon_code": "123446565767", + "coupon_state": "USED", + "valid_begin_time": "2025-01-01T00:00+08:00", + "valid_end_time": "2025-01-30T23:59:59+08:00", + "receive_time": "2025-01-01T09:10:00+08:00", + "send_request_no": "MCHSEND202003101234", + "send_channel": "API", + "confirm_request_no": "MCHCONFIRM202003101234", + "confirm_time": "2025-01-20T13:29:35+08:00", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-20T13:29:35+08:00", + "deactivate_reason": "商品已下线", + "single_usage_detail": { + "use_request_no": "MCHUSE202003101234", + "use_time": "2025-07-20T13:29:35+08:00", + "associated_order_info": { + "transaction_id": "4200000000123456789123456789", + "out_trade_no": "trade_no_20250724123456", + "mchid": "1234567890", + "sub_mchid": "1234567890" + }, + "return_request_no": "MCHRETURN202003101234", + "return_time": "2025-07-20T14:29:35+08:00" + }, + "sequential_usage_detail": { + "total_count": 10, + "used_count": 3, + "detail_item_list": [ + { + "detail_state": "USED", + "valid_begin_time": "2025-07-24T00:00+08:00", + "valid_end_time": "2025-07-30T23:59:59+08:00", + "use_request_no": "MCHUSE202003101234", + "use_time": "2025-07-20T13:29:35+08:00", + "associated_order_info": { + "transaction_id": "4200000000123456789123456789", + "out_trade_no": "trade_no_20250724123456", + "mchid": "1234567890", + "sub_mchid": "1234567890" + }, + "return_request_no": "MCHRETURN202003101234", + "return_time": "2025-07-20T14:29:35+08:00", + "delete_time": "2025-07-20T14:29:35+08:00" + } + ] + }, + "product_coupon": { + "product_coupon_id": "1002323", + "scope": "ALL", + "type": "NORMAL", + "usage_mode": "SEQUENTIAL", + "single_usage_info": { + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + } + }, + "sequential_usage_info": { + "type": "EQUAL", + "count": 10, + "available_days": 10, + "interval_days": 1 + }, + "display_info": { + "name": "全场满100可减10元", + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "background_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "detail_image_url_list": [ + "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + ], + "original_price": 10000, + "combo_package_list": [ + { + "name": "咖啡2选1", + "pick_count": 3, + "choice_list": [ + { + "name": "美式", + "price": 10000, + "count": 2, + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "mini_program_appid": "wx4fd12345678", + "mini_program_path": "/pages/index/index" + } + ] + } + ] + }, + "out_product_no": "Product_1234567890", + "state": "AUDITING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-06-20T13:29:35+08:00", + "deactivate_reason": "商品已下架", + "brand_id": "120344" + }, + "stock": { + "product_coupon_id": "200000001", + "stock_id": "123456789", + "remark": "满减券", + "coupon_code_mode": "UPLOAD", + "coupon_code_count_info": { + "total_count": 10000, + "available_count": 999 + }, + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_day": 10000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "available_days": 10, + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + }, + "exchange_coupon": { + "threshold": 10000, + "exchange_price": 100 + } + }, + "sequential_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon_list": [ + { + "threshold": 10000, + "discount_amount": 100 + } + ], + "discount_coupon_list": [ + { + "threshold": 10000, + "percent_off": 30 + } + ], + "exchange_coupon_list": [ + { + "threshold": 10000, + "exchange_price": 100 + } + ], + "special_first": false + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "MINI_PROGRAM" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "app_path": "https://www.example.com/jump-to-app", + "usage_description": "全场可用", + "coupon_available_store_info": { + "description": "可在上海市区的所有门店使用,详细列表参考小程序内信息为准", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "SPECIFIC", + "sent_count_info": { + "total_count": 100, + "today_count": 10 + }, + "state": "SENDING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-01T00:00+08:00", + "deactivate_reason": "批次信息有误,重新创建", + "brand_id": "120344" + }, + "attach": "example_attach", + "channel_custom_info": "example_channel_custom_info", + "brand_id": "120344", + "coupon_tag_info": { + "coupon_tag_list": [ + "MEMBER" + ], + "member_tag_info": { + "member_card_id": "MemberCardId_1234567890" + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/GetMarketingPartnerProductCouponUserCouponByCouponCodeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/GetMarketingPartnerProductCouponUserCouponByCouponCodeResponse.json new file mode 100644 index 00000000..8f861e6d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/GetMarketingPartnerProductCouponUserCouponByCouponCodeResponse.json @@ -0,0 +1,252 @@ +{ + "coupon_code": "123446565767", + "coupon_state": "USED", + "valid_begin_time": "2025-01-01T00:00+08:00", + "valid_end_time": "2025-01-30T23:59:59+08:00", + "receive_time": "2025-01-01T09:10:00+08:00", + "send_request_no": "MCHSEND202003101234", + "send_channel": "API", + "confirm_request_no": "MCHCONFIRM202003101234", + "confirm_time": "2025-01-20T13:29:35+08:00", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-20T13:29:35+08:00", + "deactivate_reason": "商品已下线", + "single_usage_detail": { + "use_request_no": "MCHUSE202003101234", + "use_time": "2025-07-20T13:29:35+08:00", + "associated_order_info": { + "transaction_id": "4200000000123456789123456789", + "out_trade_no": "trade_no_20250724123456", + "mchid": "1234567890", + "sub_mchid": "1234567890" + }, + "return_request_no": "MCHRETURN202003101234", + "return_time": "2025-07-20T14:29:35+08:00" + }, + "sequential_usage_detail": { + "total_count": 10, + "used_count": 3, + "detail_item_list": [ + { + "detail_state": "USED", + "valid_begin_time": "2025-07-24T00:00+08:00", + "valid_end_time": "2025-07-30T23:59:59+08:00", + "use_request_no": "MCHUSE202003101234", + "use_time": "2025-07-20T13:29:35+08:00", + "associated_order_info": { + "transaction_id": "4200000000123456789123456789", + "out_trade_no": "trade_no_20250724123456", + "mchid": "1234567890", + "sub_mchid": "1234567890" + }, + "return_request_no": "MCHRETURN202003101234", + "return_time": "2025-07-20T14:29:35+08:00", + "delete_time": "2025-07-20T14:29:35+08:00" + } + ] + }, + "product_coupon": { + "product_coupon_id": "1002323", + "scope": "ALL", + "type": "NORMAL", + "usage_mode": "SEQUENTIAL", + "single_usage_info": { + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + } + }, + "sequential_usage_info": { + "type": "EQUAL", + "count": 10, + "available_days": 10, + "interval_days": 1 + }, + "display_info": { + "name": "全场满100可减10元", + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "background_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "detail_image_url_list": [ + "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + ], + "original_price": 10000, + "combo_package_list": [ + { + "name": "咖啡2选1", + "pick_count": 3, + "choice_list": [ + { + "name": "美式", + "price": 10000, + "count": 2, + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "mini_program_appid": "wx4fd12345678", + "mini_program_path": "/pages/index/index" + } + ] + } + ] + }, + "out_product_no": "Product_1234567890", + "state": "AUDITING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-06-20T13:29:35+08:00", + "deactivate_reason": "商品已下架", + "brand_id": "120344" + }, + "stock": { + "product_coupon_id": "200000001", + "stock_id": "123456789", + "remark": "满减券", + "coupon_code_mode": "UPLOAD", + "coupon_code_count_info": { + "total_count": 10000, + "available_count": 999 + }, + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_day": 10000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "available_days": 10, + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + }, + "exchange_coupon": { + "threshold": 10000, + "exchange_price": 100 + } + }, + "sequential_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon_list": [ + { + "threshold": 10000, + "discount_amount": 100 + } + ], + "discount_coupon_list": [ + { + "threshold": 10000, + "percent_off": 30 + } + ], + "exchange_coupon_list": [ + { + "threshold": 10000, + "exchange_price": 100 + } + ], + "special_first": false + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "MINI_PROGRAM" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "app_path": "https://www.example.com/jump-to-app", + "usage_description": "全场可用", + "coupon_available_store_info": { + "description": "可在上海市区的所有门店使用,详细列表参考小程序内信息为准", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "SPECIFIC", + "sent_count_info": { + "total_count": 100, + "today_count": 10 + }, + "state": "SENDING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-01T00:00+08:00", + "deactivate_reason": "批次信息有误,重新创建", + "brand_id": "120344" + }, + "attach": "example_attach", + "channel_custom_info": "example_channel_custom_info", + "brand_id": "120344", + "coupon_tag_info": { + "coupon_tag_list": [ + "MEMBER" + ], + "member_tag_info": { + "member_card_id": "MemberCardId_1234567890" + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/QueryMarketingPartnerProductCouponUserCouponsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/QueryMarketingPartnerProductCouponUserCouponsResponse.json new file mode 100644 index 00000000..0a2a4e69 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/QueryMarketingPartnerProductCouponUserCouponsResponse.json @@ -0,0 +1,258 @@ +{ + "total_count": 20, + "user_coupon_list": [ + { + "coupon_code": "123446565767", + "coupon_state": "USED", + "valid_begin_time": "2025-01-01T00:00+08:00", + "valid_end_time": "2025-01-30T23:59:59+08:00", + "receive_time": "2025-01-01T09:10:00+08:00", + "send_request_no": "MCHSEND202003101234", + "send_channel": "API", + "confirm_request_no": "MCHCONFIRM202003101234", + "confirm_time": "2025-01-20T13:29:35+08:00", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-20T13:29:35+08:00", + "deactivate_reason": "商品已下线", + "single_usage_detail": { + "use_request_no": "MCHUSE202003101234", + "use_time": "2025-07-20T13:29:35+08:00", + "associated_order_info": { + "transaction_id": "4200000000123456789123456789", + "out_trade_no": "trade_no_20250724123456", + "mchid": "1234567890", + "sub_mchid": "1234567890" + }, + "return_request_no": "MCHRETURN202003101234", + "return_time": "2025-07-20T14:29:35+08:00" + }, + "sequential_usage_detail": { + "total_count": 10, + "used_count": 3, + "detail_item_list": [ + { + "detail_state": "USED", + "valid_begin_time": "2025-07-24T00:00+08:00", + "valid_end_time": "2025-07-30T23:59:59+08:00", + "use_request_no": "MCHUSE202003101234", + "use_time": "2025-07-20T13:29:35+08:00", + "associated_order_info": { + "transaction_id": "4200000000123456789123456789", + "out_trade_no": "trade_no_20250724123456", + "mchid": "1234567890", + "sub_mchid": "1234567890" + }, + "return_request_no": "MCHRETURN202003101234", + "return_time": "2025-07-20T14:29:35+08:00", + "delete_time": "2025-07-20T14:29:35+08:00" + } + ] + }, + "product_coupon": { + "product_coupon_id": "1002323", + "scope": "ALL", + "type": "NORMAL", + "usage_mode": "SEQUENTIAL", + "single_usage_info": { + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + } + }, + "sequential_usage_info": { + "type": "EQUAL", + "count": 10, + "available_days": 10, + "interval_days": 1 + }, + "display_info": { + "name": "全场满100可减10元", + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "background_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "detail_image_url_list": [ + "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + ], + "original_price": 10000, + "combo_package_list": [ + { + "name": "咖啡2选1", + "pick_count": 3, + "choice_list": [ + { + "name": "美式", + "price": 10000, + "count": 2, + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "mini_program_appid": "wx4fd12345678", + "mini_program_path": "/pages/index/index" + } + ] + } + ] + }, + "out_product_no": "Product_1234567890", + "state": "AUDITING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-06-20T13:29:35+08:00", + "deactivate_reason": "商品已下架", + "brand_id": "120344" + }, + "stock": { + "product_coupon_id": "200000001", + "stock_id": "123456789", + "remark": "满减券", + "coupon_code_mode": "UPLOAD", + "coupon_code_count_info": { + "total_count": 10000, + "available_count": 999 + }, + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_day": 10000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "available_days": 10, + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + }, + "exchange_coupon": { + "threshold": 10000, + "exchange_price": 100 + } + }, + "sequential_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon_list": [ + { + "threshold": 10000, + "discount_amount": 100 + } + ], + "discount_coupon_list": [ + { + "threshold": 10000, + "percent_off": 30 + } + ], + "exchange_coupon_list": [ + { + "threshold": 10000, + "exchange_price": 100 + } + ], + "special_first": false + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "MINI_PROGRAM" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "app_path": "https://www.example.com/jump-to-app", + "usage_description": "全场可用", + "coupon_available_store_info": { + "description": "可在上海市区的所有门店使用,详细列表参考小程序内信息为准", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "SPECIFIC", + "sent_count_info": { + "total_count": 100, + "today_count": 10 + }, + "state": "SENDING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-01T00:00+08:00", + "deactivate_reason": "批次信息有误,重新创建", + "brand_id": "120344" + }, + "attach": "example_attach", + "channel_custom_info": "example_channel_custom_info", + "brand_id": "120344", + "coupon_tag_info": { + "coupon_tag_list": [ + "MEMBER" + ], + "member_tag_info": { + "member_card_id": "MemberCardId_1234567890" + } + } + } + ], + "next_page_token": "MTIzNDUK" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponRequest.json new file mode 100644 index 00000000..a87df88d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponRequest.json @@ -0,0 +1,8 @@ +{ + "product_coupon_id": "1002323", + "stock_id": "100232301", + "appid": "wx233544546545989", + "out_request_no": "MCHRETURN202003101234", + "sequential_coupon_index": 0, + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponResponse.json new file mode 100644 index 00000000..8f861e6d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/ReturnMarketingPartnerProductCouponUserCouponResponse.json @@ -0,0 +1,252 @@ +{ + "coupon_code": "123446565767", + "coupon_state": "USED", + "valid_begin_time": "2025-01-01T00:00+08:00", + "valid_end_time": "2025-01-30T23:59:59+08:00", + "receive_time": "2025-01-01T09:10:00+08:00", + "send_request_no": "MCHSEND202003101234", + "send_channel": "API", + "confirm_request_no": "MCHCONFIRM202003101234", + "confirm_time": "2025-01-20T13:29:35+08:00", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-20T13:29:35+08:00", + "deactivate_reason": "商品已下线", + "single_usage_detail": { + "use_request_no": "MCHUSE202003101234", + "use_time": "2025-07-20T13:29:35+08:00", + "associated_order_info": { + "transaction_id": "4200000000123456789123456789", + "out_trade_no": "trade_no_20250724123456", + "mchid": "1234567890", + "sub_mchid": "1234567890" + }, + "return_request_no": "MCHRETURN202003101234", + "return_time": "2025-07-20T14:29:35+08:00" + }, + "sequential_usage_detail": { + "total_count": 10, + "used_count": 3, + "detail_item_list": [ + { + "detail_state": "USED", + "valid_begin_time": "2025-07-24T00:00+08:00", + "valid_end_time": "2025-07-30T23:59:59+08:00", + "use_request_no": "MCHUSE202003101234", + "use_time": "2025-07-20T13:29:35+08:00", + "associated_order_info": { + "transaction_id": "4200000000123456789123456789", + "out_trade_no": "trade_no_20250724123456", + "mchid": "1234567890", + "sub_mchid": "1234567890" + }, + "return_request_no": "MCHRETURN202003101234", + "return_time": "2025-07-20T14:29:35+08:00", + "delete_time": "2025-07-20T14:29:35+08:00" + } + ] + }, + "product_coupon": { + "product_coupon_id": "1002323", + "scope": "ALL", + "type": "NORMAL", + "usage_mode": "SEQUENTIAL", + "single_usage_info": { + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + } + }, + "sequential_usage_info": { + "type": "EQUAL", + "count": 10, + "available_days": 10, + "interval_days": 1 + }, + "display_info": { + "name": "全场满100可减10元", + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "background_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "detail_image_url_list": [ + "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + ], + "original_price": 10000, + "combo_package_list": [ + { + "name": "咖啡2选1", + "pick_count": 3, + "choice_list": [ + { + "name": "美式", + "price": 10000, + "count": 2, + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "mini_program_appid": "wx4fd12345678", + "mini_program_path": "/pages/index/index" + } + ] + } + ] + }, + "out_product_no": "Product_1234567890", + "state": "AUDITING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-06-20T13:29:35+08:00", + "deactivate_reason": "商品已下架", + "brand_id": "120344" + }, + "stock": { + "product_coupon_id": "200000001", + "stock_id": "123456789", + "remark": "满减券", + "coupon_code_mode": "UPLOAD", + "coupon_code_count_info": { + "total_count": 10000, + "available_count": 999 + }, + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_day": 10000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "available_days": 10, + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + }, + "exchange_coupon": { + "threshold": 10000, + "exchange_price": 100 + } + }, + "sequential_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon_list": [ + { + "threshold": 10000, + "discount_amount": 100 + } + ], + "discount_coupon_list": [ + { + "threshold": 10000, + "percent_off": 30 + } + ], + "exchange_coupon_list": [ + { + "threshold": 10000, + "exchange_price": 100 + } + ], + "special_first": false + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "MINI_PROGRAM" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "app_path": "https://www.example.com/jump-to-app", + "usage_description": "全场可用", + "coupon_available_store_info": { + "description": "可在上海市区的所有门店使用,详细列表参考小程序内信息为准", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "SPECIFIC", + "sent_count_info": { + "total_count": 100, + "today_count": 10 + }, + "state": "SENDING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-01T00:00+08:00", + "deactivate_reason": "批次信息有误,重新创建", + "brand_id": "120344" + }, + "attach": "example_attach", + "channel_custom_info": "example_channel_custom_info", + "brand_id": "120344", + "coupon_tag_info": { + "coupon_tag_list": [ + "MEMBER" + ], + "member_tag_info": { + "member_card_id": "MemberCardId_1234567890" + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponRequest.json new file mode 100644 index 00000000..9d283289 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponRequest.json @@ -0,0 +1,17 @@ +{ + "product_coupon_id": "200000001", + "stock_id": "100232301", + "coupon_code": "123446565767", + "appid": "wx233544546545989", + "send_request_no": "34657_20250101_123456", + "attach": "example_attach", + "brand_id": "120344", + "coupon_tag_info": { + "coupon_tag_list": [ + "MEMBER" + ], + "member_tag_info": { + "member_card_id": "MemberCardId_1234567890" + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponResponse.json new file mode 100644 index 00000000..8f861e6d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/SendMarketingPartnerProductCouponUserCouponResponse.json @@ -0,0 +1,252 @@ +{ + "coupon_code": "123446565767", + "coupon_state": "USED", + "valid_begin_time": "2025-01-01T00:00+08:00", + "valid_end_time": "2025-01-30T23:59:59+08:00", + "receive_time": "2025-01-01T09:10:00+08:00", + "send_request_no": "MCHSEND202003101234", + "send_channel": "API", + "confirm_request_no": "MCHCONFIRM202003101234", + "confirm_time": "2025-01-20T13:29:35+08:00", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-20T13:29:35+08:00", + "deactivate_reason": "商品已下线", + "single_usage_detail": { + "use_request_no": "MCHUSE202003101234", + "use_time": "2025-07-20T13:29:35+08:00", + "associated_order_info": { + "transaction_id": "4200000000123456789123456789", + "out_trade_no": "trade_no_20250724123456", + "mchid": "1234567890", + "sub_mchid": "1234567890" + }, + "return_request_no": "MCHRETURN202003101234", + "return_time": "2025-07-20T14:29:35+08:00" + }, + "sequential_usage_detail": { + "total_count": 10, + "used_count": 3, + "detail_item_list": [ + { + "detail_state": "USED", + "valid_begin_time": "2025-07-24T00:00+08:00", + "valid_end_time": "2025-07-30T23:59:59+08:00", + "use_request_no": "MCHUSE202003101234", + "use_time": "2025-07-20T13:29:35+08:00", + "associated_order_info": { + "transaction_id": "4200000000123456789123456789", + "out_trade_no": "trade_no_20250724123456", + "mchid": "1234567890", + "sub_mchid": "1234567890" + }, + "return_request_no": "MCHRETURN202003101234", + "return_time": "2025-07-20T14:29:35+08:00", + "delete_time": "2025-07-20T14:29:35+08:00" + } + ] + }, + "product_coupon": { + "product_coupon_id": "1002323", + "scope": "ALL", + "type": "NORMAL", + "usage_mode": "SEQUENTIAL", + "single_usage_info": { + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + } + }, + "sequential_usage_info": { + "type": "EQUAL", + "count": 10, + "available_days": 10, + "interval_days": 1 + }, + "display_info": { + "name": "全场满100可减10元", + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "background_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "detail_image_url_list": [ + "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + ], + "original_price": 10000, + "combo_package_list": [ + { + "name": "咖啡2选1", + "pick_count": 3, + "choice_list": [ + { + "name": "美式", + "price": 10000, + "count": 2, + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "mini_program_appid": "wx4fd12345678", + "mini_program_path": "/pages/index/index" + } + ] + } + ] + }, + "out_product_no": "Product_1234567890", + "state": "AUDITING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-06-20T13:29:35+08:00", + "deactivate_reason": "商品已下架", + "brand_id": "120344" + }, + "stock": { + "product_coupon_id": "200000001", + "stock_id": "123456789", + "remark": "满减券", + "coupon_code_mode": "UPLOAD", + "coupon_code_count_info": { + "total_count": 10000, + "available_count": 999 + }, + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_day": 10000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "available_days": 10, + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + }, + "exchange_coupon": { + "threshold": 10000, + "exchange_price": 100 + } + }, + "sequential_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon_list": [ + { + "threshold": 10000, + "discount_amount": 100 + } + ], + "discount_coupon_list": [ + { + "threshold": 10000, + "percent_off": 30 + } + ], + "exchange_coupon_list": [ + { + "threshold": 10000, + "exchange_price": 100 + } + ], + "special_first": false + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "MINI_PROGRAM" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "app_path": "https://www.example.com/jump-to-app", + "usage_description": "全场可用", + "coupon_available_store_info": { + "description": "可在上海市区的所有门店使用,详细列表参考小程序内信息为准", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "SPECIFIC", + "sent_count_info": { + "total_count": 100, + "today_count": 10 + }, + "state": "SENDING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-01T00:00+08:00", + "deactivate_reason": "批次信息有误,重新创建", + "brand_id": "120344" + }, + "attach": "example_attach", + "channel_custom_info": "example_channel_custom_info", + "brand_id": "120344", + "coupon_tag_info": { + "coupon_tag_list": [ + "MEMBER" + ], + "member_tag_info": { + "member_card_id": "MemberCardId_1234567890" + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponRequest.json new file mode 100644 index 00000000..8e31e69e --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponRequest.json @@ -0,0 +1,15 @@ +{ + "product_coupon_id": "1002323", + "stock_id": "100232301", + "appid": "wx233544546545989", + "use_time": "2025-07-24T00:00+08:00", + "associated_order_info": { + "transaction_id": "4200000000123456789123456789", + "out_trade_no": "trade_no_20250724123456", + "mchid": "1234567890", + "sub_mchid": "1234567890" + }, + "out_request_no": "MCHUSE202003101234", + "sequential_coupon_index": 0, + "brand_id": "120344" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponResponse.json new file mode 100644 index 00000000..8f861e6d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/MarketingPartnerProductCoupon/UserCoupons/UseMarketingPartnerProductCouponUserCouponResponse.json @@ -0,0 +1,252 @@ +{ + "coupon_code": "123446565767", + "coupon_state": "USED", + "valid_begin_time": "2025-01-01T00:00+08:00", + "valid_end_time": "2025-01-30T23:59:59+08:00", + "receive_time": "2025-01-01T09:10:00+08:00", + "send_request_no": "MCHSEND202003101234", + "send_channel": "API", + "confirm_request_no": "MCHCONFIRM202003101234", + "confirm_time": "2025-01-20T13:29:35+08:00", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-20T13:29:35+08:00", + "deactivate_reason": "商品已下线", + "single_usage_detail": { + "use_request_no": "MCHUSE202003101234", + "use_time": "2025-07-20T13:29:35+08:00", + "associated_order_info": { + "transaction_id": "4200000000123456789123456789", + "out_trade_no": "trade_no_20250724123456", + "mchid": "1234567890", + "sub_mchid": "1234567890" + }, + "return_request_no": "MCHRETURN202003101234", + "return_time": "2025-07-20T14:29:35+08:00" + }, + "sequential_usage_detail": { + "total_count": 10, + "used_count": 3, + "detail_item_list": [ + { + "detail_state": "USED", + "valid_begin_time": "2025-07-24T00:00+08:00", + "valid_end_time": "2025-07-30T23:59:59+08:00", + "use_request_no": "MCHUSE202003101234", + "use_time": "2025-07-20T13:29:35+08:00", + "associated_order_info": { + "transaction_id": "4200000000123456789123456789", + "out_trade_no": "trade_no_20250724123456", + "mchid": "1234567890", + "sub_mchid": "1234567890" + }, + "return_request_no": "MCHRETURN202003101234", + "return_time": "2025-07-20T14:29:35+08:00", + "delete_time": "2025-07-20T14:29:35+08:00" + } + ] + }, + "product_coupon": { + "product_coupon_id": "1002323", + "scope": "ALL", + "type": "NORMAL", + "usage_mode": "SEQUENTIAL", + "single_usage_info": { + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + } + }, + "sequential_usage_info": { + "type": "EQUAL", + "count": 10, + "available_days": 10, + "interval_days": 1 + }, + "display_info": { + "name": "全场满100可减10元", + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "background_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "detail_image_url_list": [ + "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + ], + "original_price": 10000, + "combo_package_list": [ + { + "name": "咖啡2选1", + "pick_count": 3, + "choice_list": [ + { + "name": "美式", + "price": 10000, + "count": 2, + "image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx", + "mini_program_appid": "wx4fd12345678", + "mini_program_path": "/pages/index/index" + } + ] + } + ] + }, + "out_product_no": "Product_1234567890", + "state": "AUDITING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-06-20T13:29:35+08:00", + "deactivate_reason": "商品已下架", + "brand_id": "120344" + }, + "stock": { + "product_coupon_id": "200000001", + "stock_id": "123456789", + "remark": "满减券", + "coupon_code_mode": "UPLOAD", + "coupon_code_count_info": { + "total_count": 10000, + "available_count": 999 + }, + "stock_send_rule": { + "max_count": 10000000, + "max_count_per_day": 10000, + "max_count_per_user": 1 + }, + "single_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "available_days": 10, + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon": { + "threshold": 10000, + "discount_amount": 100 + }, + "discount_coupon": { + "threshold": 10000, + "percent_off": 30 + }, + "exchange_coupon": { + "threshold": 10000, + "exchange_price": 100 + } + }, + "sequential_usage_rule": { + "coupon_available_period": { + "available_begin_time": "2025-01-01T00:00:00+08:00", + "available_end_time": "2025-10-01T00:00:00+08:00", + "wait_days_after_receive": 1, + "weekly_available_period": { + "day_list": [ + "MONDAY" + ], + "day_period_list": [ + { + "begin_time": 60, + "end_time": 86399 + } + ] + }, + "irregular_available_period_list": [ + { + "begin_time": "2025-01-01T00:00:00+08:00", + "end_time": "2025-10-01T00:00:00+08:00" + } + ] + }, + "normal_coupon_list": [ + { + "threshold": 10000, + "discount_amount": 100 + } + ], + "discount_coupon_list": [ + { + "threshold": 10000, + "percent_off": 30 + } + ], + "exchange_coupon_list": [ + { + "threshold": 10000, + "exchange_price": 100 + } + ], + "special_first": false + }, + "usage_rule_display_info": { + "coupon_usage_method_list": [ + "MINI_PROGRAM" + ], + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/product", + "app_path": "https://www.example.com/jump-to-app", + "usage_description": "全场可用", + "coupon_available_store_info": { + "description": "可在上海市区的所有门店使用,详细列表参考小程序内信息为准", + "mini_program_appid": "wx1234567890", + "mini_program_path": "/pages/index/store-list" + } + }, + "coupon_display_info": { + "code_display_mode": "QRCODE", + "background_color": "Color010", + "entrance_mini_program": { + "appid": "wx1234567890", + "path": "/pages/index/product", + "entrance_wording": "欢迎选购", + "guidance_wording": "获取更多优惠" + }, + "entrance_official_account": { + "appid": "wx1234567890" + }, + "entrance_finder": { + "finder_id": "gh_12345678", + "finder_video_id": "UDFsdf24df34dD456Hdf34", + "finder_video_cover_image_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/xxx" + } + }, + "notify_config": { + "notify_appid": "wx4fd12345678" + }, + "store_scope": "SPECIFIC", + "sent_count_info": { + "total_count": 100, + "today_count": 10 + }, + "state": "SENDING", + "deactivate_request_no": "1002600620019090123143254436", + "deactivate_time": "2025-01-01T00:00+08:00", + "deactivate_reason": "批次信息有误,重新创建", + "brand_id": "120344" + }, + "attach": "example_attach", + "channel_custom_info": "example_channel_custom_info", + "brand_id": "120344", + "coupon_tag_info": { + "coupon_tag_list": [ + "MEMBER" + ], + "member_tag_info": { + "member_card_id": "MemberCardId_1234567890" + } + } +}