diff --git a/docs/WechatTenpayV3/Basic_ModelDefinition.md b/docs/WechatTenpayV3/Basic_ModelDefinition.md index 43322e58..80473643 100644 --- a/docs/WechatTenpayV3/Basic_ModelDefinition.md +++ b/docs/WechatTenpayV3/Basic_ModelDefinition.md @@ -61,6 +61,7 @@ | √ | 运营工具:点金计划 | 合作伙伴 | | | × | 运营工具:现金红包 | 直连商户 & 合作伙伴 | 官方未提供 v3 API | | √ | 运营工具:品牌红包 | 直连商户 | | +| √ | 运营工具:商家名片会员 | 合作伙伴 | | | √ | 扩展工具:分账 | 直连商户 & 合作伙伴 | | | √ | 扩展工具:连锁品牌分账 | 合作伙伴 | | | √ | 扩展工具:消费者投诉 2.0 | 直连商户 & 合作伙伴 | | @@ -523,6 +524,50 @@ - 查询银行转账充值结果:`GetBankTransferRechargeByOutRechargeNumber` + - 商家名片会员 + + - 会员卡模板管理: + + - 创建会员卡模板:`CreateBrandPartnerCardMemberCard` + + - 查询会员卡模板列表:`QueryBrandPartnerCardMemberCards` + + - 查询会员卡模板信息:`GetBrandPartnerCardMemberCardByCardId` + + - 修改会员卡模板信息:`UpdateBrandPartnerCardMemberCard` + + - 作废会员卡模板:`InvalidateBrandPartnerCardMemberCard` + + - 用户会员卡管理: + + - 查询用户会员卡信息:`GetBrandPartnerCardMemberUserCardByUserCardCode` + + - 查询用户在品牌下所有会员卡:`QueryBrandPartnerCardMemberUserCards` + + - 修改用户会员卡信息:`UpdateBrandPartnerCardMemberUserCard` + + - 作废用户会员卡:`InvalidateBrandPartnerCardMemberUserCard` + + - 用户开通会员卡: + + - 入会组件预授权:`CreateBrandPartnerCardMemberPreauthToken` + + - 商家同步会员身份: + + - 根据 OpenId 导入用户会员卡:`ImportBrandPartnerCardMemberUserCardByOpenId` + + - 同步会员开通结果:`ConfirmBrandPartnerCardMemberUserCard` + + - 用户动态: + + - 创建用户动态信息:`CreateBrandPartnerCardMemberUserFeed` + + - 会员卡积分兑券: + + - 同步积分余额:`SyncBrandPartnerCardMemberUserPoint` + + - 同步积分兑券结果:`ConfirmBrandPartnerCardMemberUserPointExchangeCoupon` + - 扩展工具 - 分账 diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/BrandCardMember/BrandPartnerCardMemberPointExchangeCouponResource.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/BrandCardMember/BrandPartnerCardMemberPointExchangeCouponResource.cs new file mode 100644 index 00000000..c9a6b973 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/BrandCardMember/BrandPartnerCardMemberPointExchangeCouponResource.cs @@ -0,0 +1,89 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events +{ + /// + /// 表示 BRAND_MEMBER_CARD_SP.POINT_EXCHANGE_COUPON (仅限服务商)通知的数据。 + /// + /// REF:
+ /// + ///
+ ///
+ public class BrandPartnerCardMemberPointExchangeCouponResource : WechatTenpayEvent.Types.IDecryptedResource + { + /// + /// 获取或设置积分兑券 ID。 + /// + [Newtonsoft.Json.JsonProperty("record_id")] + [System.Text.Json.Serialization.JsonPropertyName("record_id")] + public string RecordId { get; set; } = default!; + + /// + /// 获取或设置积分兑券模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("exchange_coupon_template_id")] + [System.Text.Json.Serialization.JsonPropertyName("exchange_coupon_template_id")] + public string ExchangeCouponTemplateId { get; set; } = default!; + + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonProperty("user_card_code")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_code")] + public string UserCardCode { get; set; } = default!; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("card_id")] + [System.Text.Json.Serialization.JsonPropertyName("card_id")] + public string CardId { get; set; } = default!; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = default!; + + /// + /// 获取或设置商家 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置消耗积分数。 + /// + [Newtonsoft.Json.JsonProperty("deduct_points")] + [System.Text.Json.Serialization.JsonPropertyName("deduct_points")] + public int DeductPoints { get; set; } + + /// + /// 获取或设置商品券 ID。 + /// + [Newtonsoft.Json.JsonProperty("product_coupon_id")] + [System.Text.Json.Serialization.JsonPropertyName("product_coupon_id")] + public string ProductCouponId { get; set; } = default!; + + /// + /// 获取或设置商品券批次类型。 + /// + [Newtonsoft.Json.JsonProperty("product_coupon_stock_type")] + [System.Text.Json.Serialization.JsonPropertyName("product_coupon_stock_type")] + public string ProductCouponStockType { get; set; } = default!; + + /// + /// 获取或设置商品券批次 ID。 + /// + [Newtonsoft.Json.JsonProperty("stock_id")] + [System.Text.Json.Serialization.JsonPropertyName("stock_id")] + public string StockId { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/BrandCardMember/BrandPartnerCardMemberUserCardResource.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/BrandCardMember/BrandPartnerCardMemberUserCardResource.cs new file mode 100644 index 00000000..2f3c7de3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/BrandCardMember/BrandPartnerCardMemberUserCardResource.cs @@ -0,0 +1,209 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events +{ + /// + /// 表示 BRAND_MEMBER_CARD_SP.USER_CARD.CREATE (仅限服务商)通知的数据。 + /// + /// REF:
+ /// + ///
+ ///
+ public class BrandPartnerCardMemberUserCardResource : WechatTenpayEvent.Types.IDecryptedResource + { + public static class Types + { + public class ValidDateInfo : Models.QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard.Types.ValidDateInfo + { + } + + public class UserInfo + { + public static class Types + { + public class CommonField + { + /// + /// 获取或设置字段名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置字段值。 + /// + [Newtonsoft.Json.JsonProperty("value")] + [System.Text.Json.Serialization.JsonPropertyName("value")] + public string? Value { get; set; } + } + + public class CustomField + { + /// + /// 获取或设置字段名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置字段值。 + /// + [Newtonsoft.Json.JsonProperty("user_chosen_values")] + [System.Text.Json.Serialization.JsonPropertyName("user_chosen_values")] + public string[]? Values { get; set; } + } + } + + /// + /// 获取或设置通用开卡信息字段列表。 + /// + [Newtonsoft.Json.JsonProperty("common_field_list")] + [System.Text.Json.Serialization.JsonPropertyName("common_field_list")] + public Types.CommonField[]? CommonFieldList { get; set; } + + /// + /// 获取或设置自定义开卡信息字段列表。 + /// + [Newtonsoft.Json.JsonProperty("custom_field_list")] + [System.Text.Json.Serialization.JsonPropertyName("custom_field_list")] + public Types.CustomField[]? CustomFieldList { get; set; } + } + } + + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonProperty("user_card_code")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_code")] + public string UserCardCode { get; set; } = default!; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("card_id")] + [System.Text.Json.Serialization.JsonPropertyName("card_id")] + public string CardId { get; set; } = default!; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = default!; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置会员卡类型。 + /// + [Newtonsoft.Json.JsonProperty("card_type")] + [System.Text.Json.Serialization.JsonPropertyName("card_type")] + public string CardType { get; set; } = default!; + + /// + /// 获取或设置会员卡背景颜色。 + /// + [Newtonsoft.Json.JsonProperty("card_color")] + [System.Text.Json.Serialization.JsonPropertyName("card_color")] + public string CardColor { get; set; } = default!; + + /// + /// 获取或设置会员卡图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("card_picture_url")] + [System.Text.Json.Serialization.JsonPropertyName("card_picture_url")] + public string CardPictureUrl { get; set; } = default!; + + /// + /// 获取或设置用户的手机号码。 + /// + [Newtonsoft.Json.JsonProperty("phone_number")] + [System.Text.Json.Serialization.JsonPropertyName("phone_number")] + public string? MobileNumber { get; set; } + + /// + /// 获取或设置会员等级。 + /// + [Newtonsoft.Json.JsonProperty("level")] + [System.Text.Json.Serialization.JsonPropertyName("level")] + public string? Level { get; set; } + + /// + /// 获取或设置会员卡有效期信息。 + /// + [Newtonsoft.Json.JsonProperty("valid_date_information")] + [System.Text.Json.Serialization.JsonPropertyName("valid_date_information")] + public Types.ValidDateInfo? ValidDateInfo { get; set; } + + /// + /// 获取或设置领取时间。 + /// + [Newtonsoft.Json.JsonProperty("pickup_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("pickup_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset PickupTime { get; set; } + + /// + /// 获取或设置用户开卡信息。 + /// + [Newtonsoft.Json.JsonProperty("user_information")] + [System.Text.Json.Serialization.JsonPropertyName("user_information")] + public Types.UserInfo? UserInfo { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置会员卡状态。 + /// + [Newtonsoft.Json.JsonProperty("user_card_state")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_state")] + public string State { get; set; } = default!; + + /// + /// 获取或设置作废原因。 + /// + [Newtonsoft.Json.JsonProperty("invalid_reason")] + [System.Text.Json.Serialization.JsonPropertyName("invalid_reason")] + public string? InvalidReason { get; set; } + + /// + /// 获取或设置作废时间。 + /// + [Newtonsoft.Json.JsonProperty("invalid_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("invalid_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? InvalidTime { get; set; } + + /// + /// 获取或设置创建时间。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset CreateTime { get; set; } + + /// + /// 获取或设置更新时间。 + /// + [Newtonsoft.Json.JsonProperty("modify_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("modify_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset ModifyTime { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/BrandCardMember/BrandPartnerCardMemberUserPointResource.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/BrandCardMember/BrandPartnerCardMemberUserPointResource.cs new file mode 100644 index 00000000..0ddb53da --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/BrandCardMember/BrandPartnerCardMemberUserPointResource.cs @@ -0,0 +1,40 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events +{ + /// + /// 表示 BRAND_MEMBER_CARD_SP.SYNC_USER_POINT (仅限服务商)通知的数据。 + /// + /// REF:
+ /// + ///
+ ///
+ public class BrandPartnerCardMemberUserPointResource : WechatTenpayEvent.Types.IDecryptedResource + { + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonProperty("user_card_code")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_code")] + public string UserCardCode { get; set; } = default!; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("card_id")] + [System.Text.Json.Serialization.JsonPropertyName("card_id")] + public string CardId { get; set; } = default!; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = default!; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteBrandPartnerCardMemberExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteBrandPartnerCardMemberExtensions.cs new file mode 100644 index 00000000..583d7aec --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteBrandPartnerCardMemberExtensions.cs @@ -0,0 +1,366 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 +{ + public static class WechatTenpayClientExecuteBrandPartnerCardMemberExtensions + { + /// + /// 异步调用 [POST] /brand/partner/card-member/pre-auth-tokens 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCreateBrandPartnerCardMemberPreauthTokenAsync(this WechatTenpayClient client, Models.CreateBrandPartnerCardMemberPreauthTokenRequest 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, "brand", "partner", "card-member", "pre-auth-tokens"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + #region Cards + /// + /// 异步调用 [POST] /brand/partner/card-member/cards 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCreateBrandPartnerCardMemberCardAsync(this WechatTenpayClient client, Models.CreateBrandPartnerCardMemberCardRequest 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, "brand", "partner", "card-member", "cards"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /brand/partner/card-member/cards 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteQueryBrandPartnerCardMemberCardsAsync(this WechatTenpayClient client, Models.QueryBrandPartnerCardMemberCardsRequest 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, "brand", "partner", "card-member", "cards") + .SetQueryParam("brand_id", request.BrandId) + .SetQueryParam("state", request.State) + .SetQueryParam("offset", request.Offset) + .SetQueryParam("limit", request.Limit); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /brand/partner/card-member/cards/{card_id} 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteGetBrandPartnerCardMemberCardByCardIdAsync(this WechatTenpayClient client, Models.GetBrandPartnerCardMemberCardByCardIdRequest 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, "brand", "partner", "card-member", "cards", request.CardId) + .SetQueryParam("brand_id", request.BrandId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [PATCH] /brand/partner/card-member/cards/{card_id} 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteUpdateBrandPartnerCardMemberCardAsync(this WechatTenpayClient client, Models.UpdateBrandPartnerCardMemberCardRequest 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"), "brand", "partner", "card-member", "cards", request.CardId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /brand/partner/card-member/cards/{card_id}/invalidate 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteInvalidateBrandPartnerCardMemberCardAsync(this WechatTenpayClient client, Models.InvalidateBrandPartnerCardMemberCardRequest 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, "brand", "partner", "card-member", "cards", request.CardId, "invalidate"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + + #region UserCards + /// + /// 异步调用 [GET] /brand/partner/card-member/user-cards 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteQueryBrandPartnerCardMemberUserCardsAsync(this WechatTenpayClient client, Models.QueryBrandPartnerCardMemberUserCardsRequest 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, "brand", "partner", "card-member", "user-cards") + .SetQueryParam("brand_id", request.BrandId) + .SetQueryParam("openid", request.OpenId) + .SetQueryParam("user_card_state", request.State) + .SetQueryParam("offset", request.Offset) + .SetQueryParam("limit", request.Limit); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /brand/partner/card-member/user-cards/{user_card_code} 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteGetBrandPartnerCardMemberUserCardByUserCardCodeAsync(this WechatTenpayClient client, Models.GetBrandPartnerCardMemberUserCardByUserCardCodeRequest 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, "brand", "partner", "card-member", "user-cards", request.UserCardCode) + .SetQueryParam("brand_id", request.BrandId) + .SetQueryParam("card_id", request.CardId) + .SetQueryParam("openid", request.OpenId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [PATCH] /brand/partner/card-member/user-cards/{user_card_code} 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteUpdateBrandPartnerCardMemberUserCardAsync(this WechatTenpayClient client, Models.UpdateBrandPartnerCardMemberUserCardRequest 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"), "brand", "partner", "card-member", "user-cards", request.UserCardCode) + .SetQueryParam("card_id", request.CardId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /brand/partner/card-member/user-cards/{user_card_code}/invalidate 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteInvalidateBrandPartnerCardMemberUserCardAsync(this WechatTenpayClient client, Models.InvalidateBrandPartnerCardMemberUserCardRequest 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, "brand", "partner", "card-member", "user-cards", request.UserCardCode, "invalidate") + .SetQueryParam("brand_id", request.BrandId) + .SetQueryParam("card_id", request.CardId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /brand/partner/card-member/user-cards/import-by-openid 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteImportBrandPartnerCardMemberUserCardByOpenIdAsync(this WechatTenpayClient client, Models.ImportBrandPartnerCardMemberUserCardByOpenIdRequest 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, "brand", "partner", "card-member", "user-cards", "import-by-openid"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /brand/partner/card-member/user-cards/{user_card_code}/confirm 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteConfirmBrandPartnerCardMemberUserCardAsync(this WechatTenpayClient client, Models.ConfirmBrandPartnerCardMemberUserCardRequest 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, "brand", "partner", "card-member", "user-cards", request.UserCardCode, "confirm") + .SetQueryParam("card_id", request.CardId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + + #region UserFeeds + /// + /// 异步调用 [POST] /brand/partner/card-member/user-feeds 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCreateBrandPartnerCardMemberUserFeedAsync(this WechatTenpayClient client, Models.CreateBrandPartnerCardMemberUserFeedRequest 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, "brand", "partner", "card-member", "user-feeds"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + + #region UserFeeds + /// + /// 异步调用 [POST] /brand/partner/card-member/user-points/sync 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteSyncBrandPartnerCardMemberUserPointAsync(this WechatTenpayClient client, Models.SyncBrandPartnerCardMemberUserPointRequest 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, "brand", "partner", "card-member", "user-points", "sync"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /brand/partner/card-member/user-points/exchange-coupon/confirm 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteConfirmBrandPartnerCardMemberUserPointExchangeCouponAsync(this WechatTenpayClient client, Models.ConfirmBrandPartnerCardMemberUserPointExchangeCouponRequest 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, "brand", "partner", "card-member", "user-points", "exchange-coupon", "confirm"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/CreateBrandPartnerCardMemberCardRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/CreateBrandPartnerCardMemberCardRequest.cs new file mode 100644 index 00000000..c68c931c --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/CreateBrandPartnerCardMemberCardRequest.cs @@ -0,0 +1,281 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/cards 接口的请求。 + /// + public class CreateBrandPartnerCardMemberCardRequest : WechatTenpayRequest + { + public static class Types + { + public class ValidDateInfo + { + /// + /// 获取或设置有效期类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get; set; } = string.Empty; + + /// + /// 获取或设置有效期开始时间。 + /// + [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? AvailableBeginTime { 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? AvailableEndTime { get; set; } + + /// + /// 获取或设置领取后 N 天内有效。 + /// + [Newtonsoft.Json.JsonProperty("available_day_after_receive")] + [System.Text.Json.Serialization.JsonPropertyName("available_day_after_receive")] + public int? AvailableDaysAfterReceive { get; set; } + } + + public class JumpInfo + { + /// + /// 获取或设置小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("jump_appid")] + [System.Text.Json.Serialization.JsonPropertyName("jump_appid")] + public string? JumpAppId { get; set; } + + /// + /// 获取或设置小程序页面路径。 + /// + [Newtonsoft.Json.JsonProperty("jump_path")] + [System.Text.Json.Serialization.JsonPropertyName("jump_path")] + public string? JumpPagePath { get; set; } + } + + public class PurchaseJumpInfo : JumpInfo + { + /// + /// 获取或设置付费会员价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("price")] + [System.Text.Json.Serialization.JsonPropertyName("price")] + public int? Price { get; set; } + } + + public class UserInfo + { + public static class Types + { + public class CustomField + { + /// + /// 获取或设置字段类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get; set; } = string.Empty; + + /// + /// 获取或设置字段名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = string.Empty; + + /// + /// 获取或设置字段值。 + /// + [Newtonsoft.Json.JsonProperty("values")] + [System.Text.Json.Serialization.JsonPropertyName("values")] + public IList? Values { get; set; } + } + } + + /// + /// 获取或设置通用开卡信息字段列表。 + /// + [Newtonsoft.Json.JsonProperty("common_field_list")] + [System.Text.Json.Serialization.JsonPropertyName("common_field_list")] + public IList? CommonFieldList { get; set; } + + /// + /// 获取或设置自定义开卡信息字段列表。 + /// + [Newtonsoft.Json.JsonProperty("custom_field_list")] + [System.Text.Json.Serialization.JsonPropertyName("custom_field_list")] + public IList? CustomFieldList { get; set; } + } + } + + /// + /// 获取或设置商家请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumber { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置商家 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡类型。 + /// + [Newtonsoft.Json.JsonProperty("card_type")] + [System.Text.Json.Serialization.JsonPropertyName("card_type")] + public string CardType { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡名称。 + /// + [Newtonsoft.Json.JsonProperty("card_title")] + [System.Text.Json.Serialization.JsonPropertyName("card_title")] + public string CardTitle { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡背景颜色。 + /// + [Newtonsoft.Json.JsonProperty("card_color")] + [System.Text.Json.Serialization.JsonPropertyName("card_color")] + public string CardColor { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("card_picture_url")] + [System.Text.Json.Serialization.JsonPropertyName("card_picture_url")] + public string CardPictureUrl { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡 Code 分配类型。 + /// + [Newtonsoft.Json.JsonProperty("code_mode")] + [System.Text.Json.Serialization.JsonPropertyName("code_mode")] + public string CodeMode { get; set; } = string.Empty; + + /// + /// 获取或设置会员码展示类型。 + /// + [Newtonsoft.Json.JsonProperty("code_type")] + [System.Text.Json.Serialization.JsonPropertyName("code_type")] + public string CodeType { get; set; } = string.Empty; + + /// + /// 获取或设置会员码跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("code_jump_information")] + [System.Text.Json.Serialization.JsonPropertyName("code_jump_information")] + public Types.JumpInfo? CodeJumpInfo { get; set; } + + /// + /// 获取或设置会员中心跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("member_information")] + [System.Text.Json.Serialization.JsonPropertyName("member_information")] + public Types.JumpInfo? MemberJumpInfo { get; set; } + + /// + /// 获取或设置积分跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("points_information")] + [System.Text.Json.Serialization.JsonPropertyName("points_information")] + public Types.JumpInfo? PointsJumpInfo { get; set; } + + /// + /// 获取或设置储值跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("balance_information")] + [System.Text.Json.Serialization.JsonPropertyName("balance_information")] + public Types.JumpInfo? BalanceJumpInfo { get; set; } + + /// + /// 获取或设置付费会员跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("purchase_information")] + [System.Text.Json.Serialization.JsonPropertyName("purchase_information")] + public Types.PurchaseJumpInfo? PurchaseJumpInfo { get; set; } + + /// + /// 获取或设置会员权益。 + /// + [Newtonsoft.Json.JsonProperty("benefits")] + [System.Text.Json.Serialization.JsonPropertyName("benefits")] + public string Benefits { get; set; } = string.Empty; + + /// + /// 获取或设置回调地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string NotifyUrl { get; set; } = string.Empty; + + /// + /// 获取或设置是否置顶。 + /// + [Newtonsoft.Json.JsonProperty("need_pinned")] + [System.Text.Json.Serialization.JsonPropertyName("need_pinned")] + public bool? IsPinned { get; set; } + + /// + /// 获取或设置是否展示会员等级。 + /// + [Newtonsoft.Json.JsonProperty("need_display_level")] + [System.Text.Json.Serialization.JsonPropertyName("need_display_level")] + public bool? IsDisplayLevel { get; set; } + + /// + /// 获取或设置会员初始等级。 + /// + [Newtonsoft.Json.JsonProperty("init_level")] + [System.Text.Json.Serialization.JsonPropertyName("init_level")] + public string? InitialLevel { get; set; } + + /// + /// 获取或设置服务电话。 + /// + [Newtonsoft.Json.JsonProperty("service_phone")] + [System.Text.Json.Serialization.JsonPropertyName("service_phone")] + public string? ServicePhoneNumber { get; set; } + + /// + /// 获取或设置商家法务协议。 + /// + [Newtonsoft.Json.JsonProperty("legal_agreement")] + [System.Text.Json.Serialization.JsonPropertyName("legal_agreement")] + public string? LegalAgreement { get; set; } + + /// + /// 获取或设置会员卡有效期信息。 + /// + [Newtonsoft.Json.JsonProperty("valid_date_information")] + [System.Text.Json.Serialization.JsonPropertyName("valid_date_information")] + public Types.ValidDateInfo? ValidDateInfo { get; set; } + + /// + /// 获取或设置用户开卡信息。 + /// + [Newtonsoft.Json.JsonProperty("user_information")] + [System.Text.Json.Serialization.JsonPropertyName("user_information")] + public Types.UserInfo? UserInfo { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/CreateBrandPartnerCardMemberCardResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/CreateBrandPartnerCardMemberCardResponse.cs new file mode 100644 index 00000000..734a03e0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/CreateBrandPartnerCardMemberCardResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/cards 接口的响应。 + /// + public class CreateBrandPartnerCardMemberCardResponse : GetBrandPartnerCardMemberCardByCardIdResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/GetBrandPartnerCardMemberCardByCardIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/GetBrandPartnerCardMemberCardByCardIdRequest.cs new file mode 100644 index 00000000..f74cbbf3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/GetBrandPartnerCardMemberCardByCardIdRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /brand/partner/card-member/cards/{card_id} 接口的请求。 + /// + public class GetBrandPartnerCardMemberCardByCardIdRequest : WechatTenpayRequest + { + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string CardId { 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/BrandCardMember/Cards/GetBrandPartnerCardMemberCardByCardIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/GetBrandPartnerCardMemberCardByCardIdResponse.cs new file mode 100644 index 00000000..daa5973c --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/GetBrandPartnerCardMemberCardByCardIdResponse.cs @@ -0,0 +1,222 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /brand/partner/card-member/cards/{card_id} 接口的响应。 + /// + public class GetBrandPartnerCardMemberCardByCardIdResponse : WechatTenpayResponse + { + public static class Types + { + public class ValidDateInfo : QueryBrandPartnerCardMemberCardsResponse.Types.Card.Types.ValidDateInfo + { + } + + public class JumpInfo : QueryBrandPartnerCardMemberCardsResponse.Types.Card.Types.JumpInfo + { + } + + public class PurchaseJumpInfo : QueryBrandPartnerCardMemberCardsResponse.Types.Card.Types.PurchaseJumpInfo + { + } + + public class UserInfo : QueryBrandPartnerCardMemberCardsResponse.Types.Card.Types.UserInfo + { + } + } + + /// + /// 获取或设置商家请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumber { get; set; } = default!; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("card_id")] + [System.Text.Json.Serialization.JsonPropertyName("card_id")] + public string CardId { get; set; } = default!; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = default!; + + /// + /// 获取或设置商家 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置会员卡类型。 + /// + [Newtonsoft.Json.JsonProperty("card_type")] + [System.Text.Json.Serialization.JsonPropertyName("card_type")] + public string CardType { get; set; } = default!; + + /// + /// 获取或设置会员卡名称。 + /// + [Newtonsoft.Json.JsonProperty("card_title")] + [System.Text.Json.Serialization.JsonPropertyName("card_title")] + public string CardTitle { get; set; } = default!; + + /// + /// 获取或设置会员卡背景颜色。 + /// + [Newtonsoft.Json.JsonProperty("card_color")] + [System.Text.Json.Serialization.JsonPropertyName("card_color")] + public string CardColor { get; set; } = default!; + + /// + /// 获取或设置会员卡图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("card_picture_url")] + [System.Text.Json.Serialization.JsonPropertyName("card_picture_url")] + public string CardPictureUrl { get; set; } = default!; + + /// + /// 获取或设置会员卡 Code 分配类型。 + /// + [Newtonsoft.Json.JsonProperty("code_mode")] + [System.Text.Json.Serialization.JsonPropertyName("code_mode")] + public string CodeMode { get; set; } = default!; + + /// + /// 获取或设置会员码展示类型。 + /// + [Newtonsoft.Json.JsonProperty("code_type")] + [System.Text.Json.Serialization.JsonPropertyName("code_type")] + public string CodeType { get; set; } = default!; + + /// + /// 获取或设置会员码跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("code_jump_information")] + [System.Text.Json.Serialization.JsonPropertyName("code_jump_information")] + public Types.JumpInfo? CodeJumpInfo { get; set; } + + /// + /// 获取或设置会员中心跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("member_information")] + [System.Text.Json.Serialization.JsonPropertyName("member_information")] + public Types.JumpInfo? MemberJumpInfo { get; set; } + + /// + /// 获取或设置积分跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("points_information")] + [System.Text.Json.Serialization.JsonPropertyName("points_information")] + public Types.JumpInfo? PointsJumpInfo { get; set; } + + /// + /// 获取或设置储值跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("balance_information")] + [System.Text.Json.Serialization.JsonPropertyName("balance_information")] + public Types.JumpInfo? BalanceJumpInfo { get; set; } + + /// + /// 获取或设置付费会员跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("purchase_information")] + [System.Text.Json.Serialization.JsonPropertyName("purchase_information")] + public Types.PurchaseJumpInfo? PurchaseJumpInfo { get; set; } + + /// + /// 获取或设置会员权益。 + /// + [Newtonsoft.Json.JsonProperty("benefits")] + [System.Text.Json.Serialization.JsonPropertyName("benefits")] + public string Benefits { get; set; } = default!; + + /// + /// 获取或设置回调地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string NotifyUrl { get; set; } = default!; + + /// + /// 获取或设置是否置顶。 + /// + [Newtonsoft.Json.JsonProperty("need_pinned")] + [System.Text.Json.Serialization.JsonPropertyName("need_pinned")] + public bool? IsPinned { get; set; } + + /// + /// 获取或设置是否展示会员等级。 + /// + [Newtonsoft.Json.JsonProperty("need_display_level")] + [System.Text.Json.Serialization.JsonPropertyName("need_display_level")] + public bool? IsDisplayLevel { get; set; } + + /// + /// 获取或设置会员初始等级。 + /// + [Newtonsoft.Json.JsonProperty("init_level")] + [System.Text.Json.Serialization.JsonPropertyName("init_level")] + public string? InitialLevel { get; set; } + + /// + /// 获取或设置服务电话。 + /// + [Newtonsoft.Json.JsonProperty("service_phone")] + [System.Text.Json.Serialization.JsonPropertyName("service_phone")] + public string? ServicePhoneNumber { get; set; } + + /// + /// 获取或设置商家法务协议。 + /// + [Newtonsoft.Json.JsonProperty("legal_agreement")] + [System.Text.Json.Serialization.JsonPropertyName("legal_agreement")] + public string? LegalAgreement { get; set; } + + /// + /// 获取或设置会员卡有效期信息。 + /// + [Newtonsoft.Json.JsonProperty("valid_date_information")] + [System.Text.Json.Serialization.JsonPropertyName("valid_date_information")] + public Types.ValidDateInfo? ValidDateInfo { get; set; } + + /// + /// 获取或设置用户开卡信息。 + /// + [Newtonsoft.Json.JsonProperty("user_information")] + [System.Text.Json.Serialization.JsonPropertyName("user_information")] + public Types.UserInfo? UserInfo { get; set; } + + /// + /// 获取或设置会员卡状态。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string State { get; set; } = default!; + + /// + /// 获取或设置创建时间。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset CreateTime { get; set; } + + /// + /// 获取或设置更新时间。 + /// + [Newtonsoft.Json.JsonProperty("modify_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("modify_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset ModifyTime { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/InvalidateBrandPartnerCardMemberCardRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/InvalidateBrandPartnerCardMemberCardRequest.cs new file mode 100644 index 00000000..d224c050 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/InvalidateBrandPartnerCardMemberCardRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/cards/{card_id}/invalidate 接口的请求。 + /// + public class InvalidateBrandPartnerCardMemberCardRequest : WechatTenpayRequest + { + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string CardId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/InvalidateBrandPartnerCardMemberCardResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/InvalidateBrandPartnerCardMemberCardResponse.cs new file mode 100644 index 00000000..584e2532 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/InvalidateBrandPartnerCardMemberCardResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/cards/{card_id}/invalidate 接口的响应。 + /// + public class InvalidateBrandPartnerCardMemberCardResponse : GetBrandPartnerCardMemberCardByCardIdResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/QueryBrandPartnerCardMemberCardsRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/QueryBrandPartnerCardMemberCardsRequest.cs new file mode 100644 index 00000000..8936d559 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/QueryBrandPartnerCardMemberCardsRequest.cs @@ -0,0 +1,38 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /brand/partner/card-member/cards 接口的请求。 + /// + public class QueryBrandPartnerCardMemberCardsRequest : WechatTenpayRequest + { + /// + /// 获取或设置品牌 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? State { get; set; } + + /// + /// 获取或设置分页大小。 + /// 默认值:10 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Limit { get; set; } + + /// + /// 获取或设置分页开始位置。 + /// 默认值:0 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Offset { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/QueryBrandPartnerCardMemberCardsResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/QueryBrandPartnerCardMemberCardsResponse.cs new file mode 100644 index 00000000..6781e11e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/QueryBrandPartnerCardMemberCardsResponse.cs @@ -0,0 +1,346 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /brand/partner/card-member/cards 接口的响应。 + /// + public class QueryBrandPartnerCardMemberCardsResponse : WechatTenpayResponse + { + public static class Types + { + public class Card + { + public static class Types + { + public class ValidDateInfo + { + /// + /// 获取或设置有效期类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get; set; } = default!; + + /// + /// 获取或设置有效期开始时间。 + /// + [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? AvailableBeginTime { 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? AvailableEndTime { get; set; } + + /// + /// 获取或设置领取后 N 天内有效。 + /// + [Newtonsoft.Json.JsonProperty("available_day_after_receive")] + [System.Text.Json.Serialization.JsonPropertyName("available_day_after_receive")] + public int? AvailableDaysAfterReceive { get; set; } + } + + public class JumpInfo + { + /// + /// 获取或设置小程序 AppId。 + /// + [Newtonsoft.Json.JsonProperty("jump_appid")] + [System.Text.Json.Serialization.JsonPropertyName("jump_appid")] + public string? JumpAppId { get; set; } + + /// + /// 获取或设置小程序页面路径。 + /// + [Newtonsoft.Json.JsonProperty("jump_path")] + [System.Text.Json.Serialization.JsonPropertyName("jump_path")] + public string? JumpPagePath { get; set; } + } + + public class PurchaseJumpInfo : JumpInfo + { + /// + /// 获取或设置付费会员价格(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("price")] + [System.Text.Json.Serialization.JsonPropertyName("price")] + public int? Price { get; set; } + } + + public class UserInfo + { + public static class Types + { + public class CustomField + { + /// + /// 获取或设置字段类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get; set; } = default!; + + /// + /// 获取或设置字段名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置字段值。 + /// + [Newtonsoft.Json.JsonProperty("values")] + [System.Text.Json.Serialization.JsonPropertyName("values")] + public string[]? Values { get; set; } + } + } + + /// + /// 获取或设置通用开卡信息字段列表。 + /// + [Newtonsoft.Json.JsonProperty("common_field_list")] + [System.Text.Json.Serialization.JsonPropertyName("common_field_list")] + public string[]? CommonFieldList { get; set; } + + /// + /// 获取或设置自定义开卡信息字段列表。 + /// + [Newtonsoft.Json.JsonProperty("custom_field_list")] + [System.Text.Json.Serialization.JsonPropertyName("custom_field_list")] + public Types.CustomField[]? CustomFieldList { get; set; } + } + } + + /// + /// 获取或设置商家请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumber { get; set; } = default!; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("card_id")] + [System.Text.Json.Serialization.JsonPropertyName("card_id")] + public string CardId { get; set; } = default!; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = default!; + + /// + /// 获取或设置商家 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置会员卡类型。 + /// + [Newtonsoft.Json.JsonProperty("card_type")] + [System.Text.Json.Serialization.JsonPropertyName("card_type")] + public string CardType { get; set; } = default!; + + /// + /// 获取或设置会员卡名称。 + /// + [Newtonsoft.Json.JsonProperty("card_title")] + [System.Text.Json.Serialization.JsonPropertyName("card_title")] + public string CardTitle { get; set; } = default!; + + /// + /// 获取或设置会员卡背景颜色。 + /// + [Newtonsoft.Json.JsonProperty("card_color")] + [System.Text.Json.Serialization.JsonPropertyName("card_color")] + public string CardColor { get; set; } = default!; + + /// + /// 获取或设置会员卡图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("card_picture_url")] + [System.Text.Json.Serialization.JsonPropertyName("card_picture_url")] + public string CardPictureUrl { get; set; } = default!; + + /// + /// 获取或设置会员卡 Code 分配类型。 + /// + [Newtonsoft.Json.JsonProperty("code_mode")] + [System.Text.Json.Serialization.JsonPropertyName("code_mode")] + public string CodeMode { get; set; } = default!; + + /// + /// 获取或设置会员码展示类型。 + /// + [Newtonsoft.Json.JsonProperty("code_type")] + [System.Text.Json.Serialization.JsonPropertyName("code_type")] + public string CodeType { get; set; } = default!; + + /// + /// 获取或设置会员码跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("code_jump_information")] + [System.Text.Json.Serialization.JsonPropertyName("code_jump_information")] + public Types.JumpInfo? CodeJumpInfo { get; set; } + + /// + /// 获取或设置会员中心跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("member_information")] + [System.Text.Json.Serialization.JsonPropertyName("member_information")] + public Types.JumpInfo? MemberJumpInfo { get; set; } + + /// + /// 获取或设置积分跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("points_information")] + [System.Text.Json.Serialization.JsonPropertyName("points_information")] + public Types.JumpInfo? PointsJumpInfo { get; set; } + + /// + /// 获取或设置储值跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("balance_information")] + [System.Text.Json.Serialization.JsonPropertyName("balance_information")] + public Types.JumpInfo? BalanceJumpInfo { get; set; } + + /// + /// 获取或设置付费会员跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("purchase_information")] + [System.Text.Json.Serialization.JsonPropertyName("purchase_information")] + public Types.PurchaseJumpInfo? PurchaseJumpInfo { get; set; } + + /// + /// 获取或设置会员权益。 + /// + [Newtonsoft.Json.JsonProperty("benefits")] + [System.Text.Json.Serialization.JsonPropertyName("benefits")] + public string Benefits { get; set; } = default!; + + /// + /// 获取或设置回调地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string NotifyUrl { get; set; } = default!; + + /// + /// 获取或设置是否置顶。 + /// + [Newtonsoft.Json.JsonProperty("need_pinned")] + [System.Text.Json.Serialization.JsonPropertyName("need_pinned")] + public bool? IsPinned { get; set; } + + /// + /// 获取或设置是否展示会员等级。 + /// + [Newtonsoft.Json.JsonProperty("need_display_level")] + [System.Text.Json.Serialization.JsonPropertyName("need_display_level")] + public bool? IsDisplayLevel { get; set; } + + /// + /// 获取或设置会员初始等级。 + /// + [Newtonsoft.Json.JsonProperty("init_level")] + [System.Text.Json.Serialization.JsonPropertyName("init_level")] + public string? InitialLevel { get; set; } + + /// + /// 获取或设置服务电话。 + /// + [Newtonsoft.Json.JsonProperty("service_phone")] + [System.Text.Json.Serialization.JsonPropertyName("service_phone")] + public string? ServicePhoneNumber { get; set; } + + /// + /// 获取或设置商家法务协议。 + /// + [Newtonsoft.Json.JsonProperty("legal_agreement")] + [System.Text.Json.Serialization.JsonPropertyName("legal_agreement")] + public string? LegalAgreement { get; set; } + + /// + /// 获取或设置会员卡有效期信息。 + /// + [Newtonsoft.Json.JsonProperty("valid_date_information")] + [System.Text.Json.Serialization.JsonPropertyName("valid_date_information")] + public Types.ValidDateInfo? ValidDateInfo { get; set; } + + /// + /// 获取或设置用户开卡信息。 + /// + [Newtonsoft.Json.JsonProperty("user_information")] + [System.Text.Json.Serialization.JsonPropertyName("user_information")] + public Types.UserInfo? UserInfo { get; set; } + + /// + /// 获取或设置会员卡状态。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string State { get; set; } = default!; + + /// + /// 获取或设置创建时间。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset CreateTime { get; set; } + + /// + /// 获取或设置更新时间。 + /// + [Newtonsoft.Json.JsonProperty("modify_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("modify_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset ModifyTime { get; set; } + } + } + + /// + /// 获取或设置会员卡模板列表。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public Types.Card[] CardList { get; set; } = default!; + + /// + /// 获取或设置分页大小。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int Limit { get; set; } + + /// + /// 获取或设置分页开始位置。 + /// + [Newtonsoft.Json.JsonProperty("offset")] + [System.Text.Json.Serialization.JsonPropertyName("offset")] + public int Offset { 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/BrandCardMember/Cards/UpdateBrandPartnerCardMemberCardRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/UpdateBrandPartnerCardMemberCardRequest.cs new file mode 100644 index 00000000..a2e1509a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/UpdateBrandPartnerCardMemberCardRequest.cs @@ -0,0 +1,167 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [PATCH] /brand/partner/card-member/cards/{card_id} 接口的请求。 + /// + public class UpdateBrandPartnerCardMemberCardRequest : WechatTenpayRequest + { + public static class Types + { + public class ValidDateInfo : CreateBrandPartnerCardMemberCardRequest.Types.ValidDateInfo + { + } + + public class JumpInfo : CreateBrandPartnerCardMemberCardRequest.Types.JumpInfo + { + } + + public class PurchaseJumpInfo : CreateBrandPartnerCardMemberCardRequest.Types.PurchaseJumpInfo + { + } + + public class UserInfo : CreateBrandPartnerCardMemberCardRequest.Types.UserInfo + { + } + } + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string CardId { 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("card_type")] + [System.Text.Json.Serialization.JsonPropertyName("card_type")] + public string? CardType { get; set; } + + /// + /// 获取或设置会员卡名称。 + /// + [Newtonsoft.Json.JsonProperty("card_title")] + [System.Text.Json.Serialization.JsonPropertyName("card_title")] + public string? CardTitle { get; set; } + + /// + /// 获取或设置会员卡背景颜色。 + /// + [Newtonsoft.Json.JsonProperty("card_color")] + [System.Text.Json.Serialization.JsonPropertyName("card_color")] + public string? CardColor { get; set; } + + /// + /// 获取或设置会员卡图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("card_picture_url")] + [System.Text.Json.Serialization.JsonPropertyName("card_picture_url")] + public string? CardPictureUrl { get; set; } + + /// + /// 获取或设置会员码跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("code_jump_information")] + [System.Text.Json.Serialization.JsonPropertyName("code_jump_information")] + public Types.JumpInfo? CodeJumpInfo { get; set; } + + /// + /// 获取或设置会员中心跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("member_information")] + [System.Text.Json.Serialization.JsonPropertyName("member_information")] + public Types.JumpInfo? MemberJumpInfo { get; set; } + + /// + /// 获取或设置积分跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("points_information")] + [System.Text.Json.Serialization.JsonPropertyName("points_information")] + public Types.JumpInfo? PointsJumpInfo { get; set; } + + /// + /// 获取或设置储值跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("balance_information")] + [System.Text.Json.Serialization.JsonPropertyName("balance_information")] + public Types.JumpInfo? BalanceJumpInfo { get; set; } + + /// + /// 获取或设置付费会员跳转信息。 + /// + [Newtonsoft.Json.JsonProperty("purchase_information")] + [System.Text.Json.Serialization.JsonPropertyName("purchase_information")] + public Types.PurchaseJumpInfo? PurchaseJumpInfo { get; set; } + + /// + /// 获取或设置会员权益。 + /// + [Newtonsoft.Json.JsonProperty("benefits")] + [System.Text.Json.Serialization.JsonPropertyName("benefits")] + public string Benefits { get; set; } = string.Empty; + + /// + /// 获取或设置回调地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string NotifyUrl { get; set; } = string.Empty; + + /// + /// 获取或设置是否置顶。 + /// + [Newtonsoft.Json.JsonProperty("need_pinned")] + [System.Text.Json.Serialization.JsonPropertyName("need_pinned")] + public bool? IsPinned { get; set; } + + /// + /// 获取或设置是否展示会员等级。 + /// + [Newtonsoft.Json.JsonProperty("need_display_level")] + [System.Text.Json.Serialization.JsonPropertyName("need_display_level")] + public bool? IsDisplayLevel { get; set; } + + /// + /// 获取或设置会员初始等级。 + /// + [Newtonsoft.Json.JsonProperty("init_level")] + [System.Text.Json.Serialization.JsonPropertyName("init_level")] + public string? InitialLevel { get; set; } + + /// + /// 获取或设置服务电话。 + /// + [Newtonsoft.Json.JsonProperty("service_phone")] + [System.Text.Json.Serialization.JsonPropertyName("service_phone")] + public string? ServicePhoneNumber { get; set; } + + /// + /// 获取或设置商家法务协议。 + /// + [Newtonsoft.Json.JsonProperty("legal_agreement")] + [System.Text.Json.Serialization.JsonPropertyName("legal_agreement")] + public string? LegalAgreement { get; set; } + + /// + /// 获取或设置会员卡有效期信息。 + /// + [Newtonsoft.Json.JsonProperty("valid_date_information")] + [System.Text.Json.Serialization.JsonPropertyName("valid_date_information")] + public Types.ValidDateInfo? ValidDateInfo { get; set; } + + /// + /// 获取或设置用户开卡信息。 + /// + [Newtonsoft.Json.JsonProperty("user_information")] + [System.Text.Json.Serialization.JsonPropertyName("user_information")] + public Types.UserInfo? UserInfo { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/UpdateBrandPartnerCardMemberCardResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/UpdateBrandPartnerCardMemberCardResponse.cs new file mode 100644 index 00000000..459f026b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/Cards/UpdateBrandPartnerCardMemberCardResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [PATCH] /brand/partner/card-member/cards/{card_id} 接口的响应。 + /// + public class UpdateBrandPartnerCardMemberCardResponse : GetBrandPartnerCardMemberCardByCardIdResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/CreateBrandPartnerCardMemberPreauthTokenRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/CreateBrandPartnerCardMemberPreauthTokenRequest.cs new file mode 100644 index 00000000..c43dd222 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/CreateBrandPartnerCardMemberPreauthTokenRequest.cs @@ -0,0 +1,29 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/pre-auth-tokens 接口的请求。 + /// + public class CreateBrandPartnerCardMemberPreauthTokenRequest : WechatTenpayRequest + { + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("card_id")] + [System.Text.Json.Serialization.JsonPropertyName("card_id")] + public string CardId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/CreateBrandPartnerCardMemberPreauthTokenResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/CreateBrandPartnerCardMemberPreauthTokenResponse.cs new file mode 100644 index 00000000..d1349710 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/CreateBrandPartnerCardMemberPreauthTokenResponse.cs @@ -0,0 +1,26 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/pre-auth-tokens 接口的响应。 + /// + public class CreateBrandPartnerCardMemberPreauthTokenResponse : WechatTenpayResponse + { + /// + /// 获取或设置预授权 Token。 + /// + [Newtonsoft.Json.JsonProperty("token")] + [System.Text.Json.Serialization.JsonPropertyName("token")] + public string Token { get; set; } = default!; + + /// + /// 获取或设置预授权 Token 过期时间。 + /// + [Newtonsoft.Json.JsonProperty("expire_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("expire_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset ExpireTime { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/ConfirmBrandPartnerCardMemberUserCardRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/ConfirmBrandPartnerCardMemberUserCardRequest.cs new file mode 100644 index 00000000..e4ab4ce2 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/ConfirmBrandPartnerCardMemberUserCardRequest.cs @@ -0,0 +1,106 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/user-cards/{user_card_code}/confirm 接口的请求。 + /// + [WechatTenpaySensitive] + public class ConfirmBrandPartnerCardMemberUserCardRequest : WechatTenpayRequest + { + public static class Types + { + public class ValidDateInfo : UpdateBrandPartnerCardMemberUserCardRequest.Types.ValidDateInfo + { + } + + public class UserInfo : UpdateBrandPartnerCardMemberUserCardRequest.Types.UserInfo + { + } + } + + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string UserCardCode { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string CardId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡背景颜色。 + /// + [Newtonsoft.Json.JsonProperty("card_color")] + [System.Text.Json.Serialization.JsonPropertyName("card_color")] + public string? CardColor { get; set; } + + /// + /// 获取或设置会员卡图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("card_picture_url")] + [System.Text.Json.Serialization.JsonPropertyName("card_picture_url")] + public string? CardPictureUrl { get; set; } + + /// + /// 获取或设置用户的手机号码(需使用平台公钥/证书加密)。 + /// + [Newtonsoft.Json.JsonProperty("phone_number")] + [System.Text.Json.Serialization.JsonPropertyName("phone_number")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public string? MobileNumber { get; set; } + + /// + /// 获取或设置会员等级。 + /// + [Newtonsoft.Json.JsonProperty("level")] + [System.Text.Json.Serialization.JsonPropertyName("level")] + public string? Level { get; set; } + + /// + /// 获取或设置会员卡有效期信息。 + /// + [Newtonsoft.Json.JsonProperty("valid_date_information")] + [System.Text.Json.Serialization.JsonPropertyName("valid_date_information")] + public Types.ValidDateInfo? ValidDateInfo { get; set; } + + /// + /// 获取或设置用户开卡信息。 + /// + [Newtonsoft.Json.JsonProperty("user_information")] + [System.Text.Json.Serialization.JsonPropertyName("user_information")] + public Types.UserInfo? UserInfo { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置同步状态。 + /// + [Newtonsoft.Json.JsonProperty("user_card_confirm_state")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_confirm_state")] + public string ConfirmState { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/ConfirmBrandPartnerCardMemberUserCardResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/ConfirmBrandPartnerCardMemberUserCardResponse.cs new file mode 100644 index 00000000..afdefafe --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/ConfirmBrandPartnerCardMemberUserCardResponse.cs @@ -0,0 +1,10 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/user-cards/{user_card_code}/confirm 接口的响应。 + /// + [WechatTenpaySensitive] + public class ConfirmBrandPartnerCardMemberUserCardResponse : GetBrandPartnerCardMemberUserCardByUserCardCodeResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/GetBrandPartnerCardMemberUserCardByUserCardCodeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/GetBrandPartnerCardMemberUserCardByUserCardCodeRequest.cs new file mode 100644 index 00000000..55a8cfdb --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/GetBrandPartnerCardMemberUserCardByUserCardCodeRequest.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /brand/partner/card-member/user-cards/{user_card_code} 接口的请求。 + /// + public class GetBrandPartnerCardMemberUserCardByUserCardCodeRequest : WechatTenpayRequest + { + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string UserCardCode { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string CardId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string OpenId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.cs new file mode 100644 index 00000000..bb7e6fde --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.cs @@ -0,0 +1,158 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /brand/partner/card-member/user-cards/{user_card_code} 接口的响应。 + /// + [WechatTenpaySensitive] + public class GetBrandPartnerCardMemberUserCardByUserCardCodeResponse : WechatTenpayResponse + { + public static class Types + { + public class ValidDateInfo : QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard.Types.ValidDateInfo + { + } + + public class UserInfo : QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard.Types.UserInfo + { + } + } + + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonProperty("user_card_code")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_code")] + public string UserCardCode { get; set; } = default!; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("card_id")] + [System.Text.Json.Serialization.JsonPropertyName("card_id")] + public string CardId { get; set; } = default!; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = default!; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置会员卡类型。 + /// + [Newtonsoft.Json.JsonProperty("card_type")] + [System.Text.Json.Serialization.JsonPropertyName("card_type")] + public string CardType { get; set; } = default!; + + /// + /// 获取或设置会员卡背景颜色。 + /// + [Newtonsoft.Json.JsonProperty("card_color")] + [System.Text.Json.Serialization.JsonPropertyName("card_color")] + public string CardColor { get; set; } = default!; + + /// + /// 获取或设置会员卡图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("card_picture_url")] + [System.Text.Json.Serialization.JsonPropertyName("card_picture_url")] + public string CardPictureUrl { get; set; } = default!; + + /// + /// 获取或设置用户的手机号码(需使用商户私钥解密)。 + /// + [Newtonsoft.Json.JsonProperty("phone_number")] + [System.Text.Json.Serialization.JsonPropertyName("phone_number")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public string? MobileNumber { get; set; } + + /// + /// 获取或设置会员等级。 + /// + [Newtonsoft.Json.JsonProperty("level")] + [System.Text.Json.Serialization.JsonPropertyName("level")] + public string? Level { get; set; } + + /// + /// 获取或设置会员卡有效期信息。 + /// + [Newtonsoft.Json.JsonProperty("valid_date_information")] + [System.Text.Json.Serialization.JsonPropertyName("valid_date_information")] + public Types.ValidDateInfo? ValidDateInfo { get; set; } + + /// + /// 获取或设置领取时间。 + /// + [Newtonsoft.Json.JsonProperty("pickup_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("pickup_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset PickupTime { get; set; } + + /// + /// 获取或设置用户开卡信息。 + /// + [Newtonsoft.Json.JsonProperty("user_information")] + [System.Text.Json.Serialization.JsonPropertyName("user_information")] + public Types.UserInfo? UserInfo { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置会员卡状态。 + /// + [Newtonsoft.Json.JsonProperty("user_card_state")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_state")] + public string State { get; set; } = default!; + + /// + /// 获取或设置作废原因。 + /// + [Newtonsoft.Json.JsonProperty("invalid_reason")] + [System.Text.Json.Serialization.JsonPropertyName("invalid_reason")] + public string? InvalidReason { get; set; } + + /// + /// 获取或设置作废时间。 + /// + [Newtonsoft.Json.JsonProperty("invalid_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("invalid_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? InvalidTime { get; set; } + + /// + /// 获取或设置创建时间。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset CreateTime { get; set; } + + /// + /// 获取或设置更新时间。 + /// + [Newtonsoft.Json.JsonProperty("modify_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("modify_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset ModifyTime { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/ImportBrandPartnerCardMemberUserCardByOpenIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/ImportBrandPartnerCardMemberUserCardByOpenIdRequest.cs new file mode 100644 index 00000000..ab434262 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/ImportBrandPartnerCardMemberUserCardByOpenIdRequest.cs @@ -0,0 +1,103 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/user-cards/import-by-openid 接口的请求。 + /// + [WechatTenpaySensitive] + public class ImportBrandPartnerCardMemberUserCardByOpenIdRequest : WechatTenpayRequest + { + public static class Types + { + public class ValidDateInfo : UpdateBrandPartnerCardMemberUserCardRequest.Types.ValidDateInfo + { + } + + public class UserInfo : UpdateBrandPartnerCardMemberUserCardRequest.Types.UserInfo + { + } + } + + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonProperty("user_card_code")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_code")] + public string UserCardCode { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("card_id")] + [System.Text.Json.Serialization.JsonPropertyName("card_id")] + public string CardId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡背景颜色。 + /// + [Newtonsoft.Json.JsonProperty("card_color")] + [System.Text.Json.Serialization.JsonPropertyName("card_color")] + public string? CardColor { get; set; } + + /// + /// 获取或设置会员卡图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("card_picture_url")] + [System.Text.Json.Serialization.JsonPropertyName("card_picture_url")] + public string? CardPictureUrl { get; set; } + + /// + /// 获取或设置用户的手机号码(需使用平台公钥/证书加密)。 + /// + [Newtonsoft.Json.JsonProperty("phone_number")] + [System.Text.Json.Serialization.JsonPropertyName("phone_number")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public string? MobileNumber { get; set; } + + /// + /// 获取或设置会员等级。 + /// + [Newtonsoft.Json.JsonProperty("level")] + [System.Text.Json.Serialization.JsonPropertyName("level")] + public string? Level { get; set; } + + /// + /// 获取或设置会员卡有效期信息。 + /// + [Newtonsoft.Json.JsonProperty("valid_date_information")] + [System.Text.Json.Serialization.JsonPropertyName("valid_date_information")] + public Types.ValidDateInfo? ValidDateInfo { get; set; } + + /// + /// 获取或设置用户开卡信息。 + /// + [Newtonsoft.Json.JsonProperty("user_information")] + [System.Text.Json.Serialization.JsonPropertyName("user_information")] + public Types.UserInfo? UserInfo { get; set; } + + /// + /// 获取或设置领取时间。 + /// + [Newtonsoft.Json.JsonProperty("pickup_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("pickup_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? PickupTime { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/ImportBrandPartnerCardMemberUserCardByOpenIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/ImportBrandPartnerCardMemberUserCardByOpenIdResponse.cs new file mode 100644 index 00000000..03fe0993 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/ImportBrandPartnerCardMemberUserCardByOpenIdResponse.cs @@ -0,0 +1,10 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/user-cards/import-by-openid 接口的响应。 + /// + [WechatTenpaySensitive] + public class ImportBrandPartnerCardMemberUserCardByOpenIdResponse : GetBrandPartnerCardMemberUserCardByUserCardCodeResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/InvalidateBrandPartnerCardMemberUserCardRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/InvalidateBrandPartnerCardMemberUserCardRequest.cs new file mode 100644 index 00000000..0e86e4db --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/InvalidateBrandPartnerCardMemberUserCardRequest.cs @@ -0,0 +1,43 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/user-cards/{user_card_code}/invalidate 接口的请求。 + /// + public class InvalidateBrandPartnerCardMemberUserCardRequest : WechatTenpayRequest + { + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string UserCardCode { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string CardId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置作废原因。 + /// + [Newtonsoft.Json.JsonProperty("invalid_reason")] + [System.Text.Json.Serialization.JsonPropertyName("invalid_reason")] + public string? InvalidReason { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/InvalidateBrandPartnerCardMemberUserCardResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/InvalidateBrandPartnerCardMemberUserCardResponse.cs new file mode 100644 index 00000000..54c8aac7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/InvalidateBrandPartnerCardMemberUserCardResponse.cs @@ -0,0 +1,10 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/user-cards/{user_card_code}/invalidate 接口的响应。 + /// + [WechatTenpaySensitive] + public class InvalidateBrandPartnerCardMemberUserCardResponse : GetBrandPartnerCardMemberUserCardByUserCardCodeResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/QueryBrandPartnerCardMemberUserCardsRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/QueryBrandPartnerCardMemberUserCardsRequest.cs new file mode 100644 index 00000000..3340e6ed --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/QueryBrandPartnerCardMemberUserCardsRequest.cs @@ -0,0 +1,45 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /brand/partner/card-member/user-cards 接口的请求。 + /// + public class QueryBrandPartnerCardMemberUserCardsRequest : WechatTenpayRequest + { + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string BrandId { 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? State { get; set; } + + /// + /// 获取或设置分页大小。 + /// 默认值:10 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Limit { get; set; } + + /// + /// 获取或设置分页开始位置。 + /// 默认值:0 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int Offset { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/QueryBrandPartnerCardMemberUserCardsResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/QueryBrandPartnerCardMemberUserCardsResponse.cs new file mode 100644 index 00000000..ac991c99 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/QueryBrandPartnerCardMemberUserCardsResponse.cs @@ -0,0 +1,246 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /brand/partner/card-member/user-cards 接口的响应。 + /// + [WechatTenpaySensitive] + public class QueryBrandPartnerCardMemberUserCardsResponse : WechatTenpayResponse + { + public static class Types + { + public class UserCard + { + public static class Types + { + public class ValidDateInfo : QueryBrandPartnerCardMemberCardsResponse.Types.Card.Types.ValidDateInfo + { + } + + public class UserInfo + { + public static class Types + { + public class CommonField + { + /// + /// 获取或设置字段名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置字段值(需使用商户私钥解密)。 + /// + [Newtonsoft.Json.JsonProperty("value")] + [System.Text.Json.Serialization.JsonPropertyName("value")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public string? Value { get; set; } + } + + public class CustomField + { + /// + /// 获取或设置字段名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置字段值(需使用商户私钥解密)。 + /// + [Newtonsoft.Json.JsonProperty("user_chosen_values")] + [System.Text.Json.Serialization.JsonPropertyName("user_chosen_values")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public string[]? Values { get; set; } + } + } + + /// + /// 获取或设置通用开卡信息字段列表。 + /// + [Newtonsoft.Json.JsonProperty("common_field_list")] + [System.Text.Json.Serialization.JsonPropertyName("common_field_list")] + public Types.CommonField[]? CommonFieldList { get; set; } + + /// + /// 获取或设置自定义开卡信息字段列表。 + /// + [Newtonsoft.Json.JsonProperty("custom_field_list")] + [System.Text.Json.Serialization.JsonPropertyName("custom_field_list")] + public Types.CustomField[]? CustomFieldList { get; set; } + } + } + + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonProperty("user_card_code")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_code")] + public string UserCardCode { get; set; } = default!; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("card_id")] + [System.Text.Json.Serialization.JsonPropertyName("card_id")] + public string CardId { get; set; } = default!; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = default!; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置会员卡类型。 + /// + [Newtonsoft.Json.JsonProperty("card_type")] + [System.Text.Json.Serialization.JsonPropertyName("card_type")] + public string CardType { get; set; } = default!; + + /// + /// 获取或设置会员卡背景颜色。 + /// + [Newtonsoft.Json.JsonProperty("card_color")] + [System.Text.Json.Serialization.JsonPropertyName("card_color")] + public string CardColor { get; set; } = default!; + + /// + /// 获取或设置会员卡图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("card_picture_url")] + [System.Text.Json.Serialization.JsonPropertyName("card_picture_url")] + public string CardPictureUrl { get; set; } = default!; + + /// + /// 获取或设置用户的手机号码(需使用商户私钥解密)。 + /// + [Newtonsoft.Json.JsonProperty("phone_number")] + [System.Text.Json.Serialization.JsonPropertyName("phone_number")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public string? MobileNumber { get; set; } + + /// + /// 获取或设置会员等级。 + /// + [Newtonsoft.Json.JsonProperty("level")] + [System.Text.Json.Serialization.JsonPropertyName("level")] + public string? Level { get; set; } + + /// + /// 获取或设置会员卡有效期信息。 + /// + [Newtonsoft.Json.JsonProperty("valid_date_information")] + [System.Text.Json.Serialization.JsonPropertyName("valid_date_information")] + public Types.ValidDateInfo? ValidDateInfo { get; set; } + + /// + /// 获取或设置领取时间。 + /// + [Newtonsoft.Json.JsonProperty("pickup_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("pickup_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset PickupTime { get; set; } + + /// + /// 获取或设置用户开卡信息。 + /// + [Newtonsoft.Json.JsonProperty("user_information")] + [System.Text.Json.Serialization.JsonPropertyName("user_information")] + public Types.UserInfo? UserInfo { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置会员卡状态。 + /// + [Newtonsoft.Json.JsonProperty("user_card_state")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_state")] + public string State { get; set; } = default!; + + /// + /// 获取或设置作废原因。 + /// + [Newtonsoft.Json.JsonProperty("invalid_reason")] + [System.Text.Json.Serialization.JsonPropertyName("invalid_reason")] + public string? InvalidReason { get; set; } + + /// + /// 获取或设置作废时间。 + /// + [Newtonsoft.Json.JsonProperty("invalid_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("invalid_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? InvalidTime { get; set; } + + /// + /// 获取或设置创建时间。 + /// + [Newtonsoft.Json.JsonProperty("create_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("create_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset CreateTime { get; set; } + + /// + /// 获取或设置更新时间。 + /// + [Newtonsoft.Json.JsonProperty("modify_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("modify_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset ModifyTime { get; set; } + } + } + + /// + /// 获取或设置会员卡列表。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public Types.UserCard[] UserCardList { get; set; } = default!; + + /// + /// 获取或设置分页大小。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int Limit { get; set; } + + /// + /// 获取或设置分页开始位置。 + /// + [Newtonsoft.Json.JsonProperty("offset")] + [System.Text.Json.Serialization.JsonPropertyName("offset")] + public int Offset { 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/BrandCardMember/UserCards/UpdateBrandPartnerCardMemberUserCardRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/UpdateBrandPartnerCardMemberUserCardRequest.cs new file mode 100644 index 00000000..ce34def3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/UpdateBrandPartnerCardMemberUserCardRequest.cs @@ -0,0 +1,155 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [PATCH] /brand/partner/card-member/user-cards/{user_card_code} 接口的请求。 + /// + [WechatTenpaySensitive] + public class UpdateBrandPartnerCardMemberUserCardRequest : WechatTenpayRequest + { + public static class Types + { + public class ValidDateInfo : UpdateBrandPartnerCardMemberCardRequest.Types.ValidDateInfo + { + } + + public class UserInfo + { + public static class Types + { + public class CommonField + { + /// + /// 获取或设置字段名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置字段值(需使用平台公钥/证书加密)。 + /// + [Newtonsoft.Json.JsonProperty("value")] + [System.Text.Json.Serialization.JsonPropertyName("value")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public string? Value { get; set; } + } + + public class CustomField + { + /// + /// 获取或设置字段名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } = default!; + + /// + /// 获取或设置字段值(需使用平台公钥/证书加密)。 + /// + [Newtonsoft.Json.JsonProperty("user_chosen_values")] + [System.Text.Json.Serialization.JsonPropertyName("user_chosen_values")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public IList? Values { get; set; } + } + } + + /// + /// 获取或设置通用开卡信息字段列表。 + /// + [Newtonsoft.Json.JsonProperty("common_field_list")] + [System.Text.Json.Serialization.JsonPropertyName("common_field_list")] + public IList? CommonFieldList { get; set; } + + /// + /// 获取或设置自定义开卡信息字段列表。 + /// + [Newtonsoft.Json.JsonProperty("custom_field_list")] + [System.Text.Json.Serialization.JsonPropertyName("custom_field_list")] + public IList? CustomFieldList { get; set; } + } + } + + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string UserCardCode { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string CardId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡背景颜色。 + /// + [Newtonsoft.Json.JsonProperty("card_color")] + [System.Text.Json.Serialization.JsonPropertyName("card_color")] + public string? CardColor { get; set; } + + /// + /// 获取或设置会员卡图片 URL。 + /// + [Newtonsoft.Json.JsonProperty("card_picture_url")] + [System.Text.Json.Serialization.JsonPropertyName("card_picture_url")] + public string? CardPictureUrl { get; set; } + + /// + /// 获取或设置用户的手机号码(需使用平台公钥/证书加密)。 + /// + [Newtonsoft.Json.JsonProperty("phone_number")] + [System.Text.Json.Serialization.JsonPropertyName("phone_number")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public string? MobileNumber { get; set; } + + /// + /// 获取或设置会员等级。 + /// + [Newtonsoft.Json.JsonProperty("level")] + [System.Text.Json.Serialization.JsonPropertyName("level")] + public string? Level { get; set; } + + /// + /// 获取或设置会员卡有效期信息。 + /// + [Newtonsoft.Json.JsonProperty("valid_date_information")] + [System.Text.Json.Serialization.JsonPropertyName("valid_date_information")] + public Types.ValidDateInfo? ValidDateInfo { get; set; } + + /// + /// 获取或设置用户开卡信息。 + /// + [Newtonsoft.Json.JsonProperty("user_information")] + [System.Text.Json.Serialization.JsonPropertyName("user_information")] + public Types.UserInfo? UserInfo { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/UpdateBrandPartnerCardMemberUserCardResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/UpdateBrandPartnerCardMemberUserCardResponse.cs new file mode 100644 index 00000000..a7c51296 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserCards/UpdateBrandPartnerCardMemberUserCardResponse.cs @@ -0,0 +1,10 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [PATCH] /brand/partner/card-member/user-cards/{user_card_code} 接口的响应。 + /// + [WechatTenpaySensitive] + public class UpdateBrandPartnerCardMemberUserCardResponse : GetBrandPartnerCardMemberUserCardByUserCardCodeResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserFeeds/CreateBrandPartnerCardMemberUserFeedRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserFeeds/CreateBrandPartnerCardMemberUserFeedRequest.cs new file mode 100644 index 00000000..d28314a2 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserFeeds/CreateBrandPartnerCardMemberUserFeedRequest.cs @@ -0,0 +1,50 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/user-feeds 接口的请求。 + /// + public class CreateBrandPartnerCardMemberUserFeedRequest : WechatTenpayRequest + { + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonProperty("user_card_code")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_code")] + public string UserCardCode { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("card_id")] + [System.Text.Json.Serialization.JsonPropertyName("card_id")] + public string CardId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { 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("cell")] + [System.Text.Json.Serialization.JsonPropertyName("cell")] + public string CellData { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserFeeds/CreateBrandPartnerCardMemberUserFeedResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserFeeds/CreateBrandPartnerCardMemberUserFeedResponse.cs new file mode 100644 index 00000000..1f113499 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserFeeds/CreateBrandPartnerCardMemberUserFeedResponse.cs @@ -0,0 +1,43 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/user-feeds 接口的响应。 + /// + public class CreateBrandPartnerCardMemberUserFeedResponse : WechatTenpayResponse + { + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonProperty("user_card_code")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_code")] + public string UserCardCode { get; set; } = default!; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("card_id")] + [System.Text.Json.Serialization.JsonPropertyName("card_id")] + public string CardId { 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("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumber { get; set; } = default!; + + /// + /// 获取或设置会员动态内容。 + /// + [Newtonsoft.Json.JsonProperty("cell")] + [System.Text.Json.Serialization.JsonPropertyName("cell")] + public string CellData { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserPoints/ConfirmBrandPartnerCardMemberUserPointExchangeCouponRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserPoints/ConfirmBrandPartnerCardMemberUserPointExchangeCouponRequest.cs new file mode 100644 index 00000000..33527242 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserPoints/ConfirmBrandPartnerCardMemberUserPointExchangeCouponRequest.cs @@ -0,0 +1,71 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/user-points/exchange-coupon/confirm 接口的请求。 + /// + public class ConfirmBrandPartnerCardMemberUserPointExchangeCouponRequest : WechatTenpayRequest + { + /// + /// 获取或设置积分兑券 ID。 + /// + [Newtonsoft.Json.JsonProperty("record_id")] + [System.Text.Json.Serialization.JsonPropertyName("record_id")] + public string RecordId { get; set; } = string.Empty; + + /// + /// 获取或设置积分兑券模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("exchange_coupon_template_id")] + [System.Text.Json.Serialization.JsonPropertyName("exchange_coupon_template_id")] + public string ExchangeCouponTemplateId { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonProperty("user_card_code")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_code")] + public string UserCardCode { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("card_id")] + [System.Text.Json.Serialization.JsonPropertyName("card_id")] + public string CardId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置积分兑券状态。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string State { 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("fail_reason")] + [System.Text.Json.Serialization.JsonPropertyName("fail_reason")] + public string? FailReason { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserPoints/ConfirmBrandPartnerCardMemberUserPointExchangeCouponResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserPoints/ConfirmBrandPartnerCardMemberUserPointExchangeCouponResponse.cs new file mode 100644 index 00000000..b04d8bd8 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserPoints/ConfirmBrandPartnerCardMemberUserPointExchangeCouponResponse.cs @@ -0,0 +1,71 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/user-points/exchange-coupon/confirm 接口的响应。 + /// + public class ConfirmBrandPartnerCardMemberUserPointExchangeCouponResponse : WechatTenpayResponse + { + /// + /// 获取或设置积分兑券 ID。 + /// + [Newtonsoft.Json.JsonProperty("record_id")] + [System.Text.Json.Serialization.JsonPropertyName("record_id")] + public string RecordId { get; set; } = default!; + + /// + /// 获取或设置积分兑券模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("exchange_coupon_template_id")] + [System.Text.Json.Serialization.JsonPropertyName("exchange_coupon_template_id")] + public string ExchangeCouponTemplateId { get; set; } = default!; + + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonProperty("user_card_code")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_code")] + public string UserCardCode { get; set; } = default!; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("card_id")] + [System.Text.Json.Serialization.JsonPropertyName("card_id")] + public string CardId { get; set; } = default!; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = default!; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置积分兑券状态。 + /// + [Newtonsoft.Json.JsonProperty("state")] + [System.Text.Json.Serialization.JsonPropertyName("state")] + public string State { get; set; } = default!; + + /// + /// 获取或设置券 Code。 + /// + [Newtonsoft.Json.JsonProperty("coupon_code")] + [System.Text.Json.Serialization.JsonPropertyName("coupon_code")] + public string? CouponCode { get; set; } + + /// + /// 获取或设置失败原因。 + /// + [Newtonsoft.Json.JsonProperty("fail_reason")] + [System.Text.Json.Serialization.JsonPropertyName("fail_reason")] + public string? FailReason { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserPoints/SyncBrandPartnerCardMemberUserPointRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserPoints/SyncBrandPartnerCardMemberUserPointRequest.cs new file mode 100644 index 00000000..28c79e09 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserPoints/SyncBrandPartnerCardMemberUserPointRequest.cs @@ -0,0 +1,50 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/user-points/sync 接口的请求。 + /// + public class SyncBrandPartnerCardMemberUserPointRequest : WechatTenpayRequest + { + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonProperty("user_card_code")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_code")] + public string UserCardCode { get; set; } = string.Empty; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("card_id")] + [System.Text.Json.Serialization.JsonPropertyName("card_id")] + public string CardId { get; set; } = string.Empty; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = string.Empty; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { 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("point_balance")] + [System.Text.Json.Serialization.JsonPropertyName("point_balance")] + public int PointBalance { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserPoints/SyncBrandPartnerCardMemberUserPointResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserPoints/SyncBrandPartnerCardMemberUserPointResponse.cs new file mode 100644 index 00000000..570f9f1f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/BrandCardMember/UserPoints/SyncBrandPartnerCardMemberUserPointResponse.cs @@ -0,0 +1,50 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /brand/partner/card-member/user-points/sync 接口的响应。 + /// + public class SyncBrandPartnerCardMemberUserPointResponse : WechatTenpayResponse + { + /// + /// 获取或设置会员卡 Code。 + /// + [Newtonsoft.Json.JsonProperty("user_card_code")] + [System.Text.Json.Serialization.JsonPropertyName("user_card_code")] + public string UserCardCode { get; set; } = default!; + + /// + /// 获取或设置会员卡模板 ID。 + /// + [Newtonsoft.Json.JsonProperty("card_id")] + [System.Text.Json.Serialization.JsonPropertyName("card_id")] + public string CardId { get; set; } = default!; + + /// + /// 获取或设置品牌 ID。 + /// + [Newtonsoft.Json.JsonProperty("brand_id")] + [System.Text.Json.Serialization.JsonPropertyName("brand_id")] + public string BrandId { get; set; } = default!; + + /// + /// 获取或设置用户的 OpenId。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置商家请求单号。 + /// + [Newtonsoft.Json.JsonProperty("out_request_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_request_no")] + public string OutRequestNumber { get; set; } = default!; + + /// + /// 获取或设置积分余额。 + /// + [Newtonsoft.Json.JsonProperty("point_balance")] + [System.Text.Json.Serialization.JsonPropertyName("point_balance")] + public int PointBalance { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/SKIT.FlurlHttpClient.Wechat.TenpayV3.csproj b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/SKIT.FlurlHttpClient.Wechat.TenpayV3.csproj index f588aa14..a093a238 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/SKIT.FlurlHttpClient.Wechat.TenpayV3.csproj +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/SKIT.FlurlHttpClient.Wechat.TenpayV3.csproj @@ -15,7 +15,7 @@ https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat Flurl.Http Wechat Weixin MicroMessage Tenpay WechatPay WeixinPay Wxpay 微信 微信支付 微信商户 3.14.0 - 基于 Flurl.Http 的微信支付 API v3 版客户端,支持普通商户(直连)、合作伙伴(服务商、渠道商、机构、银行)两种接入模式,支持基础支付、代金券、商家券、委托营销、消费卡、支付有礼、银行定向促活、微信支付分、微信先享卡、支付即服务、点金计划、智慧商圈、电商收付通、平台收付通、二级商户进件、小微商户进件、消费者投诉、商户风控管理、商户违规通知、批量转账到零钱、银行组件、海关报关、融合钱包、微工卡、电子发票、电子小票、车主平台、教育续费通、校园轻松付等功能。 + 基于 Flurl.Http 的微信支付 API v3 版客户端,支持普通商户(直连)、合作伙伴(服务商、渠道商、机构、银行)两种接入模式,支持基础支付、代金券、商家券、商品券、委托营销、消费卡、支付有礼、银行定向促活、微信支付分、微信先享卡、支付即服务、点金计划、智慧商圈、电商收付通、平台收付通、二级商户进件、小微商户进件、消费者投诉、商户风控管理、商户违规通知、批量转账到零钱、银行组件、海关报关、融合钱包、微工卡、电子发票、电子小票、车主平台、教育续费通、校园轻松付、商家名片会员等功能。 Fu Diwei git https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/_Partner/BrandCardMember/BrandPartnerCardMemberPointExchangeCouponResource.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/_Partner/BrandCardMember/BrandPartnerCardMemberPointExchangeCouponResource.json new file mode 100644 index 00000000..db8077f0 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/_Partner/BrandCardMember/BrandPartnerCardMemberPointExchangeCouponResource.json @@ -0,0 +1,13 @@ +{ + "record_id": "WfTb8hfabrPAiw", + "brand_id": "1077", + "card_id": "pbLatjvWOibDc5", + "appid": "wxea9c30890f48d5ae", + "openid": "obLatjnxgnqzS4myYGmLZ7LgLBA", + "user_card_code": "478515832665", + "exchange_coupon_template_id": "0Flpo7FqTQ", + "deduct_points": 1000, + "product_coupon_id": "200000001", + "product_coupon_stock_type": "PRODUCT_COUPON_STOCK_TYPE_BUSI_FAVOR", + "stock_id": "100232301" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/_Partner/BrandCardMember/BrandPartnerCardMemberUserCardResource.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/_Partner/BrandCardMember/BrandPartnerCardMemberUserCardResource.json new file mode 100644 index 00000000..93d9d27d --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/_Partner/BrandCardMember/BrandPartnerCardMemberUserCardResource.json @@ -0,0 +1,38 @@ +{ + "brand_id": "1077", + "card_color": "#FFFF00", + "card_id": "pbLatjvWOibDc5", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0", + "card_type": "NORMAL", + "valid_date_information": { + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30, + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "type": "PERMANENT" + }, + "invalid_reason": "传入的自定义作废原因", + "invalid_time": "2015-05-20T13:29:35+08:00", + "level": "钻石会员", + "openid": "obLatjnxgnqzS4myYGmLZ7LgLBA", + "phone_number": "12345678999", + "pickup_time": "2020-05-20T13:29:35.120+08:00", + "user_card_code": "478515832665", + "user_card_state": "EFFECTIVE", + "create_time": "2020-05-20T13:29:35.120+08:00", + "modify_time": "2020-05-20T13:29:35.120+08:00", + "user_information": { + "common_field_list": [ + { + "name": "USER_FORM_FLAG_SEX", + "value": "男" + } + ], + "custom_field_list": [ + { + "name": "喜欢的运动", + "user_chosen_values": [ "足球", "篮球" ] + } + ] + }, + "attach": "brand_data" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/_Partner/BrandCardMember/BrandPartnerCardMemberUserPointResource.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/_Partner/BrandCardMember/BrandPartnerCardMemberUserPointResource.json new file mode 100644 index 00000000..dd74097f --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/_Partner/BrandCardMember/BrandPartnerCardMemberUserPointResource.json @@ -0,0 +1,6 @@ +{ + "brand_id": "1077", + "card_id": "pbLatjvWOibDc5", + "openid": "obLatjnxgnqzS4myYGmLZ7LgLBA", + "user_card_code": "478515832665" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/CreateBrandPartnerCardMemberCardRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/CreateBrandPartnerCardMemberCardRequest.json new file mode 100644 index 00000000..491fd9cd --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/CreateBrandPartnerCardMemberCardRequest.json @@ -0,0 +1,59 @@ +{ + "out_request_no": "100002322019090134234sfdf", + "brand_id": "1004", + "appid": "wxea9c30890f48d5ae", + "card_type": "NORMAL", + "card_title": "测试卡", + "card_color": "#FFFF00", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/0", + "code_mode": "SYSTEM_ALLOCATE", + "code_type": "BAR_CODE", + "code_jump_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/code/code" + }, + "benefits": "会员折扣、专属价", + "notify_url": "https://www.weixin.qq.com/wxpay/notify.php", + "need_pinned": true, + "need_display_level": true, + "init_level": "白银会员", + "service_phone": "010-8877xxxx", + "legal_agreement": "商家需在 48 小时内发货,若商品存在质量问题,用户可在 7 天内申请退货。", + "valid_date_information": { + "type": "PERMANENT", + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30 + }, + "member_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/points/points" + }, + "points_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/points/points" + }, + "balance_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/balance/balance" + }, + "purchase_information": { + "price": 100, + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/purchase/purchase" + }, + "user_information": { + "common_field_list": [ + "USER_FORM_FLAG_SEX" + ], + "custom_field_list": [ + { + "type": "CHECK_BOX", + "name": "喜欢的运动", + "values": [ + "篮球" + ] + } + ] + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/CreateBrandPartnerCardMemberCardResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/CreateBrandPartnerCardMemberCardResponse.json new file mode 100644 index 00000000..182f5e73 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/CreateBrandPartnerCardMemberCardResponse.json @@ -0,0 +1,63 @@ +{ + "out_request_no": "100002322019090134234sfdf", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "brand_id": "1004", + "appid": "wxea9c30890f48d5ae", + "card_type": "NORMAL", + "card_title": "测试卡", + "card_color": "#FFFF00", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/0", + "code_mode": "SYSTEM_ALLOCATE", + "code_type": "BAR_CODE", + "code_jump_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/code/code" + }, + "benefits": "会员折扣、专属价", + "notify_url": "https://www.weixin.qq.com/wxpay/notify.php", + "need_pinned": true, + "need_display_level": true, + "init_level": "白银会员", + "service_phone": "010-8877xxxx", + "legal_agreement": "商家需在 48 小时内发货,若商品存在质量问题,用户可在 7 天内申请退货。", + "valid_date_information": { + "type": "PERMANENT", + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30 + }, + "member_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/points/points" + }, + "points_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/points/points" + }, + "balance_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/balance/balance" + }, + "purchase_information": { + "price": 100, + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/purchase/purchase" + }, + "user_information": { + "common_field_list": [ + "USER_FORM_FLAG_SEX" + ], + "custom_field_list": [ + { + "type": "CHECK_BOX", + "name": "喜欢的运动", + "values": [ + "篮球" + ] + } + ] + }, + "state": "CARD_EFFECTIVE", + "create_time": "2020-05-20T13:29:35.120+08:00", + "modify_time": "2020-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/GetBrandPartnerCardMemberCardByCardIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/GetBrandPartnerCardMemberCardByCardIdResponse.json new file mode 100644 index 00000000..182f5e73 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/GetBrandPartnerCardMemberCardByCardIdResponse.json @@ -0,0 +1,63 @@ +{ + "out_request_no": "100002322019090134234sfdf", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "brand_id": "1004", + "appid": "wxea9c30890f48d5ae", + "card_type": "NORMAL", + "card_title": "测试卡", + "card_color": "#FFFF00", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/0", + "code_mode": "SYSTEM_ALLOCATE", + "code_type": "BAR_CODE", + "code_jump_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/code/code" + }, + "benefits": "会员折扣、专属价", + "notify_url": "https://www.weixin.qq.com/wxpay/notify.php", + "need_pinned": true, + "need_display_level": true, + "init_level": "白银会员", + "service_phone": "010-8877xxxx", + "legal_agreement": "商家需在 48 小时内发货,若商品存在质量问题,用户可在 7 天内申请退货。", + "valid_date_information": { + "type": "PERMANENT", + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30 + }, + "member_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/points/points" + }, + "points_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/points/points" + }, + "balance_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/balance/balance" + }, + "purchase_information": { + "price": 100, + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/purchase/purchase" + }, + "user_information": { + "common_field_list": [ + "USER_FORM_FLAG_SEX" + ], + "custom_field_list": [ + { + "type": "CHECK_BOX", + "name": "喜欢的运动", + "values": [ + "篮球" + ] + } + ] + }, + "state": "CARD_EFFECTIVE", + "create_time": "2020-05-20T13:29:35.120+08:00", + "modify_time": "2020-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/InvalidateBrandPartnerCardMemberCardRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/InvalidateBrandPartnerCardMemberCardRequest.json new file mode 100644 index 00000000..ada534f6 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/InvalidateBrandPartnerCardMemberCardRequest.json @@ -0,0 +1,3 @@ +{ + "brand_id": "1004" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/InvalidateBrandPartnerCardMemberCardResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/InvalidateBrandPartnerCardMemberCardResponse.json new file mode 100644 index 00000000..182f5e73 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/InvalidateBrandPartnerCardMemberCardResponse.json @@ -0,0 +1,63 @@ +{ + "out_request_no": "100002322019090134234sfdf", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "brand_id": "1004", + "appid": "wxea9c30890f48d5ae", + "card_type": "NORMAL", + "card_title": "测试卡", + "card_color": "#FFFF00", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/0", + "code_mode": "SYSTEM_ALLOCATE", + "code_type": "BAR_CODE", + "code_jump_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/code/code" + }, + "benefits": "会员折扣、专属价", + "notify_url": "https://www.weixin.qq.com/wxpay/notify.php", + "need_pinned": true, + "need_display_level": true, + "init_level": "白银会员", + "service_phone": "010-8877xxxx", + "legal_agreement": "商家需在 48 小时内发货,若商品存在质量问题,用户可在 7 天内申请退货。", + "valid_date_information": { + "type": "PERMANENT", + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30 + }, + "member_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/points/points" + }, + "points_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/points/points" + }, + "balance_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/balance/balance" + }, + "purchase_information": { + "price": 100, + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/purchase/purchase" + }, + "user_information": { + "common_field_list": [ + "USER_FORM_FLAG_SEX" + ], + "custom_field_list": [ + { + "type": "CHECK_BOX", + "name": "喜欢的运动", + "values": [ + "篮球" + ] + } + ] + }, + "state": "CARD_EFFECTIVE", + "create_time": "2020-05-20T13:29:35.120+08:00", + "modify_time": "2020-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/QueryBrandPartnerCardMemberCardsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/QueryBrandPartnerCardMemberCardsResponse.json new file mode 100644 index 00000000..eead3078 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/QueryBrandPartnerCardMemberCardsResponse.json @@ -0,0 +1,70 @@ +{ + "data": [ + { + "out_request_no": "100002322019090134234sfdf", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "brand_id": "1004", + "appid": "wxea9c30890f48d5ae", + "card_type": "NORMAL", + "card_title": "测试卡", + "card_color": "#FFFF00", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/0", + "code_mode": "SYSTEM_ALLOCATE", + "code_type": "BAR_CODE", + "code_jump_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/code/code" + }, + "benefits": "会员折扣、专属价", + "notify_url": "https://www.weixin.qq.com/wxpay/notify.php", + "need_pinned": true, + "need_display_level": true, + "init_level": "白银会员", + "service_phone": "010-8877xxxx", + "legal_agreement": "商家需在 48 小时内发货,若商品存在质量问题,用户可在 7 天内申请退货。", + "valid_date_information": { + "type": "PERMANENT", + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30 + }, + "member_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/points/points" + }, + "points_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/points/points" + }, + "balance_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/balance/balance" + }, + "purchase_information": { + "price": 100, + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/purchase/purchase" + }, + "user_information": { + "common_field_list": [ + "USER_FORM_FLAG_SEX" + ], + "custom_field_list": [ + { + "type": "CHECK_BOX", + "name": "喜欢的运动", + "values": [ + "篮球" + ] + } + ] + }, + "state": "CARD_EFFECTIVE", + "create_time": "2020-05-20T13:29:35.120+08:00", + "modify_time": "2020-05-20T13:29:35.120+08:00" + } + ], + "total_count": 20, + "offset": 0, + "limit": 20 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/UpdateBrandPartnerCardMemberCardRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/UpdateBrandPartnerCardMemberCardRequest.json new file mode 100644 index 00000000..3fdfb48e --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/UpdateBrandPartnerCardMemberCardRequest.json @@ -0,0 +1,52 @@ +{ + "brand_id": "实例值", + "card_title": "测试卡", + "card_color": "#FFFF00", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/0", + "code_jump_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/code/code" + }, + "benefits": "会员折扣、专属价", + "notify_url": "https://www.weixin.qq.com/wxpay/notify.php", + "need_pinned": true, + "need_display_level": true, + "service_phone": "010-8877xxxx", + "valid_date_information": { + "type": "PERMANENT", + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30 + }, + "member_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/points/points" + }, + "points_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/points/points" + }, + "balance_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/balance/balance" + }, + "purchase_information": { + "price": 100, + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/purchase/purchase" + }, + "user_information": { + "common_field_list": [ + "USER_FORM_FLAG_SEX" + ], + "custom_field_list": [ + { + "type": "CHECK_BOX", + "name": "喜欢的运动", + "values": [ + "篮球" + ] + } + ] + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/UpdateBrandPartnerCardMemberCardResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/UpdateBrandPartnerCardMemberCardResponse.json new file mode 100644 index 00000000..182f5e73 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/Cards/UpdateBrandPartnerCardMemberCardResponse.json @@ -0,0 +1,63 @@ +{ + "out_request_no": "100002322019090134234sfdf", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "brand_id": "1004", + "appid": "wxea9c30890f48d5ae", + "card_type": "NORMAL", + "card_title": "测试卡", + "card_color": "#FFFF00", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/xxxxx/0", + "code_mode": "SYSTEM_ALLOCATE", + "code_type": "BAR_CODE", + "code_jump_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/code/code" + }, + "benefits": "会员折扣、专属价", + "notify_url": "https://www.weixin.qq.com/wxpay/notify.php", + "need_pinned": true, + "need_display_level": true, + "init_level": "白银会员", + "service_phone": "010-8877xxxx", + "legal_agreement": "商家需在 48 小时内发货,若商品存在质量问题,用户可在 7 天内申请退货。", + "valid_date_information": { + "type": "PERMANENT", + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30 + }, + "member_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/points/points" + }, + "points_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/points/points" + }, + "balance_information": { + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/balance/balance" + }, + "purchase_information": { + "price": 100, + "jump_appid": "wxea9c30a90fs8d3fe", + "jump_path": "/pages/purchase/purchase" + }, + "user_information": { + "common_field_list": [ + "USER_FORM_FLAG_SEX" + ], + "custom_field_list": [ + { + "type": "CHECK_BOX", + "name": "喜欢的运动", + "values": [ + "篮球" + ] + } + ] + }, + "state": "CARD_EFFECTIVE", + "create_time": "2020-05-20T13:29:35.120+08:00", + "modify_time": "2020-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/CreateBrandPartnerCardMemberPreauthTokenRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/CreateBrandPartnerCardMemberPreauthTokenRequest.json new file mode 100644 index 00000000..45a294fe --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/CreateBrandPartnerCardMemberPreauthTokenRequest.json @@ -0,0 +1,5 @@ +{ + "brand_id": "1004", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/CreateBrandPartnerCardMemberPreauthTokenResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/CreateBrandPartnerCardMemberPreauthTokenResponse.json new file mode 100644 index 00000000..7715c0e7 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/CreateBrandPartnerCardMemberPreauthTokenResponse.json @@ -0,0 +1,4 @@ +{ + "token": "d2df23f2f4fasf3gws", + "expire_time": "2020-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/ConfirmBrandPartnerCardMemberUserCardRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/ConfirmBrandPartnerCardMemberUserCardRequest.json new file mode 100644 index 00000000..ece2bcd8 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/ConfirmBrandPartnerCardMemberUserCardRequest.json @@ -0,0 +1,32 @@ +{ + "brand_id": "1004", + "openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA", + "card_color": "#FFFF00", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0", + "phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==", + "level": "钻石会员", + "valid_date_information": { + "type": "PERMANENT", + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30 + }, + "user_information": { + "common_field_list": [ + { + "name": "USER_FORM_FLAG_BIRTHDAY", + "value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + } + ], + "custom_field_list": [ + { + "name": "喜欢的运动", + "user_chosen_values": [ + "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + ] + } + ] + }, + "attach": "自定义数据说明", + "user_card_confirm_state": "CREATE_CARD_SUCCESS" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/ConfirmBrandPartnerCardMemberUserCardResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/ConfirmBrandPartnerCardMemberUserCardResponse.json new file mode 100644 index 00000000..6603de53 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/ConfirmBrandPartnerCardMemberUserCardResponse.json @@ -0,0 +1,40 @@ +{ + "user_card_code": "478515832665", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA", + "card_color": "#FFFF00", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0", + "brand_id": "1001622624", + "card_type": "NORMAL", + "phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==", + "level": "钻石会员", + "valid_date_information": { + "type": "PERMANENT", + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30 + }, + "pickup_time": "2020-05-20T13:29:35.120+08:00", + "user_information": { + "common_field_list": [ + { + "name": "USER_FORM_FLAG_BIRTHDAY", + "value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + } + ], + "custom_field_list": [ + { + "name": "喜欢的运动", + "user_chosen_values": [ + "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + ] + } + ] + }, + "attach": "自定义数据说明", + "user_card_state": "EFFECTIVE", + "invalid_reason": "传入的自定义作废原因", + "invalid_time": "2020-05-20T13:29:35.120+08:00", + "create_time": "2020-05-20T13:29:35.120+08:00", + "modify_time": "2020-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.json new file mode 100644 index 00000000..6603de53 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.json @@ -0,0 +1,40 @@ +{ + "user_card_code": "478515832665", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA", + "card_color": "#FFFF00", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0", + "brand_id": "1001622624", + "card_type": "NORMAL", + "phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==", + "level": "钻石会员", + "valid_date_information": { + "type": "PERMANENT", + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30 + }, + "pickup_time": "2020-05-20T13:29:35.120+08:00", + "user_information": { + "common_field_list": [ + { + "name": "USER_FORM_FLAG_BIRTHDAY", + "value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + } + ], + "custom_field_list": [ + { + "name": "喜欢的运动", + "user_chosen_values": [ + "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + ] + } + ] + }, + "attach": "自定义数据说明", + "user_card_state": "EFFECTIVE", + "invalid_reason": "传入的自定义作废原因", + "invalid_time": "2020-05-20T13:29:35.120+08:00", + "create_time": "2020-05-20T13:29:35.120+08:00", + "modify_time": "2020-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/ImportBrandPartnerCardMemberUserCardByOpenIdRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/ImportBrandPartnerCardMemberUserCardByOpenIdRequest.json new file mode 100644 index 00000000..2d17538b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/ImportBrandPartnerCardMemberUserCardByOpenIdRequest.json @@ -0,0 +1,33 @@ +{ + "brand_id": "1004", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA", + "user_card_code": "478515832665", + "phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==", + "card_color": "#FFFF00", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0", + "level": "钻石会员", + "user_information": { + "common_field_list": [ + { + "name": "USER_FORM_FLAG_BIRTHDAY", + "value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + } + ], + "custom_field_list": [ + { + "name": "喜欢的运动", + "user_chosen_values": [ + "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + ] + } + ] + }, + "valid_date_information": { + "type": "PERMANENT", + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30 + }, + "pickup_time": "2020-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/ImportBrandPartnerCardMemberUserCardByOpenIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/ImportBrandPartnerCardMemberUserCardByOpenIdResponse.json new file mode 100644 index 00000000..6603de53 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/ImportBrandPartnerCardMemberUserCardByOpenIdResponse.json @@ -0,0 +1,40 @@ +{ + "user_card_code": "478515832665", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA", + "card_color": "#FFFF00", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0", + "brand_id": "1001622624", + "card_type": "NORMAL", + "phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==", + "level": "钻石会员", + "valid_date_information": { + "type": "PERMANENT", + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30 + }, + "pickup_time": "2020-05-20T13:29:35.120+08:00", + "user_information": { + "common_field_list": [ + { + "name": "USER_FORM_FLAG_BIRTHDAY", + "value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + } + ], + "custom_field_list": [ + { + "name": "喜欢的运动", + "user_chosen_values": [ + "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + ] + } + ] + }, + "attach": "自定义数据说明", + "user_card_state": "EFFECTIVE", + "invalid_reason": "传入的自定义作废原因", + "invalid_time": "2020-05-20T13:29:35.120+08:00", + "create_time": "2020-05-20T13:29:35.120+08:00", + "modify_time": "2020-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/InvalidateBrandPartnerCardMemberUserCardRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/InvalidateBrandPartnerCardMemberUserCardRequest.json new file mode 100644 index 00000000..dc78ce75 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/InvalidateBrandPartnerCardMemberUserCardRequest.json @@ -0,0 +1,4 @@ +{ + "openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA", + "invalid_reason": "传入的自定义作废原因" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/QueryBrandPartnerCardMemberUserCardsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/QueryBrandPartnerCardMemberUserCardsResponse.json new file mode 100644 index 00000000..325f5416 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/QueryBrandPartnerCardMemberUserCardsResponse.json @@ -0,0 +1,47 @@ +{ + "data": [ + { + "user_card_code": "478515832665", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA", + "card_color": "#FFFF00", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0", + "brand_id": "1001622624", + "card_type": "NORMAL", + "phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==", + "level": "钻石会员", + "valid_date_information": { + "type": "PERMANENT", + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30 + }, + "pickup_time": "2020-05-20T13:29:35.120+08:00", + "user_information": { + "common_field_list": [ + { + "name": "USER_FORM_FLAG_BIRTHDAY", + "value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + } + ], + "custom_field_list": [ + { + "name": "喜欢的运动", + "user_chosen_values": [ + "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + ] + } + ] + }, + "attach": "自定义数据说明", + "user_card_state": "EFFECTIVE", + "invalid_reason": "传入的自定义作废原因", + "invalid_time": "2020-05-20T13:29:35.120+08:00", + "create_time": "2020-05-20T13:29:35.120+08:00", + "modify_time": "2020-05-20T13:29:35.120+08:00" + } + ], + "total_count": 20, + "offset": 0, + "limit": 20 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/UpdateBrandPartnerCardMemberUserCardRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/UpdateBrandPartnerCardMemberUserCardRequest.json new file mode 100644 index 00000000..71ebad79 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/UpdateBrandPartnerCardMemberUserCardRequest.json @@ -0,0 +1,31 @@ +{ + "brand_id": "1004", + "openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA", + "card_color": "#FFFF00", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0", + "phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==", + "level": "钻石会员", + "valid_date_information": { + "type": "PERMANENT", + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30 + }, + "user_information": { + "common_field_list": [ + { + "name": "USER_FORM_FLAG_BIRTHDAY", + "value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + } + ], + "custom_field_list": [ + { + "name": "喜欢的运动", + "user_chosen_values": [ + "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + ] + } + ] + }, + "attach": "自定义数据说明" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/UpdateBrandPartnerCardMemberUserCardResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/UpdateBrandPartnerCardMemberUserCardResponse.json new file mode 100644 index 00000000..6603de53 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserCards/UpdateBrandPartnerCardMemberUserCardResponse.json @@ -0,0 +1,40 @@ +{ + "user_card_code": "478515832665", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA", + "card_color": "#FFFF00", + "card_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0", + "brand_id": "1001622624", + "card_type": "NORMAL", + "phone_number": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==", + "level": "钻石会员", + "valid_date_information": { + "type": "PERMANENT", + "available_begin_time": "2020-05-20T13:29:35.120+08:00", + "available_end_time": "2020-05-20T13:29:35.120+08:00", + "available_day_after_receive": 30 + }, + "pickup_time": "2020-05-20T13:29:35.120+08:00", + "user_information": { + "common_field_list": [ + { + "name": "USER_FORM_FLAG_BIRTHDAY", + "value": "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + } + ], + "custom_field_list": [ + { + "name": "喜欢的运动", + "user_chosen_values": [ + "vvysDQeEaH3I+wRh14St0abIkvQyFgh/fbWYSs2bLtG9tj+bdJn4WSCPzLhShNHgujZzseiL6sYmT7E65mv/eFeTa7yslYfrX0hrhHazSM/+tfvN/C3OZwiBbcrF9LTIIdBVhGOqhCx0gK5YAVZc8dbW/yJqC5i79PDfVYJtpQe3A4v/GiDa2Q+Mv03taxgnEkzqlSPjkXiCYBj9UaFJ4bqCTXiO2Kt6TpczvAaZW+9/blxiJwqEFXe78LbrIQvkDUmVdZbqBdPQ+QGQgc/2Ea4IbP/EEt1qSyXnFbzaaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==" + ] + } + ] + }, + "attach": "自定义数据说明", + "user_card_state": "EFFECTIVE", + "invalid_reason": "传入的自定义作废原因", + "invalid_time": "2020-05-20T13:29:35.120+08:00", + "create_time": "2020-05-20T13:29:35.120+08:00", + "modify_time": "2020-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserFeeds/CreateBrandPartnerCardMemberUserFeedRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserFeeds/CreateBrandPartnerCardMemberUserFeedRequest.json new file mode 100644 index 00000000..c26eb96b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserFeeds/CreateBrandPartnerCardMemberUserFeedRequest.json @@ -0,0 +1,8 @@ +{ + "brand_id": "1004", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "user_card_code": "478515832665", + "openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA", + "out_request_no": "100002322019090134234sfdf", + "cell": "15_1200_1" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserFeeds/CreateBrandPartnerCardMemberUserFeedResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserFeeds/CreateBrandPartnerCardMemberUserFeedResponse.json new file mode 100644 index 00000000..92582957 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserFeeds/CreateBrandPartnerCardMemberUserFeedResponse.json @@ -0,0 +1,7 @@ +{ + "brand_id": "1004", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "user_card_code": "478515832665", + "out_request_no": "100002322019090134234sfdf", + "cell": "15_1200_1" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserPoints/ConfirmBrandPartnerCardMemberUserPointExchangeCouponRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserPoints/ConfirmBrandPartnerCardMemberUserPointExchangeCouponRequest.json new file mode 100644 index 00000000..a4580eae --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserPoints/ConfirmBrandPartnerCardMemberUserPointExchangeCouponRequest.json @@ -0,0 +1,11 @@ +{ + "record_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "exchange_coupon_template_id": "0Flpo7FqTQ", + "brand_id": "1004", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA", + "user_card_code": "478515832665", + "state": "POINT_EXCHANGE_COUPON_SUCCESS", + "coupon_code": "123446565767", + "fail_reason": "积分不足" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserPoints/ConfirmBrandPartnerCardMemberUserPointExchangeCouponResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserPoints/ConfirmBrandPartnerCardMemberUserPointExchangeCouponResponse.json new file mode 100644 index 00000000..a4580eae --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserPoints/ConfirmBrandPartnerCardMemberUserPointExchangeCouponResponse.json @@ -0,0 +1,11 @@ +{ + "record_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "exchange_coupon_template_id": "0Flpo7FqTQ", + "brand_id": "1004", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA", + "user_card_code": "478515832665", + "state": "POINT_EXCHANGE_COUPON_SUCCESS", + "coupon_code": "123446565767", + "fail_reason": "积分不足" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserPoints/SyncBrandPartnerCardMemberUserPointRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserPoints/SyncBrandPartnerCardMemberUserPointRequest.json new file mode 100644 index 00000000..6f946927 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserPoints/SyncBrandPartnerCardMemberUserPointRequest.json @@ -0,0 +1,8 @@ +{ + "out_request_no": "100002322019090134234sfdf", + "brand_id": "1004", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA", + "user_card_code": "478515832665", + "point_balance": 1000 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserPoints/SyncBrandPartnerCardMemberUserPointResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserPoints/SyncBrandPartnerCardMemberUserPointResponse.json new file mode 100644 index 00000000..6f946927 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/BrandCardMember/UserPoints/SyncBrandPartnerCardMemberUserPointResponse.json @@ -0,0 +1,8 @@ +{ + "out_request_no": "100002322019090134234sfdf", + "brand_id": "1004", + "card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0", + "openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA", + "user_card_code": "478515832665", + "point_balance": 1000 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/TestCase_RequestEncryptionTests.cs b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/TestCase_RequestEncryptionTests.cs index 3f4aa867..c6033040 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/TestCase_RequestEncryptionTests.cs +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/TestCase_RequestEncryptionTests.cs @@ -287,6 +287,219 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests } } + [Fact(DisplayName = "测试用例:加密请求中的敏感数据([PATCH] /brand/partner/card-member/user-cards/{user_card_code})")] + public async Task TestEncryptRequestSensitiveProperty_UpdateBrandPartnerCardMemberUserCardRequest() + { + static Models.UpdateBrandPartnerCardMemberUserCardRequest GenerateMockRequestModel() + { + return new Models.UpdateBrandPartnerCardMemberUserCardRequest() + { + MobileNumber = MOCK_PLAIN_STR, + UserInfo = new Models.UpdateBrandPartnerCardMemberUserCardRequest.Types.UserInfo() + { + CommonFieldList = new List() + { + new Models.UpdateBrandPartnerCardMemberUserCardRequest.Types.UserInfo.Types.CommonField() + { + Value = MOCK_PLAIN_STR + } + }, + CustomFieldList = new List() + { + new Models.UpdateBrandPartnerCardMemberUserCardRequest.Types.UserInfo.Types.CustomField() + { + Values = new List() { MOCK_PLAIN_STR } + } + } + } + }; + } + + static void AssertMockRequestModel(Models.UpdateBrandPartnerCardMemberUserCardRequest request, Func decryptor) + { + Assert.NotEqual(MOCK_PLAIN_STR, request.MobileNumber!); + Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.UserInfo!.CommonFieldList![0].Value!)); + Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.UserInfo!.CustomFieldList![0].Values![0])); + Assert.Equal(MOCK_CERT_SN, request.WechatpaySerialNumber!, ignoreCase: true); + } + + if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantRSACertificatePrivateKey)) + { + using (var client = CreateMockClientUseRSA(autoEncrypt: false)) + { + var request = GenerateMockRequestModel(); + client.EncryptRequestSensitiveProperty(request); + AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + + using (var client = CreateMockClientUseRSA(autoEncrypt: true)) + { + var request = GenerateMockRequestModel(); + await client.ExecuteUpdateBrandPartnerCardMemberUserCardAsync(request); + AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + } + + if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantSM2CertificatePrivateKey)) + { + using (var client = CreateMockClientUseSM2(autoEncrypt: false)) + { + var request = GenerateMockRequestModel(); + client.EncryptRequestSensitiveProperty(request); + AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + + using (var client = CreateMockClientUseSM2(autoEncrypt: true)) + { + var request = GenerateMockRequestModel(); + await client.ExecuteUpdateBrandPartnerCardMemberUserCardAsync(request); + AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + } + } + + [Fact(DisplayName = "测试用例:加密请求中的敏感数据([POST] /brand/partner/card-member/user-cards/{user_card_code}/confirm)")] + public async Task TestEncryptRequestSensitiveProperty_ConfirmBrandPartnerCardMemberUserCardRequest() + { + static Models.ConfirmBrandPartnerCardMemberUserCardRequest GenerateMockRequestModel() + { + return new Models.ConfirmBrandPartnerCardMemberUserCardRequest() + { + MobileNumber = MOCK_PLAIN_STR, + UserInfo = new Models.ConfirmBrandPartnerCardMemberUserCardRequest.Types.UserInfo() + { + CommonFieldList = new List() + { + new Models.ConfirmBrandPartnerCardMemberUserCardRequest.Types.UserInfo.Types.CommonField() + { + Value = MOCK_PLAIN_STR + } + }, + CustomFieldList = new List() + { + new Models.ConfirmBrandPartnerCardMemberUserCardRequest.Types.UserInfo.Types.CustomField() + { + Values = new List() { MOCK_PLAIN_STR } + } + } + } + }; + } + + static void AssertMockRequestModel(Models.ConfirmBrandPartnerCardMemberUserCardRequest request, Func decryptor) + { + Assert.NotEqual(MOCK_PLAIN_STR, request.MobileNumber!); + Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.UserInfo!.CommonFieldList![0].Value!)); + Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.UserInfo!.CustomFieldList![0].Values![0])); + Assert.Equal(MOCK_CERT_SN, request.WechatpaySerialNumber!, ignoreCase: true); + } + + if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantRSACertificatePrivateKey)) + { + using (var client = CreateMockClientUseRSA(autoEncrypt: false)) + { + var request = GenerateMockRequestModel(); + client.EncryptRequestSensitiveProperty(request); + AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + + using (var client = CreateMockClientUseRSA(autoEncrypt: true)) + { + var request = GenerateMockRequestModel(); + await client.ExecuteConfirmBrandPartnerCardMemberUserCardAsync(request); + AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + } + + if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantSM2CertificatePrivateKey)) + { + using (var client = CreateMockClientUseSM2(autoEncrypt: false)) + { + var request = GenerateMockRequestModel(); + client.EncryptRequestSensitiveProperty(request); + AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + + using (var client = CreateMockClientUseSM2(autoEncrypt: true)) + { + var request = GenerateMockRequestModel(); + await client.ExecuteConfirmBrandPartnerCardMemberUserCardAsync(request); + AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + } + } + + [Fact(DisplayName = "测试用例:加密请求中的敏感数据([POST] /brand/partner/card-member/user-cards/import-by-openid)")] + public async Task TestEncryptRequestSensitiveProperty_ImportBrandPartnerCardMemberUserCardByOpenIdRequest() + { + static Models.ImportBrandPartnerCardMemberUserCardByOpenIdRequest GenerateMockRequestModel() + { + return new Models.ImportBrandPartnerCardMemberUserCardByOpenIdRequest() + { + MobileNumber = MOCK_PLAIN_STR, + UserInfo = new Models.ImportBrandPartnerCardMemberUserCardByOpenIdRequest.Types.UserInfo() + { + CommonFieldList = new List() + { + new Models.ImportBrandPartnerCardMemberUserCardByOpenIdRequest.Types.UserInfo.Types.CommonField() + { + Value = MOCK_PLAIN_STR + } + }, + CustomFieldList = new List() + { + new Models.ImportBrandPartnerCardMemberUserCardByOpenIdRequest.Types.UserInfo.Types.CustomField() + { + Values = new List() { MOCK_PLAIN_STR } + } + } + } + }; + } + + static void AssertMockRequestModel(Models.ImportBrandPartnerCardMemberUserCardByOpenIdRequest request, Func decryptor) + { + Assert.NotEqual(MOCK_PLAIN_STR, request.MobileNumber!); + Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.UserInfo!.CommonFieldList![0].Value!)); + Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.UserInfo!.CustomFieldList![0].Values![0])); + Assert.Equal(MOCK_CERT_SN, request.WechatpaySerialNumber!, ignoreCase: true); + } + + if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantRSACertificatePrivateKey)) + { + using (var client = CreateMockClientUseRSA(autoEncrypt: false)) + { + var request = GenerateMockRequestModel(); + client.EncryptRequestSensitiveProperty(request); + AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + + using (var client = CreateMockClientUseRSA(autoEncrypt: true)) + { + var request = GenerateMockRequestModel(); + await client.ExecuteImportBrandPartnerCardMemberUserCardByOpenIdAsync(request); + AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + } + + if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantSM2CertificatePrivateKey)) + { + using (var client = CreateMockClientUseSM2(autoEncrypt: false)) + { + var request = GenerateMockRequestModel(); + client.EncryptRequestSensitiveProperty(request); + AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + + using (var client = CreateMockClientUseSM2(autoEncrypt: true)) + { + var request = GenerateMockRequestModel(); + await client.ExecuteImportBrandPartnerCardMemberUserCardByOpenIdAsync(request); + AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!); + } + } + } + [Fact(DisplayName = "测试用例:加密请求中的敏感数据([POST] /brand/profitsharing/orders)")] public async Task TestEncryptRequestSensitiveProperty_CreateBrandProfitSharingOrderRequest() { diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/TestCase_ResponseDecryptionTests.cs b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/TestCase_ResponseDecryptionTests.cs index 51870b6c..e318b84a 100644 --- a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/TestCase_ResponseDecryptionTests.cs +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/TestCase_ResponseDecryptionTests.cs @@ -87,6 +87,172 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests } } + [Fact(DisplayName = "测试用例:解密响应中的敏感数据([GET] /brand/partner/card-member/user-cards)")] + public async Task TestDecryptResponseSensitiveProperty_QueryBrandPartnerCardMemberUserCardsResponse() + { + static Models.QueryBrandPartnerCardMemberUserCardsResponse GenerateMockResponseModel(Func encryptor) + { + return SetMockResponseRawStatusAsOk(new Models.QueryBrandPartnerCardMemberUserCardsResponse() + { + UserCardList = new Models.QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard[] + { + new Models.QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard() + { + MobileNumber = encryptor.Invoke(MOCK_PLAIN_STR), + UserInfo = new Models.QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard.Types.UserInfo() + { + CommonFieldList = new Models.QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard.Types.UserInfo.Types.CommonField[] + { + new Models.QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard.Types.UserInfo.Types.CommonField() + { + Value = encryptor.Invoke(MOCK_PLAIN_STR) + } + }, + CustomFieldList = new Models.QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard.Types.UserInfo.Types.CustomField[] + { + new Models.QueryBrandPartnerCardMemberUserCardsResponse.Types.UserCard.Types.UserInfo.Types.CustomField() + { + Values = new string[] { encryptor.Invoke(MOCK_PLAIN_STR) } + } + } + } + } + } + }); + } + + static void AssertMockResponseModel(Models.QueryBrandPartnerCardMemberUserCardsResponse response) + { + Assert.Equal(MOCK_PLAIN_STR, response.UserCardList[0].MobileNumber); + Assert.Equal(MOCK_PLAIN_STR, response.UserCardList[0].UserInfo!.CommonFieldList![0].Value); + Assert.Equal(MOCK_PLAIN_STR, response.UserCardList[0].UserInfo!.CustomFieldList![0].Values![0]); + } + + if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantRSACertificatePrivateKey)) + { + using (var client = CreateMockClientUseRSA(autoDecrypt: false)) + { + var response = GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain)!); + client.DecryptResponseSensitiveProperty(response); + AssertMockResponseModel(response); + } + + using (var client = CreateMockClientUseRSA( + autoDecrypt: true, + mockResponseContent: new SystemTextJsonSerializer().Serialize( + GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain)!) + ) + )) + { + var request = new Models.QueryBrandPartnerCardMemberUserCardsRequest(); + var response = await client.ExecuteQueryBrandPartnerCardMemberUserCardsAsync(request); + AssertMockResponseModel(response); + } + } + + if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantSM2CertificatePrivateKey)) + { + using (var client = CreateMockClientUseSM2(autoDecrypt: false)) + { + var response = GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain)!); + client.DecryptResponseSensitiveProperty(response); + AssertMockResponseModel(response); + } + + using (var client = CreateMockClientUseSM2( + autoDecrypt: true, + mockResponseContent: new SystemTextJsonSerializer().Serialize( + GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain)!) + ) + )) + { + var request = new Models.QueryBrandPartnerCardMemberUserCardsRequest(); + var response = await client.ExecuteQueryBrandPartnerCardMemberUserCardsAsync(request); + AssertMockResponseModel(response); + } + } + } + + [Fact(DisplayName = "测试用例:解密响应中的敏感数据([GET] /brand/partner/card-member/user-cards/{user_card_code})")] + public async Task TestDecryptResponseSensitiveProperty_GetBrandPartnerCardMemberUserCardByUserCardCodeResponse() + { + static Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse GenerateMockResponseModel(Func encryptor) + { + return SetMockResponseRawStatusAsOk(new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse() + { + MobileNumber = encryptor.Invoke(MOCK_PLAIN_STR), + UserInfo = new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.Types.UserInfo() + { + CommonFieldList = new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.Types.UserInfo.Types.CommonField[] + { + new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.Types.UserInfo.Types.CommonField() + { + Value = encryptor.Invoke(MOCK_PLAIN_STR) + } + }, + CustomFieldList = new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.Types.UserInfo.Types.CustomField[] + { + new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse.Types.UserInfo.Types.CustomField() + { + Values = new string[] { encryptor.Invoke(MOCK_PLAIN_STR) } + } + } + } + }); + } + + static void AssertMockResponseModel(Models.GetBrandPartnerCardMemberUserCardByUserCardCodeResponse response) + { + Assert.Equal(MOCK_PLAIN_STR, response.MobileNumber); + Assert.Equal(MOCK_PLAIN_STR, response.UserInfo!.CommonFieldList![0].Value); + Assert.Equal(MOCK_PLAIN_STR, response.UserInfo!.CustomFieldList![0].Values![0]); + } + + if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantRSACertificatePrivateKey)) + { + using (var client = CreateMockClientUseRSA(autoDecrypt: false)) + { + var response = GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain)!); + client.DecryptResponseSensitiveProperty(response); + AssertMockResponseModel(response); + } + + using (var client = CreateMockClientUseRSA( + autoDecrypt: true, + mockResponseContent: new SystemTextJsonSerializer().Serialize( + GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain)!) + ) + )) + { + var request = new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeRequest(); + var response = await client.ExecuteGetBrandPartnerCardMemberUserCardByUserCardCodeAsync(request); + AssertMockResponseModel(response); + } + } + + if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantSM2CertificatePrivateKey)) + { + using (var client = CreateMockClientUseSM2(autoDecrypt: false)) + { + var response = GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain)!); + client.DecryptResponseSensitiveProperty(response); + AssertMockResponseModel(response); + } + + using (var client = CreateMockClientUseSM2( + autoDecrypt: true, + mockResponseContent: new SystemTextJsonSerializer().Serialize( + GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain)!) + ) + )) + { + var request = new Models.GetBrandPartnerCardMemberUserCardByUserCardCodeRequest(); + var response = await client.ExecuteGetBrandPartnerCardMemberUserCardByUserCardCodeAsync(request); + AssertMockResponseModel(response); + } + } + } + [Fact(DisplayName = "测试用例:解密响应中的敏感数据([GET] /certificates)")] public async Task TestDecryptResponseSensitiveProperty_QueryCertificatesResponse() {