From 31bdc399b167a6fd6f03a3d8c2a0d8d69eb0aaa7 Mon Sep 17 00:00:00 2001 From: fudiwei Date: Thu, 24 Nov 2022 13:00:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(tenpayv3):=20=E6=96=B0=E5=A2=9E=E5=BE=AE?= =?UTF-8?q?=E5=B7=A5=E5=8D=A1=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...enpayClientExecutePayrollCardExtensions.cs | 166 ++++++++++++++++++ ...atTenpayClientExecuteTransferExtensions.cs | 3 + .../GetDiscountCardByOutCardCodeResponse.cs | 2 +- .../AddDiscountCardUserRecordRequest.cs | 2 +- ...thenticationByAuthenticateNumberRequest.cs | 22 +++ ...henticationByAuthenticateNumberResponse.cs | 96 ++++++++++ ...ithAuthPayrollCardAuthenticationRequest.cs | 89 ++++++++++ ...thAuthPayrollCardAuthenticationResponse.cs | 50 ++++++ .../QueryPayrollCardAuthenticationsRequest.cs | 64 +++++++ ...QueryPayrollCardAuthenticationsResponse.cs | 130 ++++++++++++++ .../CreatePayrollCardTokenRequest.cs | 61 +++++++ .../CreatePayrollCardTokenResponse.cs | 43 +++++ .../GetPayrollRelationByOpenIdRequest.cs | 36 ++++ .../GetPayrollRelationByOpenIdResponse.cs | 95 ++++++++++ .../CreatePayrollCardTransferBatchRequest.cs | 101 +++++++++++ .../CreatePayrollCardTransferBatchResponse.cs | 9 + ...KIT.FlurlHttpClient.Wechat.TenpayV3.csproj | 2 +- ...hAuthPayrollCardAuthenticationRequest.json | 13 ++ ...AuthPayrollCardAuthenticationResponse.json | 8 + ...eryPayrollCardAuthenticationsResponse.json | 20 +++ .../CreatePayrollCardTokenRequest.json | 9 + .../CreatePayrollCardTokenResponse.json | 7 + .../GetPayrollRelationByOpenIdResponse.json | 11 ++ ...CreatePayrollCardTransferBatchRequest.json | 22 +++ ...reatePayrollCardTransferBatchResponse.json | 5 + 25 files changed, 1063 insertions(+), 3 deletions(-) create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayrollCardExtensions.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/GetPayrollCardAuthenticationByAuthenticateNumberRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/GetPayrollCardAuthenticationByAuthenticateNumberResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/QueryPayrollCardAuthenticationsRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/QueryPayrollCardAuthenticationsResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/CreatePayrollCardTokenRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/CreatePayrollCardTokenResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/GetPayrollRelationByOpenIdRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/GetPayrollRelationByOpenIdResponse.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchRequest.cs create mode 100644 src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchResponse.cs create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/Authentications/QueryPayrollCardAuthenticationsResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/CreatePayrollCardTokenRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/CreatePayrollCardTokenResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/GetPayrollRelationByOpenIdResponse.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchRequest.json create mode 100644 test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchResponse.json diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayrollCardExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayrollCardExtensions.cs new file mode 100644 index 00000000..e311d453 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayrollCardExtensions.cs @@ -0,0 +1,166 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 +{ + /// + /// 为 提供微工卡相关的 API 扩展方法。 + /// + public static class WechatTenpayClientExecutePayrollCardExtensions + { + /// + /// 异步调用 [POST] /payroll-card/tokens 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_1_1.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteCreatePayrollCardTokenAsync(this WechatTenpayClient client, Models.CreatePayrollCardTokenRequest 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, "payroll-card", "tokens"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /payroll-card/relations/{openid} 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_1_2.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteGetPayrollRelationByOpenIdAsync(this WechatTenpayClient client, Models.GetPayrollRelationByOpenIdRequest 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, "payroll-card", "relations", request.OpenId); + + if (request.SubMerchantId != null) + flurlReq.SetQueryParam("sub_mchid", request.SubMerchantId); + + if (request.AppId != null) + flurlReq.SetQueryParam("appid", request.AppId); + + if (request.SubAppId != null) + flurlReq.SetQueryParam("sub_appid", request.SubAppId); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + #region Authentications + /// + /// 异步调用 [POST] /payroll-card/authentications/pre-order-with-auth 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_1_29.shtml + /// + /// + /// + /// + /// + public static async Task ExecutePreOrderWithAuthPayrollCardAuthenticationAsync(this WechatTenpayClient client, Models.PreOrderWithAuthPayrollCardAuthenticationRequest 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, "payroll-card", "authentications", "pre-order-with-auth"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /payroll-card/authentications/{authenticate_number} 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_1_4.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteGetPayrollCardAuthenticationByAuthenticateNumberAsync(this WechatTenpayClient client, Models.GetPayrollCardAuthenticationByAuthenticateNumberRequest 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, "payroll-card", "authentications", request.AuthenticateNumber); + + if (request.SubMerchantId != null) + flurlReq.SetQueryParam("sub_mchid", request.SubMerchantId); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /payroll-card/authentications 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_1_5.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteQueryPayrollCardAuthenticationsAsync(this WechatTenpayClient client, Models.QueryPayrollCardAuthenticationsRequest 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, "payroll-card", "authentications") + .SetQueryParam("openid", request.OpenId); + + if (request.SubMerchantId != null) + flurlReq.SetQueryParam("sub_mchid", request.SubMerchantId); + + if (request.AppId != null) + flurlReq.SetQueryParam("appid", request.AppId); + + if (request.SubAppId != null) + flurlReq.SetQueryParam("sub_appid", request.SubAppId); + + if (request.AuthenticateDateString != null) + flurlReq.SetQueryParam("authenticate_date", request.AuthenticateDateString); + + if (request.AuthenticateState != null) + flurlReq.SetQueryParam("authenticate_state", request.AuthenticateState); + + if (request.Limit != null) + flurlReq.SetQueryParam("limit", request.Limit); + + if (request.Offset != null) + flurlReq.SetQueryParam("offset", request.Offset); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + + #region TransferBatches + /// + /// 异步调用 [POST] /payroll-card/transfer-batches 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/Offline/apis/chapter4_1_6.shtml + /// + /// + /// + /// + /// + public static async Task ExecuteCreatePayrollCardTransferBatchAsync(this WechatTenpayClient client, Models.CreatePayrollCardTransferBatchRequest 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, "payroll-card", "transfer-batches"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + #endregion + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteTransferExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteTransferExtensions.cs index cab2c92b..9b4eb778 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteTransferExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteTransferExtensions.cs @@ -217,5 +217,8 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } #endregion + + #region Transfer + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/DiscountCard/GetDiscountCardByOutCardCodeResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/DiscountCard/GetDiscountCardByOutCardCodeResponse.cs index 01921335..91dc1e93 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/DiscountCard/GetDiscountCardByOutCardCodeResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/DiscountCard/GetDiscountCardByOutCardCodeResponse.cs @@ -209,7 +209,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models public int UsageCount { get; set; } /// - /// 获取或设置优惠金额(单位:秒)。 + /// 获取或设置优惠金额(单位:元)。 /// [Newtonsoft.Json.JsonProperty("amount")] [System.Text.Json.Serialization.JsonPropertyName("amount")] diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/DiscountCard/UserRecords/AddDiscountCardUserRecordRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/DiscountCard/UserRecords/AddDiscountCardUserRecordRequest.cs index e8d97398..25e03c1d 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/DiscountCard/UserRecords/AddDiscountCardUserRecordRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/DiscountCard/UserRecords/AddDiscountCardUserRecordRequest.cs @@ -105,7 +105,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models public int UsageCount { get; set; } /// - /// 获取或设置优惠金额(单位:秒)。 + /// 获取或设置优惠金额(单位:元)。 /// [Newtonsoft.Json.JsonProperty("amount")] [System.Text.Json.Serialization.JsonPropertyName("amount")] diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/GetPayrollCardAuthenticationByAuthenticateNumberRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/GetPayrollCardAuthenticationByAuthenticateNumberRequest.cs new file mode 100644 index 00000000..e2957c94 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/GetPayrollCardAuthenticationByAuthenticateNumberRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /payroll-card/authentications/{authenticate_number} 接口的请求。 + /// + public class GetPayrollCardAuthenticationByAuthenticateNumberRequest : WechatTenpayRequest + { + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? SubMerchantId { get; set; } + + /// + /// 获取或设置商家核身单号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string AuthenticateNumber { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/GetPayrollCardAuthenticationByAuthenticateNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/GetPayrollCardAuthenticationByAuthenticateNumberResponse.cs new file mode 100644 index 00000000..9de64d45 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/GetPayrollCardAuthenticationByAuthenticateNumberResponse.cs @@ -0,0 +1,96 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /payroll-card/authentications/{authenticate_number} 接口的响应。 + /// + public class GetPayrollCardAuthenticationByAuthenticateNumberResponse : WechatTenpayResponse + { + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = default!; + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string? SubMerchantId { get; set; } + + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置商家核身单号。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_number")] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_number")] + public string AuthenticateNumber { get; set; } = default!; + + /// + /// 获取或设置核身渠道。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_scene")] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_scene")] + public string AuthenticateScene { get; set; } = default!; + + /// + /// 获取或设置核身渠道标识。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_source")] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_source")] + public string AuthenticateSource { get; set; } = default!; + + /// + /// 获取或设置项目名称。 + /// + [Newtonsoft.Json.JsonProperty("project_name")] + [System.Text.Json.Serialization.JsonPropertyName("project_name")] + public string ProjectName { get; set; } = default!; + + /// + /// 获取或设置单位名称。 + /// + [Newtonsoft.Json.JsonProperty("employer_name")] + [System.Text.Json.Serialization.JsonPropertyName("employer_name")] + public string EmployerName { get; set; } = default!; + + /// + /// 获取或设置核身类型。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_type")] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_type")] + public string AuthenticateType { get; set; } = default!; + + /// + /// 获取或设置核身状态。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_state")] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_state")] + public string AuthenticateState { get; set; } = default!; + + /// + /// 获取或设置核身时间。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))] + public DateTimeOffset AuthenticateTime { get; set; } + + /// + /// 获取或设置核身失败原因。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_failed_reason")] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_failed_reason")] + public string? AuthenticateFailedReason { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationRequest.cs new file mode 100644 index 00000000..ba27884e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationRequest.cs @@ -0,0 +1,89 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payroll-card/authentications/pre-order-with-auth 接口的请求。 + /// + public class PreOrderWithAuthPayrollCardAuthenticationRequest : WechatTenpayRequest + { + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string? SubMerchantId { get; set; } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string? AppId { get; set; } + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + + /// + /// 获取或设置商家核身单号。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_number")] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_number")] + public string AuthenticateNumber { get; set; } = string.Empty; + + /// + /// 获取或设置项目名称。 + /// + [Newtonsoft.Json.JsonProperty("project_name")] + [System.Text.Json.Serialization.JsonPropertyName("project_name")] + public string ProjectName { get; set; } = string.Empty; + + /// + /// 获取或设置用工单位名称。 + /// + [Newtonsoft.Json.JsonProperty("employer_name")] + [System.Text.Json.Serialization.JsonPropertyName("employer_name")] + public string EmployerName { get; set; } = string.Empty; + + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置用户姓名(需使用平台公钥/证书加密)。 + /// + [Newtonsoft.Json.JsonProperty("user_name")] + [System.Text.Json.Serialization.JsonPropertyName("user_name")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public string? UserName { get; set; } + + /// + /// 获取或设置身份证号码(需使用平台公钥/证书加密)。 + /// + [Newtonsoft.Json.JsonProperty("id_card_number")] + [System.Text.Json.Serialization.JsonPropertyName("id_card_number")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public string? IdCardNumber { get; set; } + + /// + /// 获取或设置用工类型。 + /// + [Newtonsoft.Json.JsonProperty("employment_type")] + [System.Text.Json.Serialization.JsonPropertyName("employment_type")] + public string EmploymentType { get; set; } = string.Empty; + + /// + /// 获取或设置核身类型。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_type")] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_type")] + public string AuthenticateType { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationResponse.cs new file mode 100644 index 00000000..48fc9472 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationResponse.cs @@ -0,0 +1,50 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payroll-card/authentications/pre-order-with-auth 接口的响应。 + /// + public class PreOrderWithAuthPayrollCardAuthenticationResponse : WechatTenpayResponse + { + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = default!; + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string? SubMerchantId { get; set; } + + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置商家核身单号。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_number")] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_number")] + public string AuthenticateNumber { get; set; } = default!; + + /// + /// 获取或设置核身 Token。 + /// + [Newtonsoft.Json.JsonProperty("token")] + [System.Text.Json.Serialization.JsonPropertyName("token")] + public string Token { get; set; } = default!; + + /// + /// 获取或设置核身 Token 有效期(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("expires_in")] + [System.Text.Json.Serialization.JsonPropertyName("expires_in")] + public int ExpiresIn { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/QueryPayrollCardAuthenticationsRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/QueryPayrollCardAuthenticationsRequest.cs new file mode 100644 index 00000000..6ffc7a20 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/QueryPayrollCardAuthenticationsRequest.cs @@ -0,0 +1,64 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /payroll-card/authentications 接口的请求。 + /// + public class QueryPayrollCardAuthenticationsRequest : WechatTenpayRequest + { + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? SubMerchantId { get; set; } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? AppId { get; set; } + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? SubAppId { get; set; } + + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置核身日期字符串(格式:yyyy-MM-dd)。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? AuthenticateDateString { get; set; } + + /// + /// 获取或设置核身状态。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? AuthenticateState { get; set; } + + /// + /// 获取或设置分页大小。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int? Limit { get; set; } + + /// + /// 获取或设置分页开始位置。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public int? Offset { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/QueryPayrollCardAuthenticationsResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/QueryPayrollCardAuthenticationsResponse.cs new file mode 100644 index 00000000..fd995c59 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/Authentications/QueryPayrollCardAuthenticationsResponse.cs @@ -0,0 +1,130 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /payroll-card/authentications 接口的响应。 + /// + public class QueryPayrollCardAuthenticationsResponse : WechatTenpayResponse + { + public static class Types + { + public class Authentication + { + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = default!; + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string? SubMerchantId { get; set; } + + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置商家核身单号。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_number")] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_number")] + public string AuthenticateNumber { get; set; } = default!; + + /// + /// 获取或设置核身渠道。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_scene")] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_scene")] + public string AuthenticateScene { get; set; } = default!; + + /// + /// 获取或设置核身渠道标识。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_source")] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_source")] + public string AuthenticateSource { get; set; } = default!; + + /// + /// 获取或设置项目名称。 + /// + [Newtonsoft.Json.JsonProperty("project_name")] + [System.Text.Json.Serialization.JsonPropertyName("project_name")] + public string ProjectName { get; set; } = default!; + + /// + /// 获取或设置单位名称。 + /// + [Newtonsoft.Json.JsonProperty("employer_name")] + [System.Text.Json.Serialization.JsonPropertyName("employer_name")] + public string EmployerName { get; set; } = default!; + + /// + /// 获取或设置核身类型。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_type")] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_type")] + public string AuthenticateType { get; set; } = default!; + + /// + /// 获取或设置核身状态。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_state")] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_state")] + public string AuthenticateState { get; set; } = default!; + + /// + /// 获取或设置核身时间。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))] + public DateTimeOffset AuthenticateTime { get; set; } + + /// + /// 获取或设置核身失败原因。 + /// + [Newtonsoft.Json.JsonProperty("authenticate_failed_reason")] + [System.Text.Json.Serialization.JsonPropertyName("authenticate_failed_reason")] + public string? AuthenticateFailedReason { get; set; } + } + } + + /// + /// 获取或设置核身记录列表。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public Types.Authentication[] AuthenticationList { get; set; } = default!; + + /// + /// 获取或设置分页大小。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int Limit { get; set; } + + /// + /// 获取或设置分页开始位置。 + /// + [Newtonsoft.Json.JsonProperty("offset")] + [System.Text.Json.Serialization.JsonPropertyName("offset")] + public int Offset { get; set; } + + /// + /// 获取或设置合作关系总数量。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int? TotalCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/CreatePayrollCardTokenRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/CreatePayrollCardTokenRequest.cs new file mode 100644 index 00000000..f25c79dc --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/CreatePayrollCardTokenRequest.cs @@ -0,0 +1,61 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payroll-card/tokens 接口的请求。 + /// + public class CreatePayrollCardTokenRequest : WechatTenpayRequest + { + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string? SubMerchantId { get; set; } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string? AppId { get; set; } + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置用户姓名(需使用平台公钥/证书加密)。 + /// + [Newtonsoft.Json.JsonProperty("user_name")] + [System.Text.Json.Serialization.JsonPropertyName("user_name")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public string? UserName { get; set; } + + /// + /// 获取或设置身份证号码(需使用平台公钥/证书加密)。 + /// + [Newtonsoft.Json.JsonProperty("id_card_number")] + [System.Text.Json.Serialization.JsonPropertyName("id_card_number")] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_RSA_2048_WITH_SHA256, algorithm: Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS8_OAEP_WITH_SHA1_AND_MGF1)] + [WechatTenpaySensitiveProperty(scheme: Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3, algorithm: Constants.EncryptionAlgorithms.SM2_C1C3C2_ASN1)] + public string? IdCardNumber { get; set; } + + /// + /// 获取或设置用工类型。 + /// + [Newtonsoft.Json.JsonProperty("employment_type")] + [System.Text.Json.Serialization.JsonPropertyName("employment_type")] + public string EmploymentType { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/CreatePayrollCardTokenResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/CreatePayrollCardTokenResponse.cs new file mode 100644 index 00000000..3b411ab6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/CreatePayrollCardTokenResponse.cs @@ -0,0 +1,43 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payroll-card/tokens 接口的响应。 + /// + public class CreatePayrollCardTokenResponse : WechatTenpayResponse + { + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = default!; + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string? SubMerchantId { get; set; } + + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置授权 Token。 + /// + [Newtonsoft.Json.JsonProperty("token")] + [System.Text.Json.Serialization.JsonPropertyName("token")] + public string Token { get; set; } = default!; + + /// + /// 获取或设置授权 Token 有效期(单位:秒)。 + /// + [Newtonsoft.Json.JsonProperty("expires_in")] + [System.Text.Json.Serialization.JsonPropertyName("expires_in")] + public int ExpiresIn { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/GetPayrollRelationByOpenIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/GetPayrollRelationByOpenIdRequest.cs new file mode 100644 index 00000000..dccc389a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/GetPayrollRelationByOpenIdRequest.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /payroll-card/relations/{openid} 接口的请求。 + /// + public class GetPayrollRelationByOpenIdRequest : WechatTenpayRequest + { + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? SubMerchantId { get; set; } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? AppId { get; set; } + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? SubAppId { get; set; } + + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string OpenId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/GetPayrollRelationByOpenIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/GetPayrollRelationByOpenIdResponse.cs new file mode 100644 index 00000000..607e0017 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/GetPayrollRelationByOpenIdResponse.cs @@ -0,0 +1,95 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /payroll-card/relations/{openid} 接口的响应。 + /// + public class GetPayrollRelationByOpenIdResponse : WechatTenpayResponse + { + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = default!; + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string? SubMerchantId { get; set; } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置授权状态。 + /// + [Newtonsoft.Json.JsonProperty("authorize_state")] + [System.Text.Json.Serialization.JsonPropertyName("authorize_state")] + public string AuthorizeState { get; set; } = default!; + + /// + /// 获取或设置授权时间。 + /// + [Newtonsoft.Json.JsonProperty("authorize_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("authorize_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? AuthorizeTime { get; set; } + + /// + /// 获取或设置取消授权时间。 + /// + [Newtonsoft.Json.JsonProperty("deauthorize_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("deauthorize_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? DeauthorizeTime { get; set; } + + /// + /// 获取或设置开通状态。 + /// + [Newtonsoft.Json.JsonProperty("register_state")] + [System.Text.Json.Serialization.JsonPropertyName("register_state")] + public string RegisterState { get; set; } = default!; + + /// + /// 获取或设置开通时间。 + /// + [Newtonsoft.Json.JsonProperty("register_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("register_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? RegisterTime { get; set; } + + /// + /// 获取或设置关闭时间。 + /// + [Newtonsoft.Json.JsonProperty("close_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("close_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? CloseTime { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchRequest.cs new file mode 100644 index 00000000..7f68aa65 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchRequest.cs @@ -0,0 +1,101 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payroll-card/transfer-batches 接口的请求。 + /// + public class CreatePayrollCardTransferBatchRequest : WechatTenpayRequest + { + public static class Types + { + public class TransferDetail : CreateTransferBatchRequest.Types.TransferDetail + { + } + } + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string? SubMerchantId { get; set; } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sp_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_appid")] + public string? AppId { get; set; } + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + + /// + /// 获取或设置特约商户授权类型。 + /// + [Newtonsoft.Json.JsonProperty("authorization_type")] + [System.Text.Json.Serialization.JsonPropertyName("authorization_type")] + public string AuthorizationType { get; set; } = string.Empty; + + /// + /// 获取或设置商户批次单号。 + /// + [Newtonsoft.Json.JsonProperty("out_batch_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_batch_no")] + public string OutBatchNumber { get; set; } = string.Empty; + + /// + /// 获取或设置批次名称。 + /// + [Newtonsoft.Json.JsonProperty("batch_name")] + [System.Text.Json.Serialization.JsonPropertyName("batch_name")] + public string BatchName { get; set; } = string.Empty; + + /// + /// 获取或设置批次备注。 + /// + [Newtonsoft.Json.JsonProperty("batch_remark")] + [System.Text.Json.Serialization.JsonPropertyName("batch_remark")] + public string BatchRemark { get; set; } = string.Empty; + + /// + /// 获取或设置转账总金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total_amount")] + [System.Text.Json.Serialization.JsonPropertyName("total_amount")] + public int TotalAmount { get; set; } + + /// + /// 获取或设置转账总笔数。 + /// + [Newtonsoft.Json.JsonProperty("total_num")] + [System.Text.Json.Serialization.JsonPropertyName("total_num")] + public int TotalNumber { get; set; } + + /// + /// 获取或设置转账明细列表。 + /// + [Newtonsoft.Json.JsonProperty("transfer_detail_list")] + [System.Text.Json.Serialization.JsonPropertyName("transfer_detail_list")] + public IList TransferDetailList { get; set; } = new List(); + + /// + /// 获取或设置用工类型。 + /// + [Newtonsoft.Json.JsonProperty("employment_type")] + [System.Text.Json.Serialization.JsonPropertyName("employment_type")] + public string EmploymentType { get; set; } = string.Empty; + + /// + /// 获取或设置用工场景。 + /// + [Newtonsoft.Json.JsonProperty("employment_scene")] + [System.Text.Json.Serialization.JsonPropertyName("employment_scene")] + public string EmploymentScene { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchResponse.cs new file mode 100644 index 00000000..63210880 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payroll-card/transfer-batches 接口的响应。 + /// + public class CreatePayrollCardTransferBatchResponse : CreateTransferBatchResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/SKIT.FlurlHttpClient.Wechat.TenpayV3.csproj b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/SKIT.FlurlHttpClient.Wechat.TenpayV3.csproj index fa87760f..ee15dc1f 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/SKIT.FlurlHttpClient.Wechat.TenpayV3.csproj +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/SKIT.FlurlHttpClient.Wechat.TenpayV3.csproj @@ -15,7 +15,7 @@ https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat Flurl.Http Wechat Weixin MicroMessage Tenpay WechatPay WeixinPay Wxpay 微信 微信支付 微信商户 2.13.1 - 基于 Flurl.Http 的微信支付 API v3 版客户端,支持直连商户、服务商模式,支持基础支付、代金券、商家券、委托营销、消费卡、支付有礼、银行定向促活、微信支付分、微信先享卡、支付即服务、点金计划、智慧商圈、电商收付通、二级商户进件、小微商户进件、消费者投诉、商户违规通知、批量转账到零钱、银行组件、海关报关、融合钱包等功能。 + 基于 Flurl.Http 的微信支付 API v3 版客户端,支持直连商户、服务商模式,支持基础支付、代金券、商家券、委托营销、消费卡、支付有礼、银行定向促活、微信支付分、微信先享卡、支付即服务、点金计划、智慧商圈、电商收付通、二级商户进件、小微商户进件、消费者投诉、商户违规通知、批量转账到零钱、银行组件、海关报关、融合钱包、微工卡等功能。 Fu Diwei git https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationRequest.json new file mode 100644 index 00000000..d8fb7d3c --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationRequest.json @@ -0,0 +1,13 @@ +{ + "appid": "wxa1111111", + "authenticate_number": "mcdhehfgisdhfjghed39384564i83", + "authenticate_type": "SIGN_IN", + "employer_name": "某用工企业", + "employment_type": "LONG_TERM_EMPLOYMENT", + "id_card_number": "7FzH5XksJG3a8HLLsaaUV6K54y1OnPMY5", + "openid": "onqOjjmo8wmTOOtSKwXtGjg9Gb58", + "project_name": "某项目", + "sub_appid": "wxa1111111", + "sub_mchid": "1111111", + "user_name": "LP7bT4hQXUsOZCEvK2YrSiqFsnP0oRMfeoLN0vBg" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationResponse.json new file mode 100644 index 00000000..ce46b87f --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/Authentications/PreOrderWithAuthPayrollCardAuthenticationResponse.json @@ -0,0 +1,8 @@ +{ + "authenticate_number": "mcdhehfgisdhfjghed39384564i83", + "expires_in": 300, + "mchid": "1111111", + "openid": "onqOjjmo8wmTOOtSKwXtGjg9Gb58", + "sub_mchid": "1111111", + "token": "abcdefghijklmn" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/Authentications/QueryPayrollCardAuthenticationsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/Authentications/QueryPayrollCardAuthenticationsResponse.json new file mode 100644 index 00000000..38bbc572 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/Authentications/QueryPayrollCardAuthenticationsResponse.json @@ -0,0 +1,20 @@ +{ + "data": [ + { + "mchid": "1111111", + "sub_mchid": "111111", + "openid": "onqOjjmo8wmTOOtSKwXtGjg9Gb58", + "authenticate_scene": "FROM_MINI_APP", + "authenticate_source": "wdiooewl7587443649000", + "authenticate_type": "SIGN_IN", + "project_name": "某项目", + "employer_name": "某单位名称", + "authenticate_state": "FROM_MINI_APP", + "authenticate_time": "2015-05-20T13:29:35+08:00", + "authenticate_number": "mcdhehfgisdhfjghed39384564i83" + } + ], + "total_count": 9, + "offset": 0, + "limit": 10 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/CreatePayrollCardTokenRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/CreatePayrollCardTokenRequest.json new file mode 100644 index 00000000..79a9ee8a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/CreatePayrollCardTokenRequest.json @@ -0,0 +1,9 @@ +{ + "openid": "onqOjjmo8wmTOOtSKwXtGjg9Gb58", + "appid": "wxa1111111", + "sub_mchid": "1111111", + "sub_appid": "wxa1111111", + "user_name": "LP7bT4hQXUsOZCEvK2YrSiqFsnP0oRMfeoLN0vBg", + "id_card_number": "7FzH5XksJG3a8HLLsaaUV6K54y1OnPMY5", + "employment_type": "LONG_TERM_EMPLOYMENT" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/CreatePayrollCardTokenResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/CreatePayrollCardTokenResponse.json new file mode 100644 index 00000000..96eba84f --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/CreatePayrollCardTokenResponse.json @@ -0,0 +1,7 @@ +{ + "openid": "9x111111", + "mchid": "1111111", + "sub_mchid": "1111111", + "token": "abcdefghijklmn", + "expires_in": 1800 +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/GetPayrollRelationByOpenIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/GetPayrollRelationByOpenIdResponse.json new file mode 100644 index 00000000..037f7871 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/GetPayrollRelationByOpenIdResponse.json @@ -0,0 +1,11 @@ +{ + "authorize_state": "UNAUTHORIZED", + "authorize_time": "2015-05-20T13:29:35+08:00", + "close_time": "2015-05-22T13:29:35+08:00", + "deauthorize_time": "2015-05-20T13:29:35+08:00", + "mchid": "1111111", + "openid": "onqOjjmo8wmTOOtSKwXtGjg9Gb58", + "register_state": "UNDEFINED", + "register_time": "2015-05-20T13:29:35+08:00", + "sub_mchid": "1111111" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchRequest.json new file mode 100644 index 00000000..980bc586 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchRequest.json @@ -0,0 +1,22 @@ +{ + "sub_mchid": "1900000109", + "sub_appid": "wxf636efh567hg4356", + "authorization_type": "INFORMATION_AUTHORIZATION_TYPE", + "out_batch_no": "plfk2020042013", + "batch_name": "2019年1月深圳分部报销单", + "batch_remark": "2019年1月深圳分部报销单", + "total_amount": 4000000, + "total_num": 200, + "transfer_detail_list": [ + { + "out_detail_no": "x23zy545Bd5436", + "transfer_amount": 200000, + "transfer_remark": "2020年4月报销", + "openid": "o-MYE42l80oelYMDE34nYD456Xoy", + "user_name": "757b340b45ebef5467rter35gf464344v3542sdf4t6re4tb4f54ty45t4yyry45" + } + ], + "sp_appid": "wxf636efh567hg4388", + "employment_type": "LONG_TERM_EMPLOYMENT", + "employment_scene": "LOGISTICS" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchResponse.json new file mode 100644 index 00000000..5d093ded --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/PayrollCard/TransferBatches/CreatePayrollCardTransferBatchResponse.json @@ -0,0 +1,5 @@ +{ + "out_batch_no": "plfk2020042013", + "batch_id": "1030000071100999991182020050700019480001", + "create_time": "2015-05-20T13:29:35.120+08:00" +}