mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2025-04-05 17:37:54 +08:00
feat(tenpayv3): 新增会员卡事件通知相关接口
This commit is contained in:
parent
b50c216fab
commit
6860c0d0f2
@ -0,0 +1,69 @@
|
||||
using System;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 MEMBERCARD.ACTIVATE_CARD 通知的数据。</para>
|
||||
/// <para>表示 MEMBERCARD.USERCARD_MANAGE 通知的数据。</para>
|
||||
/// </summary>
|
||||
public class MarketingMemberCardResource : WechatTenpayEvent.Types.IDecryptedResource
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置事件类型。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("event_type")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("event_type")]
|
||||
public string EventType { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置会员卡 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("card_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("card_id")]
|
||||
public string CardId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置会员卡 Code。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("code")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("code")]
|
||||
public string? Code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置用户唯一标识。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("openid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("openid")]
|
||||
public string OpenId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置用户统一标识。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("unionid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("unionid")]
|
||||
public string? UnionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置场景值。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("activate_scene")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("activate_scene")]
|
||||
public string? SceneString { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置自定义场景值。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("outer_str")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("outer_str")]
|
||||
public string? OuterString { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置事件时间。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("event_time")]
|
||||
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("event_time")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
|
||||
public DateTimeOffset EventTime { get; set; }
|
||||
}
|
||||
}
|
@ -281,5 +281,45 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
|
||||
return await client.SendRequestWithJsonAsync<Models.UpdateMarketingMemberCardOpenCardCodeResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Callback
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /marketing/membercard-open/callback 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/marketing/membercard_open/chapter6_1.shtml </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.UpdateMarketingMemberCardOpenCallbackResponse> ExecuteUpdateMarketingMemberCardOpenCallbackAsync(this WechatTenpayClient client, Models.UpdateMarketingMemberCardOpenCallbackRequest request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (client is null) throw new ArgumentNullException(nameof(client));
|
||||
if (request is null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
IFlurlRequest flurlReq = client
|
||||
.CreateRequest(request, HttpMethod.Post, "marketing", "membercard-open", "callback");
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.UpdateMarketingMemberCardOpenCallbackResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [GET] /marketing/membercard-open/callback 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/marketing/membercard_open/chapter6_2.shtml </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.GetMarketingMemberCardOpenCallbackResponse> ExecuteGetMarketingMemberCardOpenCallbackAsync(this WechatTenpayClient client, Models.GetMarketingMemberCardOpenCallbackRequest request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (client is null) throw new ArgumentNullException(nameof(client));
|
||||
if (request is null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
IFlurlRequest flurlReq = client
|
||||
.CreateRequest(request, HttpMethod.Get, "marketing", "membercard-open", "callback");
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.GetMarketingMemberCardOpenCallbackResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /marketing/membercard-open/callback 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class GetMarketingMemberCardOpenCallbackRequest : WechatTenpayRequest
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /marketing/membercard-open/callback 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class GetMarketingMemberCardOpenCallbackResponse : WechatTenpayResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置微信商户号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("mchid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("mchid")]
|
||||
public string MerchantId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置通知地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("notify_url")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("notify_url")]
|
||||
public string NotifyUrl { get; set; } = default!;
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /marketing/membercard-open/callback 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class UpdateMarketingMemberCardOpenCallbackRequest : WechatTenpayRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置通知地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("notify_url")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("notify_url")]
|
||||
public string NotifyUrl { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /marketing/membercard-open/callback 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class UpdateMarketingMemberCardOpenCallbackResponse : GetMarketingMemberCardOpenCallbackResponse
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
{
|
||||
"event_type": "MEMBER_CARD_ACTIVATE",
|
||||
"event_time": "2019-12-17T10:35:53+08:00",
|
||||
"openid": "obLatjnx9gnqzS4myYGmLZ7LgLBA",
|
||||
"unionid": "obLatjvNtj7wO79ewoQBVIUEArg0",
|
||||
"card_id": "paCkC00igoi8VmVpDvapnUhkN99w",
|
||||
"code": "289560490049",
|
||||
"outer_str": "sz_store_001"
|
||||
}
|
@ -0,0 +1 @@
|
||||
{}
|
@ -0,0 +1,4 @@
|
||||
{
|
||||
"notify_url": "https://shangjia.com",
|
||||
"mchid": "99999105"
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"notify_url": "https://shangjia.com"
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
{
|
||||
"notify_url": "https://shangjia.com",
|
||||
"mchid": "99999105"
|
||||
}
|
Loading…
Reference in New Issue
Block a user