mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2025-04-05 17:37:54 +08:00
feat(wxapi): 升级公共组件
This commit is contained in:
parent
54e7ac8266
commit
5a110785f8
@ -13,14 +13,14 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Sample.Controllers
|
||||
public class WechatNotifyController : ControllerBase
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
private readonly Services.HttpClients.IWechatApiHttpClientFactory _wechatApiHttpClientFactory;
|
||||
private readonly Services.HttpClients.IWechatApiClientFactory _wechatApiClientFactory;
|
||||
|
||||
public WechatNotifyController(
|
||||
ILoggerFactory loggerFactory,
|
||||
Services.HttpClients.IWechatApiHttpClientFactory wechatApiHttpClientFactory)
|
||||
Services.HttpClients.IWechatApiClientFactory wechatApiClientFactory)
|
||||
{
|
||||
_logger = loggerFactory.CreateLogger(GetType());
|
||||
_wechatApiHttpClientFactory = wechatApiHttpClientFactory;
|
||||
_wechatApiClientFactory = wechatApiClientFactory;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
@ -35,8 +35,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Sample.Controllers
|
||||
// 验证服务器推送
|
||||
// 文档:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
|
||||
|
||||
var client = _wechatApiHttpClientFactory.Create(appId);
|
||||
bool valid = client.VerifyEventSignatureForEcho(callbackTimestamp: timestamp, callbackNonce: nonce, callbackSignature: signature);
|
||||
var client = _wechatApiClientFactory.Create(appId);
|
||||
bool valid = client.VerifyEventSignatureForEcho(webhookTimestamp: timestamp, webhookNonce: nonce, webhookSignature: signature);
|
||||
if (!valid)
|
||||
{
|
||||
return Content("fail");
|
||||
@ -57,7 +57,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Sample.Controllers
|
||||
string content = await reader.ReadToEndAsync();
|
||||
_logger.LogInformation("接收到微信推送的数据:{0}", content);
|
||||
|
||||
var client = _wechatApiHttpClientFactory.Create(appId);
|
||||
var client = _wechatApiClientFactory.Create(appId);
|
||||
var msgType = client.DeserializeEventFromXml(content).MessageType?.ToUpper();
|
||||
switch (msgType)
|
||||
{
|
||||
|
@ -1,4 +1,4 @@
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Logging;
|
||||
@ -14,16 +14,16 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Sample.Controllers
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
private readonly Services.Repositories.IWechatAccessTokenEntityRepository _wechatAccessTokenEntityRepository;
|
||||
private readonly Services.HttpClients.IWechatApiHttpClientFactory _wechatApiHttpClientFactory;
|
||||
private readonly Services.HttpClients.IWechatApiClientFactory _wechatApiClientFactory;
|
||||
|
||||
public WechatUserController(
|
||||
ILoggerFactory loggerFactory,
|
||||
Services.Repositories.IWechatAccessTokenEntityRepository wechatAccessTokenEntityRepository,
|
||||
Services.HttpClients.IWechatApiHttpClientFactory wechatApiHttpClientFactory)
|
||||
Services.HttpClients.IWechatApiClientFactory wechatApiClientFactory)
|
||||
{
|
||||
_logger = loggerFactory.CreateLogger(GetType());
|
||||
_wechatAccessTokenEntityRepository = wechatAccessTokenEntityRepository;
|
||||
_wechatApiHttpClientFactory = wechatApiHttpClientFactory;
|
||||
_wechatApiClientFactory = wechatApiClientFactory;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
@ -33,14 +33,14 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Sample.Controllers
|
||||
[FromQuery(Name = "open_id")] string openId)
|
||||
{
|
||||
var entity = _wechatAccessTokenEntityRepository.FirstOrDefault(e => e.AppId == appId);
|
||||
var client = _wechatApiHttpClientFactory.Create(appId);
|
||||
var client = _wechatApiClientFactory.Create(appId);
|
||||
var request = new CgibinUserInfoRequest() { AccessToken = entity?.AccessToken, OpenId = openId };
|
||||
var response = await client.ExecuteCgibinUserInfoAsync(request, cancellationToken: HttpContext.RequestAborted);
|
||||
if (!response.IsSuccessful())
|
||||
{
|
||||
_logger.LogWarning(
|
||||
"获取用户基本信息失败(状态码:{0},错误代码:{1},错误描述:{2})。",
|
||||
response.RawStatus, response.ErrorCode, response.ErrorMessage
|
||||
response.GetRawStatus(), response.ErrorCode, response.ErrorMessage
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
@ -17,20 +17,20 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Sample.Services.BackgroundServices
|
||||
private readonly ILogger _logger;
|
||||
private readonly Options.WechatOptions _wechatOptions;
|
||||
private readonly DistributedLock.IDistributedLockFactory _distributedLockFactory;
|
||||
private readonly HttpClients.IWechatApiHttpClientFactory _wechatApiHttpClientFactory;
|
||||
private readonly HttpClients.IWechatApiClientFactory _wechatApiClientFactory;
|
||||
private readonly Repositories.IWechatAccessTokenEntityRepository _wechatAccessTokenEntityRepository;
|
||||
|
||||
public WechatAccessTokenRefreshingBackgroundService(
|
||||
ILoggerFactory loggerFactory,
|
||||
IOptions<Options.WechatOptions> wechatOptions,
|
||||
DistributedLock.IDistributedLockFactory distributedLockFactory,
|
||||
HttpClients.IWechatApiHttpClientFactory wechatApiHttpClientFactory,
|
||||
HttpClients.IWechatApiClientFactory wechatApiClientFactory,
|
||||
Repositories.IWechatAccessTokenEntityRepository wechatAccessTokenEntityRepository)
|
||||
{
|
||||
_logger = loggerFactory.CreateLogger(GetType());
|
||||
_wechatOptions = wechatOptions.Value;
|
||||
_distributedLockFactory = distributedLockFactory;
|
||||
_wechatApiHttpClientFactory = wechatApiHttpClientFactory;
|
||||
_wechatApiClientFactory = wechatApiClientFactory;
|
||||
_wechatAccessTokenEntityRepository = wechatAccessTokenEntityRepository;
|
||||
}
|
||||
|
||||
@ -64,14 +64,14 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Sample.Services.BackgroundServices
|
||||
if (lockHandler == null)
|
||||
return; // 未取得锁
|
||||
|
||||
var client = _wechatApiHttpClientFactory.Create(appId);
|
||||
var client = _wechatApiClientFactory.Create(appId);
|
||||
var request = new CgibinTokenRequest();
|
||||
var response = await client.ExecuteCgibinTokenAsync(request, cancellationToken);
|
||||
if (!response.IsSuccessful())
|
||||
{
|
||||
_logger.LogWarning(
|
||||
"刷新 AppId 为 {0} 微信 AccessToken 失败(状态码:{1},错误代码:{2},错误描述:{3})。",
|
||||
appId, response.RawStatus, response.ErrorCode, response.ErrorMessage
|
||||
appId, response.GetRawStatus(), response.ErrorCode, response.ErrorMessage
|
||||
);
|
||||
return; // 请求失败
|
||||
}
|
||||
|
@ -0,0 +1,7 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Sample.Services.HttpClients
|
||||
{
|
||||
public interface IWechatApiClientFactory
|
||||
{
|
||||
WechatApiClient Create(string appId);
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Sample.Services.HttpClients
|
||||
{
|
||||
public interface IWechatApiHttpClientFactory
|
||||
{
|
||||
WechatApiClient Create(string appId);
|
||||
}
|
||||
}
|
@ -1,20 +1,16 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Sample.Services.HttpClients.Implements
|
||||
{
|
||||
internal partial class WechatApiHttpClientFactory : IWechatApiHttpClientFactory
|
||||
internal partial class WechatApiClientFactory : IWechatApiClientFactory
|
||||
{
|
||||
private readonly IHttpClientFactory _httpClientFactory;
|
||||
private readonly Options.WechatOptions _wechatOptions;
|
||||
|
||||
public WechatApiHttpClientFactory(
|
||||
IHttpClientFactory httpClientFactory,
|
||||
public WechatApiClientFactory(
|
||||
IOptions<Options.WechatOptions> wechatOptions)
|
||||
{
|
||||
_httpClientFactory = httpClientFactory;
|
||||
_wechatOptions = wechatOptions.Value;
|
||||
}
|
||||
|
||||
@ -36,26 +32,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Sample.Services.HttpClients.Implements
|
||||
PushToken = _wechatOptions.CallbackToken
|
||||
};
|
||||
var wechatApiClient = new WechatApiClient(wechatApiClientOptions);
|
||||
wechatApiClient.Configure((settings) => settings.FlurlHttpClientFactory = new DelegatingFlurlClientFactory(_httpClientFactory));
|
||||
return wechatApiClient;
|
||||
}
|
||||
}
|
||||
|
||||
internal partial class WechatApiHttpClientFactory
|
||||
{
|
||||
internal class DelegatingFlurlClientFactory : Flurl.Http.Configuration.DefaultHttpClientFactory
|
||||
{
|
||||
private readonly IHttpClientFactory _httpClientFactory;
|
||||
|
||||
public DelegatingFlurlClientFactory(IHttpClientFactory httpClientFactory)
|
||||
{
|
||||
_httpClientFactory = httpClientFactory ?? throw new ArgumentNullException(nameof(httpClientFactory));
|
||||
}
|
||||
|
||||
public override HttpClient CreateHttpClient(HttpMessageHandler handler)
|
||||
{
|
||||
return _httpClientFactory.CreateClient();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -29,7 +29,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Sample
|
||||
|
||||
// 注入工厂 HTTP 客户端
|
||||
services.AddHttpClient();
|
||||
services.AddSingleton<Services.HttpClients.IWechatApiHttpClientFactory, Services.HttpClients.Implements.WechatApiHttpClientFactory>();
|
||||
services.AddSingleton<Services.HttpClients.IWechatApiClientFactory, Services.HttpClients.Implements.WechatApiClientFactory>();
|
||||
|
||||
// 注入后台任务
|
||||
services.AddHostedService<Services.BackgroundServices.WechatAccessTokenRefreshingBackgroundService>();
|
||||
|
@ -1,45 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Newtonsoft.Json.Converters
|
||||
{
|
||||
internal class TextualStringArrayWithPipeSplitConverter : JsonConverter<string[]?>
|
||||
{
|
||||
public override bool CanRead
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
public override bool CanWrite
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
public override string[]? ReadJson(JsonReader reader, Type objectType, string[]? existingValue, bool hasExistingValue, JsonSerializer serializer)
|
||||
{
|
||||
if (reader.TokenType == JsonToken.Null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else if (reader.TokenType == JsonToken.String)
|
||||
{
|
||||
string? value = serializer.Deserialize<string>(reader);
|
||||
if (value == null)
|
||||
return null;
|
||||
if (string.IsNullOrEmpty(value))
|
||||
return Array.Empty<string>();
|
||||
|
||||
return value.Split('|');
|
||||
}
|
||||
|
||||
throw new JsonSerializationException();
|
||||
}
|
||||
|
||||
public override void WriteJson(JsonWriter writer, string[]? value, JsonSerializer serializer)
|
||||
{
|
||||
if (value != null)
|
||||
writer.WriteValue(string.Join("|", value));
|
||||
else
|
||||
writer.WriteNull();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Newtonsoft.Json.Converters
|
||||
{
|
||||
internal class TextualStringArrayWithSemicolonSplitConverter : JsonConverter<string[]?>
|
||||
{
|
||||
public override bool CanRead
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
public override bool CanWrite
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
public override string[]? ReadJson(JsonReader reader, Type objectType, string[]? existingValue, bool hasExistingValue, JsonSerializer serializer)
|
||||
{
|
||||
if (reader.TokenType == JsonToken.Null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else if (reader.TokenType == JsonToken.String)
|
||||
{
|
||||
string? value = serializer.Deserialize<string>(reader);
|
||||
if (value == null)
|
||||
return null;
|
||||
if (string.IsNullOrEmpty(value))
|
||||
return Array.Empty<string>();
|
||||
|
||||
return value.Split(';');
|
||||
}
|
||||
|
||||
throw new JsonSerializationException();
|
||||
}
|
||||
|
||||
public override void WriteJson(JsonWriter writer, string[]? value, JsonSerializer serializer)
|
||||
{
|
||||
if (value != null)
|
||||
writer.WriteValue(string.Join(";", value));
|
||||
else
|
||||
writer.WriteNull();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Newtonsoft.Json.Converters
|
||||
{
|
||||
internal class TextualStringListWithPipeSplitConverter : JsonConverter
|
||||
{
|
||||
private readonly JsonConverter<string[]?> _converter = new TextualStringArrayWithPipeSplitConverter();
|
||||
|
||||
public override bool CanConvert(Type objectType)
|
||||
{
|
||||
return objectType.IsGenericType &&
|
||||
typeof(IList<>).IsAssignableFrom(objectType.GetGenericTypeDefinition()) &&
|
||||
typeof(string) == objectType.GetGenericArguments()[0];
|
||||
}
|
||||
|
||||
public override bool CanRead
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
public override bool CanWrite
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
|
||||
{
|
||||
string[]? array = _converter.ReadJson(reader, objectType, null, false, serializer);
|
||||
return array?.ToList();
|
||||
}
|
||||
|
||||
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
|
||||
{
|
||||
_converter.WriteJson(writer, ((IList<string>?)value)?.ToArray(), serializer);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Newtonsoft.Json.Converters
|
||||
{
|
||||
internal class TextualStringListWithSemicolonSplitConverter : JsonConverter
|
||||
{
|
||||
private readonly JsonConverter<string[]?> _converter = new TextualStringArrayWithSemicolonSplitConverter();
|
||||
|
||||
public override bool CanConvert(Type objectType)
|
||||
{
|
||||
return objectType.IsGenericType &&
|
||||
typeof(IList<>).IsAssignableFrom(objectType.GetGenericTypeDefinition()) &&
|
||||
typeof(string) == objectType.GetGenericArguments()[0];
|
||||
}
|
||||
|
||||
public override bool CanRead
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
public override bool CanWrite
|
||||
{
|
||||
get { return true; }
|
||||
}
|
||||
|
||||
public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
|
||||
{
|
||||
string[]? array = _converter.ReadJson(reader, objectType, null, false, serializer);
|
||||
return array?.ToList();
|
||||
}
|
||||
|
||||
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
|
||||
{
|
||||
_converter.WriteJson(writer, ((IList<string>?)value)?.ToArray(), serializer);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,74 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace System.Text.Json.Converters
|
||||
{
|
||||
internal class TextualIntegerArrayConverter : JsonConverter<int[]?>
|
||||
{
|
||||
public override int[]? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.Null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else if (reader.TokenType == JsonTokenType.StartArray)
|
||||
{
|
||||
IList<int> list = new List<int>();
|
||||
|
||||
while (reader.Read())
|
||||
{
|
||||
switch (reader.TokenType)
|
||||
{
|
||||
case JsonTokenType.Number:
|
||||
{
|
||||
int value = reader.GetInt32();
|
||||
list.Add(value);
|
||||
}
|
||||
break;
|
||||
|
||||
case JsonTokenType.String:
|
||||
{
|
||||
string? value = reader.GetString();
|
||||
if (!int.TryParse(value, out int l))
|
||||
throw new JsonException($"Could not parse String '{value}' to Integer.");
|
||||
|
||||
list.Add(l);
|
||||
}
|
||||
break;
|
||||
|
||||
case JsonTokenType.EndArray:
|
||||
return list.ToArray();
|
||||
|
||||
case JsonTokenType.Comment:
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new JsonException($"Unexpected JSON token type '{reader.TokenType}' when reading.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
throw new JsonException($"Unexpected JSON token type '{reader.TokenType}' when reading.");
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, int[]? value, JsonSerializerOptions options)
|
||||
{
|
||||
if (value != null)
|
||||
{
|
||||
writer.WriteStartArray();
|
||||
|
||||
foreach (int i in value)
|
||||
{
|
||||
writer.WriteStringValue(i.ToString());
|
||||
}
|
||||
|
||||
writer.WriteEndArray();
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WriteNullValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,74 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace System.Text.Json.Converters
|
||||
{
|
||||
internal class TextualLongArrayConverter : JsonConverter<long[]?>
|
||||
{
|
||||
public override long[]? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.Null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else if (reader.TokenType == JsonTokenType.StartArray)
|
||||
{
|
||||
IList<long> list = new List<long>();
|
||||
|
||||
while (reader.Read())
|
||||
{
|
||||
switch (reader.TokenType)
|
||||
{
|
||||
case JsonTokenType.Number:
|
||||
{
|
||||
long value = reader.GetInt64();
|
||||
list.Add(value);
|
||||
}
|
||||
break;
|
||||
|
||||
case JsonTokenType.String:
|
||||
{
|
||||
string? value = reader.GetString();
|
||||
if (!long.TryParse(value, out long l))
|
||||
throw new JsonException($"Could not parse String '{value}' to Long.");
|
||||
|
||||
list.Add(l);
|
||||
}
|
||||
break;
|
||||
|
||||
case JsonTokenType.EndArray:
|
||||
return list.ToArray();
|
||||
|
||||
case JsonTokenType.Comment:
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new JsonException($"Unexpected JSON token type '{reader.TokenType}' when reading.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
throw new JsonException($"Unexpected JSON token type '{reader.TokenType}' when reading.");
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, long[]? value, JsonSerializerOptions options)
|
||||
{
|
||||
if (value != null)
|
||||
{
|
||||
writer.WriteStartArray();
|
||||
|
||||
foreach (long l in value)
|
||||
{
|
||||
writer.WriteStringValue(l.ToString());
|
||||
}
|
||||
|
||||
writer.WriteEndArray();
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WriteNullValue();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace System.Text.Json.Converters
|
||||
{
|
||||
internal class TextualStringArrayWithPipeSplitConverter : JsonConverter<string[]?>
|
||||
{
|
||||
public override string[]? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.Null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else if (reader.TokenType == JsonTokenType.String)
|
||||
{
|
||||
string? value = reader.GetString();
|
||||
if (value == null)
|
||||
return null;
|
||||
if (string.IsNullOrEmpty(value))
|
||||
return Array.Empty<string>();
|
||||
|
||||
return value.Split('|');
|
||||
}
|
||||
|
||||
throw new JsonException();
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, string[]? value, JsonSerializerOptions options)
|
||||
{
|
||||
if (value != null)
|
||||
writer.WriteStringValue(string.Join("|", value));
|
||||
else
|
||||
writer.WriteNullValue();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace System.Text.Json.Converters
|
||||
{
|
||||
internal class TextualStringArrayWithSemicolonSplitConverter : JsonConverter<string[]?>
|
||||
{
|
||||
public override string[]? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.TokenType == JsonTokenType.Null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else if (reader.TokenType == JsonTokenType.String)
|
||||
{
|
||||
string? value = reader.GetString();
|
||||
if (value == null)
|
||||
return null;
|
||||
if (string.IsNullOrEmpty(value))
|
||||
return Array.Empty<string>();
|
||||
|
||||
return value.Split(';');
|
||||
}
|
||||
|
||||
throw new JsonException();
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, string[]? value, JsonSerializerOptions options)
|
||||
{
|
||||
if (value != null)
|
||||
writer.WriteStringValue(string.Join(";", value));
|
||||
else
|
||||
writer.WriteNullValue();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace System.Text.Json.Converters
|
||||
{
|
||||
internal class TextualStringListWithPipeSplitConverter : JsonConverterFactory
|
||||
{
|
||||
private sealed class InnerTextualStringListWithPipeSplitConverter : JsonConverter<IList<string>?>
|
||||
{
|
||||
private readonly JsonConverter<string[]?> _converter = new TextualStringArrayWithPipeSplitConverter();
|
||||
|
||||
public override IList<string>? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
string[]? array = _converter.Read(ref reader, typeToConvert, options);
|
||||
IList<string>? list = array?.ToList();
|
||||
return list;
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, IList<string>? value, JsonSerializerOptions options)
|
||||
{
|
||||
_converter.Write(writer, value?.ToArray(), options);
|
||||
}
|
||||
}
|
||||
|
||||
public override bool CanConvert(Type typeToConvert)
|
||||
{
|
||||
return typeToConvert.IsGenericType &&
|
||||
typeof(IList<>).IsAssignableFrom(typeToConvert.GetGenericTypeDefinition()) &&
|
||||
typeof(string) == typeToConvert.GetGenericArguments()[0];
|
||||
}
|
||||
|
||||
public override JsonConverter? CreateConverter(Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
return new InnerTextualStringListWithPipeSplitConverter();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace System.Text.Json.Converters
|
||||
{
|
||||
internal class TextualStringListWithSemicolonSplitConverter : JsonConverterFactory
|
||||
{
|
||||
private sealed class InnerTextualStringListWithSemicolonSplitConverter : JsonConverter<IList<string>?>
|
||||
{
|
||||
private readonly JsonConverter<string[]?> _converter = new TextualStringArrayWithSemicolonSplitConverter();
|
||||
|
||||
public override IList<string>? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
string[]? array = _converter.Read(ref reader, typeToConvert, options);
|
||||
IList<string>? list = array?.ToList();
|
||||
return list;
|
||||
}
|
||||
|
||||
public override void Write(Utf8JsonWriter writer, IList<string>? value, JsonSerializerOptions options)
|
||||
{
|
||||
_converter.Write(writer, value?.ToArray(), options);
|
||||
}
|
||||
}
|
||||
|
||||
public override bool CanConvert(Type typeToConvert)
|
||||
{
|
||||
return typeToConvert.IsGenericType &&
|
||||
typeof(IList<>).IsAssignableFrom(typeToConvert.GetGenericTypeDefinition()) &&
|
||||
typeof(string) == typeToConvert.GetGenericArguments()[0];
|
||||
}
|
||||
|
||||
public override JsonConverter? CreateConverter(Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
return new InnerTextualStringListWithSemicolonSplitConverter();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,10 +1,10 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 EVENT.card_merchant_check_result 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Third-party_developer_mode.html#2 </para>
|
||||
/// </summary>
|
||||
public class CardMerchantCheckResultEvent : CardPassCheckEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class CardMerchantCheckResultEvent : CardPassCheckEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置子商户 ID。
|
||||
@ -19,7 +19,7 @@
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("IsPass")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("IsPass")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
|
||||
[System.Xml.Serialization.XmlElement("IsPass")]
|
||||
public bool IsPassed { get; set; }
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.card_not_pass_check 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Coupons_Vouchers_and_Cards_Event_Push_Messages.html#1 </para>
|
||||
/// </summary>
|
||||
public class CardNotPassCheckEvent : CardPassCheckEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class CardNotPassCheckEvent : CardPassCheckEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置审核不通过原因。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.card_pass_check 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Coupons_Vouchers_and_Cards_Event_Push_Messages.html#1 </para>
|
||||
/// </summary>
|
||||
public class CardPassCheckEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class CardPassCheckEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置卡券模板编号。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.card_sku_remind 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Coupons_Vouchers_and_Cards_Event_Push_Messages.html#10 </para>
|
||||
/// </summary>
|
||||
public class CardSKURemindEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class CardSKURemindEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置卡券模板编号。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.giftcard_pay_done 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/gift_card.html#_10-1%E3%80%81%E7%94%A8%E6%88%B7%E8%B4%AD%E4%B9%B0%E7%A4%BC%E5%93%81%E5%8D%A1%E4%BB%98%E6%AC%BE%E6%88%90%E5%8A%9FCallBack </para>
|
||||
/// </summary>
|
||||
public class GiftCardPayDoneEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class GiftCardPayDoneEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置货架 ID。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.giftcard_send_to_friend 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/gift_card.html#_10-2%E3%80%81%E7%94%A8%E6%88%B7%E8%B4%AD%E4%B9%B0%E5%90%8E%E8%B5%A0%E9%80%81CallBack </para>
|
||||
/// </summary>
|
||||
public class GiftCardSendToFriendEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class GiftCardSendToFriendEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置货架 ID。
|
||||
@ -27,7 +27,7 @@
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("IsReturnBack")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("IsReturnBack")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
|
||||
[System.Xml.Serialization.XmlElement("IsReturnBack")]
|
||||
public bool IsReturnBack { get; set; }
|
||||
|
||||
@ -36,7 +36,7 @@
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("IsChatRoom")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("IsChatRoom")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
|
||||
[System.Xml.Serialization.XmlElement("IsChatRoom")]
|
||||
public bool IsFromChatroom { get; set; }
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.giftcard_user_accept 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/gift_card.html#_10-3%E3%80%81%E7%94%A8%E6%88%B7%E9%A2%86%E5%8F%96%E7%A4%BC%E5%93%81%E5%8D%A1%E6%88%90%E5%8A%9FCallBack </para>
|
||||
/// </summary>
|
||||
public class GiftCardUserAcceptEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class GiftCardUserAcceptEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置货架 ID。
|
||||
@ -27,7 +27,7 @@
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("IsChatRoom")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("IsChatRoom")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
|
||||
[System.Xml.Serialization.XmlElement("IsChatRoom")]
|
||||
public bool IsFromChatroom { get; set; }
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.ORDER_STATUS_FINANCE_SUCC 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Coupons_Vouchers_and_Cards_Event_Push_Messages.html#11 </para>
|
||||
/// </summary>
|
||||
public class OrderStatusFinanceSuccessEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class OrderStatusFinanceSuccessEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置订单号。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.submit_membercard_user_info 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Coupons_Vouchers_and_Cards_Event_Push_Messages.html#12 </para>
|
||||
/// </summary>
|
||||
public class SubmitMemberCardUserInfoEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class SubmitMemberCardUserInfoEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置卡券模板编号。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.update_member_card 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Coupons_Vouchers_and_Cards_Event_Push_Messages.html#9 </para>
|
||||
/// </summary>
|
||||
public class UpdateMemberCardEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class UpdateMemberCardEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置卡券模板编号。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.user_consume_card 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Coupons_Vouchers_and_Cards_Event_Push_Messages.html#5 </para>
|
||||
/// </summary>
|
||||
public class UserConsumeCardEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class UserConsumeCardEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置卡券模板编号。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.user_del_card 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Coupons_Vouchers_and_Cards_Event_Push_Messages.html#4 </para>
|
||||
/// </summary>
|
||||
public class UserDeleteCardEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class UserDeleteCardEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置卡券模板编号。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.user_enter_session_from_card 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Coupons_Vouchers_and_Cards_Event_Push_Messages.html#8 </para>
|
||||
/// </summary>
|
||||
public class UserEnterSessionFromCardEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class UserEnterSessionFromCardEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置卡券模板编号。
|
||||
|
@ -1,4 +1,4 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 EVENT.user_get_card 事件的数据。</para>
|
||||
@ -7,7 +7,7 @@
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Membership_Cards/Create_a_membership_card.html#13 </para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/gift_card.html#_10-4%E3%80%81%E8%B5%A0%E9%80%8124%E5%B0%8F%E6%97%B6%E5%AF%B9%E6%96%B9%E6%9C%AA%E9%A2%86%E5%8F%96%E9%80%80%E5%9B%9E%E5%90%8E%E7%9A%84%E4%BA%8B%E4%BB%B6 </para>
|
||||
/// </summary>
|
||||
public class UserGetCardEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class UserGetCardEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置卡券模板编号。
|
||||
@ -46,7 +46,7 @@
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("IsGiveByFriend")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("IsGiveByFriend")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
|
||||
[System.Xml.Serialization.XmlElement("IsGiveByFriend")]
|
||||
public bool IsTransferedByFriend { get; set; }
|
||||
|
||||
@ -63,7 +63,7 @@
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("IsRestoreMemberCard")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("IsRestoreMemberCard")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalNullableBooleanConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
|
||||
[System.Xml.Serialization.XmlElement("IsRestoreMemberCard", IsNullable = true)]
|
||||
public bool? IsRestoreMemberCard { get; set; }
|
||||
|
||||
@ -72,7 +72,7 @@
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("IsRecommendByFriend")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("IsRecommendByFriend")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalNullableBooleanConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
|
||||
[System.Xml.Serialization.XmlElement("IsRecommendByFriend", IsNullable = true)]
|
||||
public bool? IsRecommendByFriend { get; set; }
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.user_gifting_card 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Coupons_Vouchers_and_Cards_Event_Push_Messages.html#3 </para>
|
||||
/// </summary>
|
||||
public class UserGiftingCardEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class UserGiftingCardEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置卡券模板编号。
|
||||
@ -35,7 +35,7 @@
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("IsReturnBack")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("IsReturnBack")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
|
||||
[System.Xml.Serialization.XmlElement("IsReturnBack")]
|
||||
public bool IsReturnBack { get; set; }
|
||||
|
||||
@ -44,7 +44,7 @@
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("IsChatRoom")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("IsChatRoom")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
|
||||
[System.Xml.Serialization.XmlElement("IsChatRoom")]
|
||||
public bool IsFromChatroom { get; set; }
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Create_a_Coupon_Voucher_or_Card.html#13 </para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Coupons_Vouchers_and_Cards_Event_Push_Messages.html#6 </para>
|
||||
/// </summary>
|
||||
public class UserPayFromPayCellEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class UserPayFromPayCellEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置卡券模板编号。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.user_view_card 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Coupons_Vouchers_and_Cards_Event_Push_Messages.html#7 </para>
|
||||
/// </summary>
|
||||
public class UserViewCardEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class UserViewCardEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置卡券模板编号。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.cloud_invoice_invoiceresult_event 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/WeChat_Invoice/E_Invoice/Vendor_API_List.html#19 </para>
|
||||
/// </summary>
|
||||
public class CloudInvoiceResultEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class CloudInvoiceResultEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置开票状态码。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.submit_invoice_title 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/WeChat_Invoice/Quick_issuing/Interface_Instructions.html </para>
|
||||
/// </summary>
|
||||
public class SubmitInvoiceTitleEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class SubmitInvoiceTitleEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置发票抬头类型。
|
||||
|
@ -5,7 +5,7 @@
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/WeChat_Invoice/E_Invoice/Invoicing_Platform_API_List.html#7 </para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/WeChat_Invoice/Nontax_Bill/API_list.html#3.6 </para>
|
||||
/// </summary>
|
||||
public class UpdateInvoiceStatusEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class UpdateInvoiceStatusEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置发票或非税票据卡券模板编号。
|
||||
|
@ -6,7 +6,7 @@
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/WeChat_Invoice/E_Invoice/Vendor_API_List.html#6 </para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/WeChat_Invoice/Nontax_Bill/API_list.html#2.3 </para>
|
||||
/// </summary>
|
||||
public class UserAuthorizeInvoiceEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class UserAuthorizeInvoiceEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置授权成功的订单号。
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_aftersale_update 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/aftersale/ec_callback/channels_ec_aftersale_update.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECAftersaleUpdateEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECAftersaleUpdateEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_brand 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/brand/callback/brand_event.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECBrandEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECBrandEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_complaint_update 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/complaint/callback/channels_ec_complaint_update.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECCompliantUpdateEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECCompliantUpdateEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_coupon_receive 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/aftersale/ec_callback/channels_ec_aftersale_update.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECCouponReceiveEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECCouponReceiveEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.head_supplier_item_update 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/leagueheadsupplier/callback/head_supplier_item_update.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECHeadSupplierItemUpdateEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECHeadSupplierItemUpdateEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_order_cancel 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/order/callback/channels_ec_order_cancel.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECOrderCancelEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECOrderCancelEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_order_confirm 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/order/callback/channels_ec_order_confirm.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECOrderConfirmEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECOrderConfirmEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_order_deliver 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/order/callback/channels_ec_order_deliver.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECOrderDeliverEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECOrderDeliverEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -23,9 +23,9 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// 获取或设置是否发货完成。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("finish_delivery")]
|
||||
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.NumericalBooleanConverter))]
|
||||
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.NumericalBooleanConverter))]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("finish_delivery")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
|
||||
public bool IsFinishDelivery { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_order_new 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/order/callback/channels_ec_order_new.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECOrderNewEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECOrderNewEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_order_pay 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/order/callback/channels_ec_order_pay.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECOrderPayEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECOrderPayEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_order_settle 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/order/callback/channels_ec_order_settle.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECOrderSettleEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECOrderSettleEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.product_category_audit 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/category/callback/ProductCategoryAudit.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductCategoryAuditEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECProductCategoryAuditEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.product_spu_audit 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/callback/ProductSpuAudit.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductSPUAuditEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECProductSPUAuditEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.product_spu_listing 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/product/callback/ProductSpuListing.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECProductSPUListingEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECProductSPUListingEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_vip_close 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/vip/callback/member/user_join_vip.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECVipCloseEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECVipCloseEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_vip_grade_info_update 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/vip/callback/member/usergrade_update.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECVipGradeInfoUpgradeEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECVipGradeInfoUpgradeEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_vip_join 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/vip/callback/member/user_join_vip.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECVipJoinEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECVipJoinEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_vip_score_exchange 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/vip/callback/score/user_score_exchange.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECVipScoreExchangeEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECVipScoreExchangeEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_vip_score_update 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/vip/callback/score/user_score_update.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECVipScoreUpdateEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECVipScoreUpdateEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.channels_ec_vip_task_award 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/vip/callback/member/user_finish_task.html </para>
|
||||
/// </summary>
|
||||
public class ChannelsECVipTaskAwardEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ChannelsECVipTaskAwardEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.ewaybill_push_path 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/channels/API/ewaybill/push_path.html </para>
|
||||
/// </summary>
|
||||
public class EWaybillPushPathEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class EWaybillPushPathEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -15,7 +15,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("ewaybill_order_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("ewaybill_order_id")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalStringReadOnlyConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalStringReadOnlyConverter))]
|
||||
[System.Xml.Serialization.XmlElement("ewaybill_order_id")]
|
||||
public string EWaybillOrderId { get; set; } = default!;
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.merchant_order 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/WeChat_Stores/WeChat_Store_Interface.html#8 </para>
|
||||
/// </summary>
|
||||
public class MerchantOrderEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class MerchantOrderEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置订单号。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.annual_renew 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Wechat_Accreditation_Event_Push.html#4 </para>
|
||||
/// </summary>
|
||||
public class AnnualRenewEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class AnnualRenewEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置过期时间戳。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.naming_verify_fail 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Wechat_Accreditation_Event_Push.html#3 </para>
|
||||
/// </summary>
|
||||
public class NamingVerifyFailEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class NamingVerifyFailEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置失败时间戳。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.naming_verify_success 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Wechat_Accreditation_Event_Push.html#2 </para>
|
||||
/// </summary>
|
||||
public class NamingVerifySuccessEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class NamingVerifySuccessEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置过期时间戳。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.qualification_verify_fail 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Wechat_Accreditation_Event_Push.html#1 </para>
|
||||
/// </summary>
|
||||
public class QualificationVerifyFailEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class QualificationVerifyFailEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置失败时间戳。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.qualification_verify_success 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Wechat_Accreditation_Event_Push.html#0 </para>
|
||||
/// </summary>
|
||||
public class QualificationVerifySuccessEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class QualificationVerifySuccessEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置过期时间戳。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.verify_expired 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Wechat_Accreditation_Event_Push.html#5 </para>
|
||||
/// </summary>
|
||||
public class VerifyExpiredEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class VerifyExpiredEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置过期时间戳。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.guide_qrcode_scan_event 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Shopping_Guide/guide-account/shopping-guide.onGuideCreateQrCode.html </para>
|
||||
/// </summary>
|
||||
public class GuideQrcodeScanEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class GuideQrcodeScanEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.FREEPUBLISHJOBFINISH 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Publish/Callback_on_finish.html </para>
|
||||
/// </summary>
|
||||
public class FreePublishJobFinishEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class FreePublishJobFinishEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -76,7 +76,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("article_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("article_id")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalStringReadOnlyConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalStringReadOnlyConverter))]
|
||||
[System.Xml.Serialization.XmlElement("article_id")]
|
||||
public string? ArticleId { get; set; }
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.MASSSENDJOBFINISH 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Batch_Sends_and_Originality_Checks.html#7 </para>
|
||||
/// </summary>
|
||||
public class MassSendJobFinishEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class MassSendJobFinishEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -59,7 +59,7 @@
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("CanReprint")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("CanReprint")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
|
||||
[System.Xml.Serialization.XmlElement("CanReprint")]
|
||||
public bool CanReprint { get; set; }
|
||||
|
||||
@ -68,7 +68,7 @@
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("NeedReplaceContent")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("NeedReplaceContent")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
|
||||
[System.Xml.Serialization.XmlElement("NeedReplaceContent")]
|
||||
public bool RequireReplaceContent { get; set; }
|
||||
|
||||
@ -77,7 +77,7 @@
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("NeedShowReprintSource")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("NeedShowReprintSource")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalBooleanConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalBooleanConverter))]
|
||||
[System.Xml.Serialization.XmlElement("NeedShowReprintSource")]
|
||||
public bool RequireShowReprintSource { get; set; }
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.TEMPLATESENDJOBFINISH 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html#%E4%BA%8B%E4%BB%B6%E6%8E%A8%E9%80%81 </para>
|
||||
/// </summary>
|
||||
public class TemplateSendJobFinishEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class TemplateSendJobFinishEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置消息 ID。
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 IMAGE 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages.html#%E5%9B%BE%E7%89%87%E6%B6%88%E6%81%AF </para>
|
||||
/// </summary>
|
||||
public class ImageMessageEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ImageMessageEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置消息 ID。
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 LINK 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages.html#%E9%93%BE%E6%8E%A5%E6%B6%88%E6%81%AF </para>
|
||||
/// </summary>
|
||||
public class LinkMessageEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class LinkMessageEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置消息 ID。
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 LOCATION 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages.html#%E5%9C%B0%E7%90%86%E4%BD%8D%E7%BD%AE%E6%B6%88%E6%81%AF </para>
|
||||
/// </summary>
|
||||
public class LocationMessageEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class LocationMessageEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置消息 ID。
|
||||
@ -20,7 +20,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
[Newtonsoft.Json.JsonProperty("Location_X")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Location_X")]
|
||||
[System.Xml.Serialization.XmlElement("Location_X")]
|
||||
public double Latitude { get; set; }
|
||||
public decimal Latitude { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置经度坐标。
|
||||
@ -28,7 +28,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
[Newtonsoft.Json.JsonProperty("Location_Y")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Location_Y")]
|
||||
[System.Xml.Serialization.XmlElement("Location_Y")]
|
||||
public double Longitude { get; set; }
|
||||
public decimal Longitude { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置地图缩放大小。
|
||||
@ -36,7 +36,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
[Newtonsoft.Json.JsonProperty("Scale")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Scale")]
|
||||
[System.Xml.Serialization.XmlElement("Scale")]
|
||||
public double Scale { get; set; }
|
||||
public decimal Scale { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置地理位置信息。
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 MINIPROGRAMPAGE 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/customer-message/receive.html </para>
|
||||
/// </summary>
|
||||
public class MiniProgramPageMessageEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class MiniProgramPageMessageEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置消息 ID。
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 SHORTVIDEO 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages.html#%E5%B0%8F%E8%A7%86%E9%A2%91%E6%B6%88%E6%81%AF </para>
|
||||
/// </summary>
|
||||
public class ShortVideoMessageEvent : VideoMessageEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ShortVideoMessageEvent : VideoMessageEvent
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 TEXT 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages.html#%E6%96%87%E6%9C%AC%E6%B6%88%E6%81%AF </para>
|
||||
/// </summary>
|
||||
public class TextMessageEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class TextMessageEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置消息 ID。
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 VIDEO 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages.html#%E8%A7%86%E9%A2%91%E6%B6%88%E6%81%AF </para>
|
||||
/// </summary>
|
||||
public class VideoMessageEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class VideoMessageEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置消息 ID。
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 VOICE 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages.html#%E8%AF%AD%E9%9F%B3%E6%B6%88%E6%81%AF </para>
|
||||
/// </summary>
|
||||
public class VoiceMessageEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class VoiceMessageEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置消息 ID。
|
||||
|
@ -5,7 +5,7 @@
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E8%8F%9C%E5%8D%95%E4%BA%8B%E4%BB%B6 </para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Custom_Menu_Push_Events.html#0 </para>
|
||||
/// </summary>
|
||||
public class ClickPushEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ClickPushEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置事件 Key,即自定义菜单接口中的 Key 值。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.LOCATION 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html#%E4%B8%8A%E6%8A%A5%E5%9C%B0%E7%90%86%E4%BD%8D%E7%BD%AE%E4%BA%8B%E4%BB%B6 </para>
|
||||
/// </summary>
|
||||
public class LocationPushEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class LocationPushEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置地理位置纬度。
|
||||
@ -12,7 +12,7 @@
|
||||
[Newtonsoft.Json.JsonProperty("Latitude")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Latitude")]
|
||||
[System.Xml.Serialization.XmlElement("Latitude")]
|
||||
public double Latitude { get; set; }
|
||||
public decimal Latitude { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置地理位置经度。
|
||||
@ -20,7 +20,7 @@
|
||||
[Newtonsoft.Json.JsonProperty("Longitude")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Longitude")]
|
||||
[System.Xml.Serialization.XmlElement("Longitude")]
|
||||
public double Longitude { get; set; }
|
||||
public decimal Longitude { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置地理位置精度。
|
||||
@ -28,6 +28,6 @@
|
||||
[Newtonsoft.Json.JsonProperty("Precision")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Precision")]
|
||||
[System.Xml.Serialization.XmlElement("Precision")]
|
||||
public double Precision { get; set; }
|
||||
public decimal Precision { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.scancode_push 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Custom_Menu_Push_Events.html#2 </para>
|
||||
/// </summary>
|
||||
public class ScanCodePushEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ScanCodePushEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.SCAN 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html#%E6%89%AB%E6%8F%8F%E5%B8%A6%E5%8F%82%E6%95%B0%E4%BA%8C%E7%BB%B4%E7%A0%81%E4%BA%8B%E4%BB%B6 </para>
|
||||
/// </summary>
|
||||
public class ScanPushEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ScanPushEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置事件 Key,即创建二维码时的 SceneId。
|
||||
|
@ -5,7 +5,7 @@
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html#%E5%85%B3%E6%B3%A8-%E5%8F%96%E6%B6%88%E5%85%B3%E6%B3%A8%E4%BA%8B%E4%BB%B6 </para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html#%E6%89%AB%E6%8F%8F%E5%B8%A6%E5%8F%82%E6%95%B0%E4%BA%8C%E7%BB%B4%E7%A0%81%E4%BA%8B%E4%BB%B6 </para>
|
||||
/// </summary>
|
||||
public class SubscribePushEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class SubscribePushEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置事件 Key,即创建二维码时的 SceneId。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.unsubscribe 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html#%E5%85%B3%E6%B3%A8-%E5%8F%96%E6%B6%88%E5%85%B3%E6%B3%A8%E4%BA%8B%E4%BB%B6 </para>
|
||||
/// </summary>
|
||||
public class UnsubscribePushEvent : SubscribePushEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class UnsubscribePushEvent : SubscribePushEvent
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.user_authorization_revoke 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/authorization_change.html </para>
|
||||
/// </summary>
|
||||
public class UserAuthorizationRevokeEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class UserAuthorizationRevokeEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置微信 AppId。
|
||||
@ -27,7 +27,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("RevokeInfo")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("RevokeInfo")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.NumericalStringReadOnlyConverter))]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalStringReadOnlyConverter))]
|
||||
[System.Xml.Serialization.XmlElement("RevokeInfo", IsNullable = true)]
|
||||
public string? RevokeInfo { get; set; }
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.user_enter_tempsession 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/customer-message/receive.html </para>
|
||||
/// </summary>
|
||||
public class UserEnterTempSessionEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class UserEnterTempSessionEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置会话来源。
|
||||
|
@ -4,7 +4,7 @@
|
||||
/// <para>表示 EVENT.view_miniprogram 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Custom_Menu_Push_Events.html#8 </para>
|
||||
/// </summary>
|
||||
public class ViewMiniProgramPushEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ViewMiniProgramPushEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置个性化菜单 ID。
|
||||
|
@ -5,7 +5,7 @@
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E8%8F%9C%E5%8D%95%E4%BA%8B%E4%BB%B6 </para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Custom_Menu_Push_Events.html#1 </para>
|
||||
/// </summary>
|
||||
public class ViewPushEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ViewPushEvent : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置个性化菜单 ID。
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示被动回复图片消息的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html#1 </para>
|
||||
/// </summary>
|
||||
public class ImageMessageReply : WechatApiEvent, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class ImageMessageReply : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -13,6 +13,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <summary>
|
||||
/// 获取或设置图片 MediaId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("MediaId")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("MediaId")]
|
||||
[System.Xml.Serialization.XmlElement("MediaId")]
|
||||
public string MediaId { get; set; } = default!;
|
||||
}
|
||||
@ -21,6 +23,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <summary>
|
||||
/// 获取或设置图片信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("Image")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Image")]
|
||||
[System.Xml.Serialization.XmlElement("Image")]
|
||||
public Types.Image Image { get; set; } = default!;
|
||||
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示被动回复音乐消息的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html#4 </para>
|
||||
/// </summary>
|
||||
public class MusicMessageReply : WechatApiEvent, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class MusicMessageReply : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -13,30 +13,40 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <summary>
|
||||
/// 获取或设置音乐链接。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("MusicUrl")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("MusicUrl")]
|
||||
[System.Xml.Serialization.XmlElement("MusicUrl")]
|
||||
public string MusicUrl { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置高质量音乐链接。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("HQMusicUrl")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("HQMusicUrl")]
|
||||
[System.Xml.Serialization.XmlElement("HQMusicUrl", IsNullable = true)]
|
||||
public string? HQMusicUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置音乐封面图片 MediaId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("ThumbMediaId")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("ThumbMediaId")]
|
||||
[System.Xml.Serialization.XmlElement("ThumbMediaId")]
|
||||
public string ThumbMediaId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置音乐标题。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("Title")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Title")]
|
||||
[System.Xml.Serialization.XmlElement("Title")]
|
||||
public string Title { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置音乐描述。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("Description")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Description")]
|
||||
[System.Xml.Serialization.XmlElement("Description")]
|
||||
public string Description { get; set; } = default!;
|
||||
}
|
||||
@ -45,6 +55,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <summary>
|
||||
/// 获取或设置音乐信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("Music")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Music")]
|
||||
[System.Xml.Serialization.XmlElement("Music")]
|
||||
public Types.Music Music { get; set; } = default!;
|
||||
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示被动回复图文消息的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html#5 </para>
|
||||
/// </summary>
|
||||
public class NewsMessageReply : WechatApiEvent, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class NewsMessageReply : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -13,24 +13,32 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <summary>
|
||||
/// 获取或设置图文链接。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("Url")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Url")]
|
||||
[System.Xml.Serialization.XmlElement("Url")]
|
||||
public string Url { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置图文封面图片链接。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("PicUrl")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("PicUrl")]
|
||||
[System.Xml.Serialization.XmlElement("PicUrl")]
|
||||
public string PictureUrl { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置图文标题。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("Title")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Title")]
|
||||
[System.Xml.Serialization.XmlElement("Title")]
|
||||
public string Title { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置图文描述。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("Description")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Description")]
|
||||
[System.Xml.Serialization.XmlElement("Description")]
|
||||
public string Description { get; set; } = default!;
|
||||
}
|
||||
@ -40,6 +48,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <summary>
|
||||
/// 获取或设置图文列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("item")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("item")]
|
||||
[System.Xml.Serialization.XmlElement("item", Type = typeof(ArticleItem))]
|
||||
public ArticleItem[] Items { get; set; } = default!;
|
||||
}
|
||||
@ -48,12 +58,16 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <summary>
|
||||
/// 获取或设置图文数量。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("ArticleCount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("ArticleCount")]
|
||||
[System.Xml.Serialization.XmlElement("ArticleCount")]
|
||||
public int ArticleCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置图文列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("Articles")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Articles")]
|
||||
[System.Xml.Serialization.XmlElement("Articles")]
|
||||
public Types.ArticleList ArticleList { get; set; } = default!;
|
||||
|
||||
|
@ -4,11 +4,13 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示被动回复文本消息的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html#0 </para>
|
||||
/// </summary>
|
||||
public class TextMessageReply : WechatApiEvent, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class TextMessageReply : WechatApiEvent
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置消息内容。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("Content")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Content")]
|
||||
[System.Xml.Serialization.XmlElement("Content")]
|
||||
public string Content { get; set; } = default!;
|
||||
|
||||
|
@ -5,7 +5,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Customer_Service/Forwarding_of_messages_to_service_center.html </para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/miniprogram/introduction/custom.html#%E5%B0%86%E6%B6%88%E6%81%AF%E8%BD%AC%E5%8F%91%E5%88%B0%E5%AE%A2%E6%9C%8D </para>
|
||||
/// </summary>
|
||||
public class TransferCustomerServiceReply : WechatApiEvent, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class TransferCustomerServiceReply : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -14,6 +14,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <summary>
|
||||
/// 获取或设置客服账号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("KfAccount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("KfAccount")]
|
||||
[System.Xml.Serialization.XmlElement("KfAccount")]
|
||||
public string KfAccount { get; set; } = default!;
|
||||
}
|
||||
@ -22,6 +24,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <summary>
|
||||
/// 获取或设置转发信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("TransInfo")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("TransInfo")]
|
||||
[System.Xml.Serialization.XmlElement("TransInfo")]
|
||||
public Types.Transfer? Transfer { get; set; }
|
||||
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示被动回复视频消息的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html#3 </para>
|
||||
/// </summary>
|
||||
public class VideoMessageReply : WechatApiEvent, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class VideoMessageReply : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -13,18 +13,24 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <summary>
|
||||
/// 获取或设置视频 MediaId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("MediaId")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("MediaId")]
|
||||
[System.Xml.Serialization.XmlElement("MediaId")]
|
||||
public string MediaId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置视频标题。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("Title")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Title")]
|
||||
[System.Xml.Serialization.XmlElement("Title")]
|
||||
public string Title { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置视频描述。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("Description")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Description")]
|
||||
[System.Xml.Serialization.XmlElement("Description")]
|
||||
public string Description { get; set; } = default!;
|
||||
}
|
||||
@ -33,6 +39,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <summary>
|
||||
/// 获取或设置视频信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("Video")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Video")]
|
||||
[System.Xml.Serialization.XmlElement("Video")]
|
||||
public Types.Video Video { get; set; } = default!;
|
||||
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示被动回复语音消息的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html#2 </para>
|
||||
/// </summary>
|
||||
public class VoiceMessageReply : WechatApiEvent, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class VoiceMessageReply : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -13,6 +13,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <summary>
|
||||
/// 获取或设置语音 MediaId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("MediaId")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("MediaId")]
|
||||
[System.Xml.Serialization.XmlElement("MediaId")]
|
||||
public string MediaId { get; set; } = default!;
|
||||
}
|
||||
@ -21,6 +23,8 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <summary>
|
||||
/// 获取或设置语音信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("Voice")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("Voice")]
|
||||
[System.Xml.Serialization.XmlElement("Voice")]
|
||||
public Types.Voice Voice { get; set; } = default!;
|
||||
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.subscribe_msg_change_event 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Subscription_Messages/api.html#%E4%BA%8B%E4%BB%B6%E6%8E%A8%E9%80%81 </para>
|
||||
/// </summary>
|
||||
public class SubscribeMessageChangeEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class SubscribeMessageChangeEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -64,11 +64,11 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
get { return this.EventData?.EventList; }
|
||||
set
|
||||
{
|
||||
if (this.EventData == null)
|
||||
if (this.EventData is null)
|
||||
{
|
||||
lock (_lockObj)
|
||||
{
|
||||
if (this.EventData == null)
|
||||
if (this.EventData is null)
|
||||
{
|
||||
this.EventData = new Types.EventData();
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.subscribe_msg_popup_event 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Subscription_Messages/api.html#%E4%BA%8B%E4%BB%B6%E6%8E%A8%E9%80%81 </para>
|
||||
/// </summary>
|
||||
public class SubscribeMessagePopupEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class SubscribeMessagePopupEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -72,11 +72,11 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
get { return this.EventData?.EventList; }
|
||||
set
|
||||
{
|
||||
if (this.EventData == null)
|
||||
if (this.EventData is null)
|
||||
{
|
||||
lock (_lockObj)
|
||||
{
|
||||
if (this.EventData == null)
|
||||
if (this.EventData is null)
|
||||
{
|
||||
this.EventData = new Types.EventData();
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
/// <para>表示 EVENT.subscribe_msg_sent_event 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/offiaccount/Subscription_Messages/api.html#%E4%BA%8B%E4%BB%B6%E6%8E%A8%E9%80%81 </para>
|
||||
/// </summary>
|
||||
public class SubscribeMessageSentEvent : WechatApiEvent, WechatApiEvent.Serialization.IJsonSerializable, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class SubscribeMessageSentEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -80,11 +80,11 @@ namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
get { return this.EventData?.EventList; }
|
||||
set
|
||||
{
|
||||
if (this.EventData == null)
|
||||
if (this.EventData is null)
|
||||
{
|
||||
lock (_lockObj)
|
||||
{
|
||||
if (this.EventData == null)
|
||||
if (this.EventData is null)
|
||||
{
|
||||
this.EventData = new Types.EventData();
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 EVENT.betaapp_authorization_apply_event 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/verify_beta_Mini_Programs/getmpadminauth.html </para>
|
||||
/// </summary>
|
||||
public class BetaAppAuthorizationApplyEvent : WechatApiEvent, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class BetaAppAuthorizationApplyEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -13,36 +13,48 @@
|
||||
/// <summary>
|
||||
/// 获取或设置小程序的 AppId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("appid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("appid")]
|
||||
[System.Xml.Serialization.XmlElement("appid")]
|
||||
public string MiniProgramAppId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置公众号的 AppId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("mp_appid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("mp_appid")]
|
||||
[System.Xml.Serialization.XmlElement("mp_appid")]
|
||||
public string MediaPlatformAppId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置操作时间字符串(格式:yyyy-MM-dd HH:mm)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("operation_time")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("operation_time")]
|
||||
[System.Xml.Serialization.XmlElement("operation_time")]
|
||||
public string OperateTimeString { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置错误码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("status")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("status")]
|
||||
[System.Xml.Serialization.XmlElement("status")]
|
||||
public int ErrorCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置错误信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("msg")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("msg")]
|
||||
[System.Xml.Serialization.XmlElement("msg", IsNullable = true)]
|
||||
public string? ErrorMessage { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置授权成功后生成的 Ticket。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("ticket")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("ticket")]
|
||||
[System.Xml.Serialization.XmlElement("ticket", IsNullable = true)]
|
||||
public string? Ticket { get; set; }
|
||||
}
|
||||
@ -51,6 +63,8 @@
|
||||
/// <summary>
|
||||
/// 获取或设置事件数据。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("ApplyAuthorizationInfoNoitfy")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("ApplyAuthorizationInfoNoitfy")]
|
||||
[System.Xml.Serialization.XmlElement("ApplyAuthorizationInfoNoitfy")]
|
||||
public Types.EventData EventData { get; set; } = default!;
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
namespace SKIT.FlurlHttpClient.Wechat.Api.Events
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 EVENT.betaapp_verify_apply_event 事件的数据。</para>
|
||||
/// <para>REF: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/verify_beta_Mini_Programs/mpverifybetaweapp.html </para>
|
||||
/// </summary>
|
||||
public class BetaAppVerifyApplyEvent : WechatApiEvent, WechatApiEvent.Serialization.IXmlSerializable
|
||||
public class BetaAppVerifyApplyEvent : WechatApiEvent
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
@ -13,30 +13,40 @@
|
||||
/// <summary>
|
||||
/// 获取或设置小程序的 AppId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("appid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("appid")]
|
||||
[System.Xml.Serialization.XmlElement("appid")]
|
||||
public string MiniProgramAppId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置公众号的 AppId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("mp_appid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("mp_appid")]
|
||||
[System.Xml.Serialization.XmlElement("mp_appid")]
|
||||
public string MediaPlatformAppId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置操作时间字符串(格式:yyyy-MM-dd HH:mm)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("operation_time")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("operation_time")]
|
||||
[System.Xml.Serialization.XmlElement("operation_time")]
|
||||
public string OperateTimeString { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置错误码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("status")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("status")]
|
||||
[System.Xml.Serialization.XmlElement("status")]
|
||||
public int ErrorCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置错误信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("msg")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("msg")]
|
||||
[System.Xml.Serialization.XmlElement("msg", IsNullable = true)]
|
||||
public string? ErrorMessage { get; set; }
|
||||
}
|
||||
@ -45,6 +55,8 @@
|
||||
/// <summary>
|
||||
/// 获取或设置事件数据。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("ApplyAuthorizationInfoNoitfy")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("ApplyAuthorizationInfoNoitfy")]
|
||||
[System.Xml.Serialization.XmlElement("ApplyAuthorizationInfoNoitfy")]
|
||||
public Types.EventData EventData { get; set; } = default!;
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user