feat(tenpayv3): 新增会员卡基础功能相关接口

This commit is contained in:
Fu Diwei
2021-12-08 01:32:58 +08:00
parent 8fb60ffe75
commit f9eba5ff05
33 changed files with 964 additions and 26 deletions

View File

@@ -11,6 +11,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
/// </summary>
public static class WechatTenpayClientExecuteMarketingMemberCardOpenExtensions
{
#region Card
/// <summary>
/// <para>异步调用 [POST] /marketing/membercard-open/cards 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/marketing/membercard_open/chapter3_1.shtml </para>
@@ -49,25 +50,6 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
return await client.SendRequestWithJsonAsync<Models.UpgradeMarketingMemberCardOpenCardResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /marketing/membercard-open/cards/{card_id}/codes/deposit 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/marketing/membercard_open/chapter3_7.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.DepositMarketingMemberCardOpenCardCodesResponse> ExecuteDepositMarketingMemberCardOpenCardCodesAsync(this WechatTenpayClient client, Models.DepositMarketingMemberCardOpenCardCodesRequest 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
.CreateRequest(request, HttpMethod.Post, "marketing", "membercard-open", "cards", request.CardId, "codes", "deposit");
return await client.SendRequestWithJsonAsync<Models.DepositMarketingMemberCardOpenCardCodesResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /marketing/membercard-open/cards 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/marketing/membercard_open/chapter3_3.shtml </para>
@@ -153,5 +135,151 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
return await client.SendRequestWithJsonAsync<Models.DeleteMarketingMemberCardOpenCardResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
#region Code
/// <summary>
/// <para>异步调用 [POST] /marketing/membercard-open/cards/{card_id}/codes/deposit 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/marketing/membercard_open/chapter3_7.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.DepositMarketingMemberCardOpenCardCodesResponse> ExecuteDepositMarketingMemberCardOpenCardCodesAsync(this WechatTenpayClient client, Models.DepositMarketingMemberCardOpenCardCodesRequest 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
.CreateRequest(request, HttpMethod.Post, "marketing", "membercard-open", "cards", request.CardId, "codes", "deposit");
return await client.SendRequestWithJsonAsync<Models.DepositMarketingMemberCardOpenCardCodesResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /marketing/membercard-open/cards/{card_id}/users/import 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/marketing/membercard_open/chapter3_13.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ImportMarketingMemberCardOpenCardUserResponse> ExecuteImportMarketingMemberCardOpenCardUserAsync(this WechatTenpayClient client, Models.ImportMarketingMemberCardOpenCardUserRequest 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
.CreateRequest(request, HttpMethod.Post, "marketing", "membercard-open", "cards", request.CardId, "users", "import");
return await client.SendRequestWithJsonAsync<Models.ImportMarketingMemberCardOpenCardUserResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /marketing/membercard-open/cards/{card_id}/phone-membercard/import 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/marketing/membercard_open/chapter3_14.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.ImportMarketingMemberCardOpenCardPhoneResponse> ExecuteImportMarketingMemberCardOpenCardPhoneAsync(this WechatTenpayClient client, Models.ImportMarketingMemberCardOpenCardPhoneRequest 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
.CreateRequest(request, HttpMethod.Post, "marketing", "membercard-open", "cards", request.CardId, "phone-membercard", "import");
return await client.SendRequestWithJsonAsync<Models.ImportMarketingMemberCardOpenCardPhoneResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [POST] /marketing/membercard-open/cards/{card_id}/codes/{code}/unavailable 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/marketing/membercard_open/chapter3_12.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.SetMarketingMemberCardOpenCardCodeUnavailableResponse> ExecuteSetMarketingMemberCardOpenCardCodeUnavailableAsync(this WechatTenpayClient client, Models.SetMarketingMemberCardOpenCardCodeUnavailableRequest 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
.CreateRequest(request, HttpMethod.Post, "marketing", "membercard-open", "cards", request.CardId, "codes", request.Code, "unavailable");
return await client.SendRequestWithJsonAsync<Models.SetMarketingMemberCardOpenCardCodeUnavailableResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /marketing/membercard-open/cards/{card_id}/codes/{code} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/marketing/membercard_open/chapter3_4.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetMarketingMemberCardOpenCardCodeByCardIdAndCodeResponse> ExecuteGetMarketingMemberCardOpenCardCodeByCardIdAndCodeAsync(this WechatTenpayClient client, Models.GetMarketingMemberCardOpenCardCodeByCardIdAndCodeRequest 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
.CreateRequest(request, HttpMethod.Get, "marketing", "membercard-open", "cards", request.CardId, "codes", request.Code);
return await client.SendRequestWithJsonAsync<Models.GetMarketingMemberCardOpenCardCodeByCardIdAndCodeResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [GET] /marketing/membercard-open/user/cards 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/marketing/membercard_open/chapter3_5.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.QueryMarketingMemberCardOpenUserCardsResponse> ExecuteQueryMarketingMemberCardOpenUserCardsAsync(this WechatTenpayClient client, Models.QueryMarketingMemberCardOpenUserCardsRequest 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
.CreateRequest(request, HttpMethod.Get, "marketing", "membercard-open", "user", "cards")
.SetQueryParam("openid", request.OpenId);
if (request.AppId != null)
flurlReq.SetQueryParam("appid", request.AppId);
if (request.Limit != null)
flurlReq.SetQueryParam("limit", request.Limit.Value.ToString());
if (request.Offset != null)
flurlReq.SetQueryParam("offset", request.Offset.Value.ToString());
return await client.SendRequestWithJsonAsync<Models.QueryMarketingMemberCardOpenUserCardsResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
/// <summary>
/// <para>异步调用 [PATCH] /marketing/membercard-open/cards/{card_id}/codes/{code} 接口。</para>
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/marketing/membercard_open/chapter3_8.shtml </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.UpdateMarketingMemberCardOpenCardCodeResponse> ExecuteUpdateMarketingMemberCardOpenCardCodeAsync(this WechatTenpayClient client, Models.UpdateMarketingMemberCardOpenCardCodeRequest 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
.CreateRequest(request, new HttpMethod("PATCH"), "marketing", "membercard-open", "cards", request.CardId, "codes", request.Code);
return await client.SendRequestWithJsonAsync<Models.UpdateMarketingMemberCardOpenCardCodeResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
}
#endregion
}
}

View File

@@ -130,11 +130,11 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
}
/// <summary>
/// 获取或设置平台提供的通用开卡信息字段列表。
/// 获取或设置平台提供的通用开卡信息字段名称列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("common_field_list")]
[System.Text.Json.Serialization.JsonPropertyName("common_field_list")]
public IList<string>? CommonFieldList { get; set; }
public IList<string>? CommonFieldNameList { get; set; }
/// <summary>
/// 获取或设置商户自定义的开卡信息字段列表。

View File

@@ -136,11 +136,11 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
public bool? CanModifyAfterActivate { get; set; }
/// <summary>
/// 获取或设置平台提供的通用开卡信息字段列表。
/// 获取或设置平台提供的通用开卡信息字段名称列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("common_field_list")]
[System.Text.Json.Serialization.JsonPropertyName("common_field_list")]
public string[]? CommonFieldList { get; set; }
public string[]? CommonFieldNameList { get; set; }
/// <summary>
/// 获取或设置商户自定义的开卡信息字段列表。

View File

@@ -230,7 +230,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
public int Offset { get; set; }
/// <summary>
/// 获取或设置活动总数量。
/// 获取或设置会员卡总数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_count")]
[System.Text.Json.Serialization.JsonPropertyName("total_count")]

View File

@@ -34,11 +34,11 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
public bool? CanModifyAfterActivate { get; set; }
/// <summary>
/// 获取或设置平台提供的通用开卡信息字段列表。
/// 获取或设置平台提供的通用开卡信息字段名称列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("common_field_list")]
[System.Text.Json.Serialization.JsonPropertyName("common_field_list")]
public IList<string>? CommonFieldList { get; set; }
public IList<string>? CommonFieldNameList { get; set; }
/// <summary>
/// 获取或设置商户自定义的开卡信息字段列表。

View File

@@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /marketing/membercard-open/cards/{card_id}/codes/{code} 接口的请求。</para>
/// </summary>
public class GetMarketingMemberCardOpenCardCodeByCardIdAndCodeRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置会员卡 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string CardId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置会员卡 Code。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string Code { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,337 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /marketing/membercard-open/cards/{card_id}/codes/{code} 接口的响应。</para>
/// </summary>
public class GetMarketingMemberCardOpenCardCodeByCardIdAndCodeResponse : WechatTenpayResponse
{
public static class Types
{
public class UserInformation
{
public static class Types
{
public class CommonField
{
/// <summary>
/// 获取或设置字段名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string Name { get; set; } = default!;
/// <summary>
/// 获取或设置字段值。
/// </summary>
[Newtonsoft.Json.JsonProperty("value")]
[System.Text.Json.Serialization.JsonPropertyName("value")]
public string Value { get; set; } = default!;
}
public class CustomField
{
/// <summary>
/// 获取或设置字段名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string Name { get; set; } = default!;
/// <summary>
/// 获取或设置字段值。
/// </summary>
[Newtonsoft.Json.JsonProperty("value")]
[System.Text.Json.Serialization.JsonPropertyName("value")]
public string? Value { get; set; }
/// <summary>
/// 获取或设置字段值。
/// </summary>
[Newtonsoft.Json.JsonProperty("value_list")]
[System.Text.Json.Serialization.JsonPropertyName("value_list")]
public string[]? Values { get; set; }
}
}
/// <summary>
/// 获取或设置平台提供的通用开卡信息字段列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("common_field_list")]
[System.Text.Json.Serialization.JsonPropertyName("common_field_list")]
public Types.CommonField[]? CommonFieldList { get; set; }
/// <summary>
/// 获取或设置商户自定义的开卡信息字段列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("custom_field_list")]
[System.Text.Json.Serialization.JsonPropertyName("custom_field_list")]
public Types.CustomField[]? CustomFieldList { get; set; }
}
public class ServiceModule
{
public static class Types
{
public class StateSetting
{
public static class Types
{
public class ContentTemplate
{
public static class Types
{
public class Field
{
/// <summary>
/// 获取或设置内容字段 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("field_id")]
[System.Text.Json.Serialization.JsonPropertyName("field_id")]
public string FieldId { get; set; } = default!;
/// <summary>
/// 获取或设置内容字段值。
/// </summary>
[Newtonsoft.Json.JsonProperty("field_value")]
[System.Text.Json.Serialization.JsonPropertyName("field_value")]
public string FieldValue { get; set; } = default!;
}
public class ActionSetting
{
public static class Types
{
public class MiniProgram
{
/// <summary>
/// 获取或设置小程序 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string AppId { get; set; } = default!;
/// <summary>
/// 获取或设置小程序页面路径。
/// </summary>
[Newtonsoft.Json.JsonProperty("path")]
[System.Text.Json.Serialization.JsonPropertyName("path")]
public string Path { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置操作名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("action_name")]
[System.Text.Json.Serialization.JsonPropertyName("action_name")]
public string ActionName { get; set; } = default!;
/// <summary>
/// 获取或设置跳转小程序信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("jump_miniprogram")]
[System.Text.Json.Serialization.JsonPropertyName("jump_miniprogram")]
public Types.MiniProgram MiniProgram { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置内容字段列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("field_list")]
[System.Text.Json.Serialization.JsonPropertyName("field_list")]
public Types.Field[] FieldList { get; set; } = default!;
/// <summary>
/// 获取或设置操作设置信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("action_setting")]
[System.Text.Json.Serialization.JsonPropertyName("action_setting")]
public Types.ActionSetting? ActionSetting { get; set; }
}
public class TemplateMessageSetting
{
public static class Types
{
public class Field
{
/// <summary>
/// 获取或设置消息字段 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("field_id")]
[System.Text.Json.Serialization.JsonPropertyName("field_id")]
public string FieldId { get; set; } = default!;
/// <summary>
/// 获取或设置消息字段值。
/// </summary>
[Newtonsoft.Json.JsonProperty("field_value")]
[System.Text.Json.Serialization.JsonPropertyName("field_value")]
public string FieldValue { get; set; } = default!;
}
}
/// <summary>
/// 获取或设置模板消息 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("message_template_id")]
[System.Text.Json.Serialization.JsonPropertyName("message_template_id")]
public string TemplateMessageId { get; set; } = default!;
/// <summary>
/// 获取或设置消息字段列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("field_list")]
[System.Text.Json.Serialization.JsonPropertyName("field_list")]
public Types.Field[]? FieldList { get; set; }
}
}
/// <summary>
/// 获取或设置状态 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("state_id")]
[System.Text.Json.Serialization.JsonPropertyName("state_id")]
public string StateId { get; set; } = default!;
/// <summary>
/// 获取或设置内容模板信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("content_template_data")]
[System.Text.Json.Serialization.JsonPropertyName("content_template_data")]
public Types.ContentTemplate? ContentTemplate { get; set; }
/// <summary>
/// 获取或设置模板消息设置信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("message_template_setting")]
[System.Text.Json.Serialization.JsonPropertyName("message_template_setting")]
public Types.TemplateMessageSetting? TemplateMessageSetting { get; set; }
}
}
/// <summary>
/// 获取或设置会员服务项 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("service_module_id")]
[System.Text.Json.Serialization.JsonPropertyName("service_module_id")]
public string ServiceModuleId { get; set; } = default!;
/// <summary>
/// 获取或设置服务状态设置。
/// </summary>
[Newtonsoft.Json.JsonProperty("state_setting")]
[System.Text.Json.Serialization.JsonPropertyName("state_setting")]
public Types.StateSetting? StateSetting { get; set; }
}
public class Guide : GetMarketingMemberCardOpenCardByCardIdResponse.Types.Guide
{
}
}
/// <summary>
/// 获取或设置会员卡 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("card_id")]
[System.Text.Json.Serialization.JsonPropertyName("card_id")]
public string CardId { get; set; } = default!;
/// <summary>
/// 获取或设置用户 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string? OpenId { get; set; }
/// <summary>
/// 获取或设置会员卡编号。
/// </summary>
[Newtonsoft.Json.JsonProperty("membership_number")]
[System.Text.Json.Serialization.JsonPropertyName("membership_number")]
public string? MembershipNumber { get; set; }
/// <summary>
/// 获取或设置用户等级。
/// </summary>
[Newtonsoft.Json.JsonProperty("level")]
[System.Text.Json.Serialization.JsonPropertyName("level")]
public string? Level { get; set; }
/// <summary>
/// 获取或设置用户昵称。
/// </summary>
[Newtonsoft.Json.JsonProperty("nickname")]
[System.Text.Json.Serialization.JsonPropertyName("nickname")]
public string? Nickname { get; set; }
/// <summary>
/// 获取或设置用户头像 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("head_image_url")]
[System.Text.Json.Serialization.JsonPropertyName("head_image_url")]
public string? HeadImageUrl { get; set; }
/// <summary>
/// 获取或设置背景图片媒体文件地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("background_picture_url")]
[System.Text.Json.Serialization.JsonPropertyName("background_picture_url")]
public string? BackgroundPictureMediaUrl { get; set; }
/// <summary>
/// 获取或设置会员卡状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("user_card_status")]
[System.Text.Json.Serialization.JsonPropertyName("user_card_status")]
public string? Status { get; set; }
/// <summary>
/// 获取或设置用户储值余额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("balance")]
[System.Text.Json.Serialization.JsonPropertyName("balance")]
public int? BalanceValue { get; set; }
/// <summary>
/// 获取或设置用户当前积分。
/// </summary>
[Newtonsoft.Json.JsonProperty("bonus_value")]
[System.Text.Json.Serialization.JsonPropertyName("bonus_value")]
public int? BonusValue { get; set; }
/// <summary>
/// 获取或设置用户开卡时填写的个人信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("user_information")]
[System.Text.Json.Serialization.JsonPropertyName("user_information")]
public Types.UserInformation? UserInformation { get; set; }
/// <summary>
/// 获取或设置会员服务项列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("service_modules")]
[System.Text.Json.Serialization.JsonPropertyName("service_modules")]
public Types.ServiceModule[]? ServiceModuleList { get; set; }
/// <summary>
/// 获取或设置发票跳转文案。
/// </summary>
[Newtonsoft.Json.JsonProperty("fapiao_jump_word")]
[System.Text.Json.Serialization.JsonPropertyName("fapiao_jump_word")]
public string? InvoiceJumpWords { get; set; }
/// <summary>
/// 获取或设置客服信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("guide")]
[System.Text.Json.Serialization.JsonPropertyName("guide")]
public Types.Guide? Guide { get; set; }
public override bool IsSuccessful()
{
return this.RawStatus == 200;
}
}
}

View File

@@ -0,0 +1,37 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /marketing/membercard-open/cards/{card_id}/phone-membercard/import 接口的请求。</para>
/// </summary>
public class ImportMarketingMemberCardOpenCardPhoneRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置会员卡 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string CardId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置用户手机号码(需使用平台公钥/证书加密)。
/// </summary>
[Newtonsoft.Json.JsonProperty("encrypted_phone_number")]
[System.Text.Json.Serialization.JsonPropertyName("encrypted_phone_number")]
[WechatTenpaySensitiveProperty(algorithm: Constants.EncryptionAlgorithms.RSA_2048_PKCS8_ECB)]
public string EncryptedPhoneNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置会员卡 Code。
/// </summary>
[Newtonsoft.Json.JsonProperty("code")]
[System.Text.Json.Serialization.JsonPropertyName("code")]
public string? Code { get; set; }
/// <summary>
/// 获取或设置商户请求单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_request_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_request_no")]
public string OutRequestNumber { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,13 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /marketing/membercard-open/cards/{card_id}/phone-membercard/import 接口的响应。</para>
/// </summary>
public class ImportMarketingMemberCardOpenCardPhoneResponse : WechatTenpayResponse
{
public override bool IsSuccessful()
{
return RawStatus == 200;
}
}
}

View File

@@ -0,0 +1,36 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /marketing/membercard-open/cards/{card_id}/users/import 接口的请求。</para>
/// </summary>
public class ImportMarketingMemberCardOpenCardUserRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置会员卡 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string CardId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置用户的 OpenId。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置会员卡 Code。
/// </summary>
[Newtonsoft.Json.JsonProperty("code")]
[System.Text.Json.Serialization.JsonPropertyName("code")]
public string? Code { get; set; }
/// <summary>
/// 获取或设置商户请求单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_request_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_request_no")]
public string OutRequestNumber { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,13 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /marketing/membercard-open/cards/{card_id}/users/import 接口的响应。</para>
/// </summary>
public class ImportMarketingMemberCardOpenCardUserResponse : WechatTenpayResponse
{
public override bool IsSuccessful()
{
return RawStatus == 200;
}
}
}

View File

@@ -0,0 +1,36 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /marketing/membercard-open/user/cards 接口的请求。</para>
/// </summary>
public class QueryMarketingMemberCardOpenUserCardsRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置公众号 AppId。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string? AppId { get; set; }
/// <summary>
/// 获取或设置用户 OpenId。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string OpenId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置分页大小。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public int? Limit { get; set; }
/// <summary>
/// 获取或设置分页开始位置。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public int? Offset { get; set; }
}
}

View File

@@ -0,0 +1,56 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /marketing/membercard-open/user/cards 接口的响应。</para>
/// </summary>
public class QueryMarketingMemberCardOpenUserCardsResponse : WechatTenpayResponse
{
public static class Types
{
public class UserCard
{
/// <summary>
/// 获取或设置会员卡 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("card_id")]
[System.Text.Json.Serialization.JsonPropertyName("card_id")]
public string CardId { get; set; } = default!;
/// <summary>
/// 获取或设置会员卡 Code。
/// </summary>
[Newtonsoft.Json.JsonProperty("code")]
[System.Text.Json.Serialization.JsonPropertyName("code")]
public string? Code { get; set; }
}
}
/// <summary>
/// 获取或设置用户会员卡列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("data")]
[System.Text.Json.Serialization.JsonPropertyName("data")]
public Types.UserCard[] UserCardList { get; set; } = default!;
/// <summary>
/// 获取或设置分页大小。
/// </summary>
[Newtonsoft.Json.JsonProperty("limit")]
[System.Text.Json.Serialization.JsonPropertyName("limit")]
public int Limit { get; set; }
/// <summary>
/// 获取或设置分页开始位置。
/// </summary>
[Newtonsoft.Json.JsonProperty("offset")]
[System.Text.Json.Serialization.JsonPropertyName("offset")]
public int Offset { get; set; }
/// <summary>
/// 获取或设置用户会员卡总数量。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_count")]
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
public int TotalCount { get; set; }
}
}

View File

@@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /marketing/membercard-open/cards/{card_id}/codes/{code}/unavailable 接口的请求。</para>
/// </summary>
public class SetMarketingMemberCardOpenCardCodeUnavailableRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置会员卡 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string CardId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置会员卡 Code。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string Code { get; set; } = string.Empty;
/// <summary>
/// 获取或设置失效原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("reason")]
[System.Text.Json.Serialization.JsonPropertyName("reason")]
public string? Reason { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /marketing/membercard-open/cards/{card_id}/codes/{code}/unavailable 接口的响应。</para>
/// </summary>
public class SetMarketingMemberCardOpenCardCodeUnavailableResponse : WechatTenpayResponse
{
}
}

View File

@@ -0,0 +1,105 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [PATCH] /marketing/membercard-open/cards/{card_id}/codes/{code} 接口的请求。</para>
/// </summary>
public class UpdateMarketingMemberCardOpenCardCodeRequest : WechatTenpayRequest
{
public static class Types
{
public class Balance
{
/// <summary>
/// 获取或设置更新前用户储值余额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("before_balance")]
[System.Text.Json.Serialization.JsonPropertyName("before_balance")]
public int BalanceValueBefore { get; set; }
/// <summary>
/// 获取或设置更新后用户储值余额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("balance")]
[System.Text.Json.Serialization.JsonPropertyName("balance")]
public int BalanceValue { get; set; }
/// <summary>
/// 获取或设置本次余额变动值。
/// </summary>
[Newtonsoft.Json.JsonProperty("add_balance")]
[System.Text.Json.Serialization.JsonPropertyName("add_balance")]
public int BalanceDiff { get; set; }
/// <summary>
/// 获取或设置备注信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("balance_remark")]
[System.Text.Json.Serialization.JsonPropertyName("balance_remark")]
public string? Remark { get; set; }
}
}
/// <summary>
/// 获取或设置会员卡 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string CardId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置会员卡 Code。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string Code { get; set; } = string.Empty;
/// <summary>
/// 获取或设置会员卡编号。
/// </summary>
[Newtonsoft.Json.JsonProperty("membership_number")]
[System.Text.Json.Serialization.JsonPropertyName("membership_number")]
public string? MembershipNumber { get; set; }
/// <summary>
/// 获取或设置用户等级。
/// </summary>
[Newtonsoft.Json.JsonProperty("level")]
[System.Text.Json.Serialization.JsonPropertyName("level")]
public string? Level { get; set; }
/// <summary>
/// 获取或设置背景图片媒体文件地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("background_picture_url")]
[System.Text.Json.Serialization.JsonPropertyName("background_picture_url")]
public string? BackgroundPictureMediaUrl { get; set; }
/// <summary>
/// 获取或设置商户请求单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_request_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_request_no")]
public string OutRequestNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置用户储值变更信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("balance_information")]
[System.Text.Json.Serialization.JsonPropertyName("balance_information")]
public Types.Balance? Balance { get; set; }
/// <summary>
/// 获取或设置是否发送储值变更通知。
/// </summary>
[Newtonsoft.Json.JsonProperty("need_inform_balance")]
[System.Text.Json.Serialization.JsonPropertyName("need_inform_balance")]
public bool? RequreInformBalance { get; set; }
/// <summary>
/// 获取或设置是否发送等级变更通知。
/// </summary>
[Newtonsoft.Json.JsonProperty("need_inform_level")]
[System.Text.Json.Serialization.JsonPropertyName("need_inform_level")]
public bool? RequreInformLevel { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [PATCH] /marketing/membercard-open/cards/{card_id}/codes/{code} 接口的响应。</para>
/// </summary>
public class UpdateMarketingMemberCardOpenCardCodeResponse : WechatTenpayResponse
{
}
}