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
{
}
}

View File

@ -0,0 +1,60 @@
{
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"code": "478515832665",
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"membership_number": "316510891298",
"level": "钻石会员",
"nickname": "周星星",
"head_image_url": "http://wx.qlogo.cn/xxx",
"background_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0",
"balance": 888,
"user_card_status": "EFFECTIVE",
"user_information": {
"common_field_list": [
{
"name": "USER_FORM_FLAG_MOBILE",
"value": "深圳"
}
],
"custom_field_list": [
{
"name": "喜欢的运动",
"value": "篮球",
"value_list": ["羽毛球,足球,乒乓球"]
}
]
},
"bonus_value": 600,
"service_modules": [
{
"service_module_id": "666",
"state_setting": {
"state_id": "CHECKED_IN",
"content_template_data": {
"field_list": [
{
"field_id": "hotel_name",
"field_value": "深圳市南山区滨海路700号"
}
],
"action_setting": {
"action_name": "一键开锁",
"jump_miniprogram": {
"appid": "wx37178d097a6851d8",
"path": "pages/index/index"
}
}
},
"message_template_setting": {
"message_template_id": "9bJgRNz9XG248XZ-a0nDKH3Vt_vaTp32fRP1LWvxjzI",
"field_list": [
{
"field_id": "keyword1",
"field_value": "深圳市南山区滨海路700号"
}
]
}
}
}
]
}

View File

@ -0,0 +1,5 @@
{
"encrypted_phone_number": "vvysDQeEaH3I+BdPQaKSE2j4mAFON3kzNexb/SYkHZNJAuCittaW4wpGj7U+h9A==",
"code": "478515832665",
"out_request_no": "100002322019090134234sfdf"
}

View File

@ -0,0 +1,5 @@
{
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
"code": "478515832665",
"out_request_no": "100002322019090134234sfdf"
}

View File

@ -0,0 +1,11 @@
{
"data": [
{
"card_id": "pbLatjvWOibDc5-TBnbUk1pD12o0",
"code": "478515832665"
}
],
"total_count": 20,
"offset": 1,
"limit": 20
}

View File

@ -0,0 +1,14 @@
{
"membership_number": "316510891298",
"background_picture_url": "https://wxpaylogo.qpic.cn/wxpaylogo/PiajxSqBRaEIPAeia7Imvtsn7sYGNcEj33YzVvJF88ECQ19LXId8ZL2Q/0",
"level": "钻石会员",
"out_request_no": "100002322019090134234sfdf",
"balance_information": {
"before_balance": 888,
"balance": 888,
"add_balance": 100,
"balance_remark": "购买一杯珍珠奶茶消耗30元"
},
"need_inform_balance": true,
"need_inform_level": true
}