mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2026-02-11 10:16:20 +08:00
feat(tenpayv3): 新增区块链电子发票相关接口
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
using System;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 FAPIAO.USER_APPLIED 通知的数据。</para>
|
||||
/// <para>标识 FAPIAO.CARD_INSERTED 通知的数据。</para>
|
||||
/// <para>标识 FAPIAO.CARD_DISCARDED 通知的数据。</para>
|
||||
/// <para>标识 FAPIAO.ISSUED 通知的数据。</para>
|
||||
/// <para>标识 FAPIAO.REVERSED 通知的数据。</para>
|
||||
/// </summary>
|
||||
public class FapiaoResource : WechatTenpayEvent.Types.IDecryptedResource
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Fapiao
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置商户发票单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_id")]
|
||||
public string FapiaoId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票状态。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_status")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_status")]
|
||||
public string FapiaoStatus { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置卡包状态。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("card_status")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("card_status")]
|
||||
public string CardStatus { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置微信商户号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("mchid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("mchid")]
|
||||
public string MerchantId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票申请单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_apply_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_apply_id")]
|
||||
public string FapiaoApplyId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置用户填写时间。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("apply_time")]
|
||||
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("apply_time")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))]
|
||||
public DateTimeOffset? ApplyTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_information")]
|
||||
public Types.Fapiao[]? FapiaoList { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,328 @@
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Flurl.Http;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
|
||||
{
|
||||
/// <summary>
|
||||
/// 为 <see cref="WechatTenpayClient"/> 提供电子发票相关的 API 扩展方法。
|
||||
/// </summary>
|
||||
public static class WechatTenpayClientExecuteNewTaxControlFapiaoExtensions
|
||||
{
|
||||
#region CardTemplate
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /new-tax-control-fapiao/card-template 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter4_8_5.shtml </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.CreateNewTaxControlFapiaoCardTemplateResponse> ExecuteCreateNewTaxControlFapiaoCardTemplateAsync(this WechatTenpayClient client, Models.CreateNewTaxControlFapiaoCardTemplateRequest 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, "new-tax-control-fapiao", "card-template");
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.CreateNewTaxControlFapiaoCardTemplateResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Merchant
|
||||
/// <summary>
|
||||
/// <para>异步调用 [PATCH] /new-tax-control-fapiao/merchant/development-config 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter4_8_18.shtml </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ModifyNewTaxControlFapiaoMerchantDevelopmentConfigResponse> ExecuteModifyNewTaxControlFapiaoMerchantDevelopmentConfigAsync(this WechatTenpayClient client, Models.ModifyNewTaxControlFapiaoMerchantDevelopmentConfigRequest request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (client is null) throw new ArgumentNullException(nameof(client));
|
||||
if (request is null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
IFlurlRequest flurlReq = client
|
||||
.CreateRequest(request, new HttpMethod("PATCH"), "new-tax-control-fapiao", "merchant", "development-config");
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.ModifyNewTaxControlFapiaoMerchantDevelopmentConfigResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [GET] /new-tax-control-fapiao/merchant/development-config 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter4_8_18.shtml </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.GetNewTaxControlFapiaoMerchantDevelopmentConfigResponse> ExecuteGetNewTaxControlFapiaoMerchantDevelopmentConfigAsync(this WechatTenpayClient client, Models.GetNewTaxControlFapiaoMerchantDevelopmentConfigRequest 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, "new-tax-control-fapiao", "merchant", "development-config");
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.GetNewTaxControlFapiaoMerchantDevelopmentConfigResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [GET] /new-tax-control-fapiao/merchant/base-information 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter4_8_3.shtml </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.GetNewTaxControlFapiaoMerchantBaseInformationResponse> ExecuteGetNewTaxControlFapiaoMerchantBaseInformationAsync(this WechatTenpayClient client, Models.GetNewTaxControlFapiaoMerchantBaseInformationRequest 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, "new-tax-control-fapiao", "merchant", "base-information");
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.GetNewTaxControlFapiaoMerchantBaseInformationResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [GET] /new-tax-control-fapiao/merchant/tax-codes 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter4_8_2.shtml </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.QueryNewTaxControlFapiaoMerchantTaxCodesResponse> ExecuteQueryNewTaxControlFapiaoMerchantTaxCodesAsync(this WechatTenpayClient client, Models.QueryNewTaxControlFapiaoMerchantTaxCodesRequest 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, "new-tax-control-fapiao", "merchant", "tax-codes")
|
||||
.SetQueryParam("offset", request.Offset)
|
||||
.SetQueryParam("limit", request.Limit);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.QueryNewTaxControlFapiaoMerchantTaxCodesResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region UserTitle
|
||||
/// <summary>
|
||||
/// <para>异步调用 [GET] /new-tax-control-fapiao/user-title/title-url 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter4_8_6.shtml </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.GetNewTaxControlFapiaoUserTitleUrlResponse> ExecuteGetNewTaxControlFapiaoUserTitleUrlAsync(this WechatTenpayClient client, Models.GetNewTaxControlFapiaoUserTitleUrlRequest 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, "new-tax-control-fapiao", "user-title", "title-url")
|
||||
.SetQueryParam("fapiao_apply_id", request.FapiaoApplyId)
|
||||
.SetQueryParam("source", request.Source)
|
||||
.SetQueryParam("total_amount", request.TotalAmount)
|
||||
.SetQueryParam("appid", request.AppId)
|
||||
.SetQueryParam("openid", request.OpenId);
|
||||
|
||||
if (request.SellerName != null)
|
||||
flurlReq.SetQueryParam("seller_name", request.SellerName);
|
||||
|
||||
if (request.RequireShowMobileCell != null)
|
||||
flurlReq.SetQueryParam("show_phone_cell", request.RequireShowMobileCell.Value ? "true" : "false");
|
||||
|
||||
if (request.RequireMustInputMobile != null)
|
||||
flurlReq.SetQueryParam("must_input_phone", request.RequireMustInputMobile.Value ? "true" : "false");
|
||||
|
||||
if (request.RequireShowEmailCell != null)
|
||||
flurlReq.SetQueryParam("show_email_cell", request.RequireShowEmailCell.Value ? "true" : "false");
|
||||
|
||||
if (request.RequireMustInputEmail != null)
|
||||
flurlReq.SetQueryParam("must_input_email", request.RequireMustInputEmail.Value ? "true" : "false");
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.GetNewTaxControlFapiaoUserTitleUrlResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [GET] /new-tax-control-fapiao/user-title 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter4_8_7.shtml </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.GetNewTaxControlFapiaoUserTitleResponse> ExecuteGetNewTaxControlFapiaoUserTitleAsync(this WechatTenpayClient client, Models.GetNewTaxControlFapiaoUserTitleRequest 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, "new-tax-control-fapiao", "user-title")
|
||||
.SetQueryParam("fapiao_apply_id", request.FapiaoApplyId)
|
||||
.SetQueryParam("scene", request.Scene);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.GetNewTaxControlFapiaoUserTitleResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region FapiaoApplication
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /new-tax-control-fapiao/fapiao-applications 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter4_8_8.shtml </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.CreateNewTaxControlFapiaoApplicationResponse> ExecuteCreateNewTaxControlFapiaoApplicationAsync(this WechatTenpayClient client, Models.CreateNewTaxControlFapiaoApplicationRequest 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, "new-tax-control-fapiao", "fapiao-applications");
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.CreateNewTaxControlFapiaoApplicationResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /new-tax-control-fapiao/fapiao-applications/{fapiao_apply_id}/reverse 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter4_8_10.shtml </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.ReverseNewTaxControlFapiaoApplicationResponse> ExecuteReverseNewTaxControlFapiaoApplicationAsync(this WechatTenpayClient client, Models.ReverseNewTaxControlFapiaoApplicationRequest 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, "new-tax-control-fapiao", "fapiao-applications", request.FapiaoApplyId, "reverse");
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.ReverseNewTaxControlFapiaoApplicationResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [GET] /new-tax-control-fapiao/fapiao-applications/{fapiao_apply_id} 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter4_8_9.shtml </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.GetNewTaxControlFapiaoApplicationByFapiaoApplyIdResponse> ExecuteGetNewTaxControlFapiaoApplicationByFapiaoApplyIdAsync(this WechatTenpayClient client, Models.GetNewTaxControlFapiaoApplicationByFapiaoApplyIdRequest 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, "new-tax-control-fapiao", "fapiao-applications", request.FapiaoApplyId);
|
||||
|
||||
if (request.FapiaoId != null)
|
||||
flurlReq.SetQueryParam("fapiao_id", request.FapiaoId);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.GetNewTaxControlFapiaoApplicationByFapiaoApplyIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [GET] /new-tax-control-fapiao/fapiao-applications/{fapiao_apply_id}/fapiao-files 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter4_8_9.shtml </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.GetNewTaxControlFapiaoApplicationFilesResponse> ExecuteGetNewTaxControlFapiaoApplicationFilesAsync(this WechatTenpayClient client, Models.GetNewTaxControlFapiaoApplicationFilesRequest 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, "new-tax-control-fapiao", "fapiao-applications", request.FapiaoApplyId, "fapiao-files");
|
||||
|
||||
if (request.FapiaoId != null)
|
||||
flurlReq.SetQueryParam("fapiao_id", request.FapiaoId);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.GetNewTaxControlFapiaoApplicationFilesResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [GET] /{download_url} 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter4_8_21.shtml </para>
|
||||
/// <para><i>(请注意此接口不受构造 <see cref="WechatTenpayClient" /> 时指定的 <see cref="WechatTenpayClientOptions.Endpoint"/> 参数控制。)</i></para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.DownloadNewTaxControlFapiaoApplicationFileResponse> ExecuteDownloadNewTaxControlFapiaoApplicationFileAsync(this WechatTenpayClient client, Models.DownloadNewTaxControlFapiaoApplicationFileRequest request, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (client is null) throw new ArgumentNullException(nameof(client));
|
||||
if (request is null) throw new ArgumentNullException(nameof(request));
|
||||
|
||||
if (request.MerchantId == null)
|
||||
request.MerchantId = client.Credentials.MerchantId;
|
||||
|
||||
IFlurlRequest flurlReq = client
|
||||
.CreateRequest(request, HttpMethod.Get, request.DownloadUrl)
|
||||
.WithUrl(request.DownloadUrl)
|
||||
.SetQueryParam("mchid", request.MerchantId)
|
||||
.SetQueryParam("openid", request.OpenId)
|
||||
.SetQueryParam("fapiao_id", request.FapiaoId)
|
||||
.SetQueryParam("invoice_code", request.FapiaoCode)
|
||||
.SetQueryParam("invoice_no", request.FapiaoNumber);
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.DownloadNewTaxControlFapiaoApplicationFileResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /new-tax-control-fapiao/fapiao-applications/upload-fapiao-file 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter4_8_14.shtml </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.UploadNewTaxControlFapiaoApplicationFapiaoFileResponse> ExecuteUploadNewTaxControlFapiaoApplicationFapiaoFileAsync(this WechatTenpayClient client, Models.UploadNewTaxControlFapiaoApplicationFapiaoFileRequest 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, "new-tax-control-fapiao", "fapiao-applications", "upload-fapiao-file");
|
||||
|
||||
using var httpContent = Utilities.FileHttpContentBuilder.Build(fileName: "file.pdf", fileBytes: request.FileBytes, fileContentType: "application/pdf", fileMetaJson: client.JsonSerializer.Serialize(request));
|
||||
return await client.SendRequestAsync<Models.UploadNewTaxControlFapiaoApplicationFapiaoFileResponse>(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>异步调用 [POST] /new-tax-control-fapiao/fapiao-applications/{fapiao_apply_id}/insert-cards 接口。</para>
|
||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/apiv3/Offline/apis/chapter4_8_15.shtml </para>
|
||||
/// </summary>
|
||||
/// <param name="client"></param>
|
||||
/// <param name="request"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
public static async Task<Models.CreateNewTaxControlFapiaoApplicationCardResponse> ExecuteCreateNewTaxControlFapiaoApplicationCardAsync(this WechatTenpayClient client, Models.CreateNewTaxControlFapiaoApplicationCardRequest 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, "new-tax-control-fapiao", "fapiao-applications", request.FapiaoApplyId, "insert-cards");
|
||||
|
||||
return await client.SendRequestWithJsonAsync<Models.CreateNewTaxControlFapiaoApplicationCardResponse>(flurlReq, data: request, cancellationToken: cancellationToken);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /new-tax-control-fapiao/card-template 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class CreateNewTaxControlFapiaoCardTemplateRequest : WechatTenpayRequest
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class CartTemplate
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class CustomCell
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置文字。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("words")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("words")]
|
||||
public string Words { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置描述。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("description")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("description")]
|
||||
public string Description { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置跳转链接。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("jump_url")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("jump_url")]
|
||||
public string? JumpUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置跳转小程序的用户名。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("miniprogram_user_name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("miniprogram_user_name")]
|
||||
public string? MiniProgramUsername { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置跳转小程序的页面路径。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("miniprogram_path")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("miniprogram_path")]
|
||||
public string? MiniProgramPagePath { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置收款方名称。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("payee_name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("payee_name")]
|
||||
public string? PayeeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置卡券 Logo 地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("logo_url")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("logo_url")]
|
||||
public string? LogoUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置卡券自定义信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("custom_cell")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("custom_cell")]
|
||||
public Types.CustomCell? CustomCell { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置微信 AppId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("card_appid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("card_appid")]
|
||||
public string CardAppId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置卡券模板信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("card_template_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("card_template_information")]
|
||||
public Types.CartTemplate CartTemplate { get; set; } = new Types.CartTemplate();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /new-tax-control-fapiao/card-template 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class CreateNewTaxControlFapiaoCardTemplateResponse : WechatTenpayResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置微信 AppId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("card_appid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("card_appid")]
|
||||
public string CardAppId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置卡券模板 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("card_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("card_id")]
|
||||
public string CardTemplateId { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,303 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /new-tax-control-fapiao/fapiao-applications/{fapiao_apply_id}/insert-cards 接口的请求。</para>
|
||||
/// </summary>
|
||||
[WechatTenpaySensitive]
|
||||
public class CreateNewTaxControlFapiaoApplicationCardRequest : WechatTenpayRequest
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Buyer : CreateNewTaxControlFapiaoApplicationRequest.Types.Buyer
|
||||
{
|
||||
}
|
||||
|
||||
public class FapiaoCard
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Seller
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置销售方名称。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("name")]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置纳税人识别号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("taxpayer_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("taxpayer_id")]
|
||||
public string TaxpayerId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("address")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("address")]
|
||||
public string? Address { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置电话。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("telephone")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("telephone")]
|
||||
public string? PhoneNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置开户银行。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("bank_name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("bank_name")]
|
||||
public string? BankName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置银行账号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("bank_account")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("bank_account")]
|
||||
public string? BankAccountNumber { get; set; }
|
||||
}
|
||||
|
||||
public class Extra
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置收款人。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("payee")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("payee")]
|
||||
public string? Payee { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置复核人。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("reviewer")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("reviewer")]
|
||||
public string? Reviewer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置开票人。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("drawer")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("drawer")]
|
||||
public string Drawer { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
public class Item
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置货物或应税劳务或服务编码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_code")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_code")]
|
||||
public string TaxCode { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置货物或应税劳务或服务名称。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("goods_name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("goods_name")]
|
||||
public string GoodsName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置规格型号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("specification")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("specification")]
|
||||
public string? Specification { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置单位。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("unit")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("unit")]
|
||||
public string? Unit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置数量。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("quantity")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("quantity")]
|
||||
public int Quantity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置单价(单位:10^-6分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("unit_price")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("unit_price")]
|
||||
public long UnitPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置单行金额(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("amount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("amount")]
|
||||
public int Amount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置单行税额(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_amount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_amount")]
|
||||
public int TaxAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置单行合计(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("total_amount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("total_amount")]
|
||||
public int TotalAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置税率(单位:万分数)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_rate")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_rate")]
|
||||
public int TaxRate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置税收优惠政策标识。
|
||||
/// <para>默认值:NO_FAVORABLE</para>
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_prefer_mark")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_prefer_mark")]
|
||||
public string TaxPreferMark { get; set; } = "NO_FAVORABLE";
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置是否是折扣行。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("discount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("discount")]
|
||||
public bool IsDiscount { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票文件 MediaId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_media_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_media_id")]
|
||||
public string FapiaoMediaId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票号码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_number")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_number")]
|
||||
public string FapiaoNumber { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票代码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_code")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_code")]
|
||||
public string FapiaoCode { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置开票时间。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_time")]
|
||||
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_time")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
|
||||
public DateTimeOffset FapiaoTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置校验码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("check_code")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("check_code")]
|
||||
public string CheckCode { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置密码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("password")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("password")]
|
||||
public string Password { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置总价税合计(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("total_amount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("total_amount")]
|
||||
public int TotalAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置总税额(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_amount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_amount")]
|
||||
public int TaxAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置总金额(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("amount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("amount")]
|
||||
public int Amount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置销售方信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("seller_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("seller_information")]
|
||||
public Types.Seller Seller { get; set; } = new Types.Seller();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置额外信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("extra_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("extra_information")]
|
||||
public Types.Extra Extra { get; set; } = new Types.Extra();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票行列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("items")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("items")]
|
||||
public IList<Types.Item>? ItemList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置备注信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("remark")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("remark")]
|
||||
public string? Remark { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票申请单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string FapiaoApplyId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置开票场景。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("scene")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("scene")]
|
||||
public string Scene { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置购买方信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("buyer_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("buyer_information")]
|
||||
public Types.Buyer Buyer { get; set; } = new Types.Buyer();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置电子发票卡券信息列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_card_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_card_information")]
|
||||
public IList<Types.FapiaoCard> FapiaoCardList { get; set; } = new List<Types.FapiaoCard>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /new-tax-control-fapiao/fapiao-applications/{fapiao_apply_id}/insert-cards 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class CreateNewTaxControlFapiaoApplicationCardResponse : WechatTenpayResponse
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,227 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /new-tax-control-fapiao/fapiao-applications 接口的请求。</para>
|
||||
/// </summary>
|
||||
[WechatTenpaySensitive]
|
||||
public class CreateNewTaxControlFapiaoApplicationRequest : WechatTenpayRequest
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Buyer
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置购买方类型。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("type")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("type")]
|
||||
public string Type { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置购买方名称。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("name")]
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置纳税人识别号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("taxpayer_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("taxpayer_id")]
|
||||
public string? TaxpayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("address")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("address")]
|
||||
public string? Address { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置电话。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("telephone")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("telephone")]
|
||||
public string? PhoneNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置开户银行。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("bank_name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("bank_name")]
|
||||
public string? BankName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置银行账号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("bank_account")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("bank_account")]
|
||||
public string? BankAccountNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置用户手机号码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("phone")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("phone")]
|
||||
[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? UserMobileNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置用户邮箱地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("email")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("email")]
|
||||
[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? UserEmail { get; set; }
|
||||
}
|
||||
|
||||
public class Fapiao
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Item
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置货物或应税劳务或服务编码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_code")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_code")]
|
||||
public string TaxCode { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置货物或应税劳务或服务分类。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("goods_category")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("goods_category")]
|
||||
public string? GoodsCategory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置货物或应税劳务或服务名称。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("goods_name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("goods_name")]
|
||||
public string? GoodsName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置规格型号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("specification")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("specification")]
|
||||
public string? Specification { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置单位。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("unit")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("unit")]
|
||||
public string? Unit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置数量。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("quantity")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("quantity")]
|
||||
public int Quantity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置单行合计(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("total_amount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("total_amount")]
|
||||
public int TotalAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置税率(单位:万分数)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_rate")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_rate")]
|
||||
public int? TaxRate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置税收优惠政策标识。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_prefer_mark")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_prefer_mark")]
|
||||
public string? TaxPreferMark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置是否是折扣行。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("discount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("discount")]
|
||||
public bool IsDiscount { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商户发票单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_id")]
|
||||
public string FapiaoId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置总价税合计(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("total_amount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("total_amount")]
|
||||
public int TotalAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置是否以清单形式开具发票。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("need_list")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("need_list")]
|
||||
public bool RequireItemList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票行列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("items")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("items")]
|
||||
public IList<Types.Item>? ItemList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置备注信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("remark")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("remark")]
|
||||
public string? Remark { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票申请单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_apply_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_apply_id")]
|
||||
public string FapiaoApplyId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置开票场景。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("scene")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("scene")]
|
||||
public string Scene { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置购买方信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("buyer_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("buyer_information")]
|
||||
public Types.Buyer Buyer { get; set; } = new Types.Buyer();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置电子发票信息列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_information")]
|
||||
public IList<Types.Fapiao> FapiaoList { get; set; } = new List<Types.Fapiao>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /new-tax-control-fapiao/fapiao-applications 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class CreateNewTaxControlFapiaoApplicationResponse : WechatTenpayResponse
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /{download_url} 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class DownloadNewTaxControlFapiaoApplicationFileRequest : WechatTenpayRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置发票文件下载地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string DownloadUrl { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置微信商户号。如果不指定将使用构造 <see cref="WechatTenpayClient"/> 时的 <see cref="WechatTenpayClientOptions.MerchantId"/> 参数。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string? MerchantId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商户发票单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string FapiaoId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票代码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string FapiaoCode { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票号码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string FapiaoNumber { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置用户唯一标识。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string OpenId { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /{download_url} 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class DownloadNewTaxControlFapiaoApplicationFileResponse : WechatTenpayResponse
|
||||
{
|
||||
public override bool IsSuccessful()
|
||||
{
|
||||
return base.IsSuccessful() && RawBytes?.Length > 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /new-tax-control-fapiao/fapiao-applications/{fapiao_apply_id} 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class GetNewTaxControlFapiaoApplicationByFapiaoApplyIdRequest : WechatTenpayRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置发票申请单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string FapiaoApplyId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商户发票单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string? FapiaoId { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,388 @@
|
||||
using System;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /new-tax-control-fapiao/fapiao-applications/{fapiao_apply_id} 接口的响应。</para>
|
||||
/// </summary>
|
||||
[WechatTenpaySensitive]
|
||||
public class GetNewTaxControlFapiaoApplicationByFapiaoApplyIdResponse : WechatTenpayResponse
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Fapiao
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class FapiaoDetail
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置发票代码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_code")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_code")]
|
||||
public string FapiaoCode { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票号码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_number")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_number")]
|
||||
public string FapiaoNumber { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置校验码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("check_code")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("check_code")]
|
||||
public string CheckCode { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置密码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("password")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("password")]
|
||||
public string Password { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置开票时间。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_time")]
|
||||
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_time")]
|
||||
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))]
|
||||
public DateTimeOffset FapiaoTime { get; set; }
|
||||
}
|
||||
|
||||
public class FapiaoCard
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置微信 AppId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("card_appid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("card_appid")]
|
||||
public string AppId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置用户唯一标识。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("card_openid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("card_openid")]
|
||||
public string OpenId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置电子发票卡券模板 ID。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("card_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("card_id")]
|
||||
public string? CardTemplateId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置电子发票在卡包中的编码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("card_code")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("card_code")]
|
||||
public string? CardCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票卡券状态。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("card_status")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("card_status")]
|
||||
public string? CardStatus { get; set; }
|
||||
}
|
||||
|
||||
public class Buyer
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置购买方类型。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("type")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("type")]
|
||||
public string Type { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置购买方名称。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("name")]
|
||||
public string Name { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置纳税人识别号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("taxpayer_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("taxpayer_id")]
|
||||
public string? TaxpayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("address")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("address")]
|
||||
public string? Address { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置电话。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("telephone")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("telephone")]
|
||||
public string? PhoneNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置开户银行。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("bank_name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("bank_name")]
|
||||
public string? BankName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置银行账号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("bank_account")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("bank_account")]
|
||||
public string? BankAccountNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置用户手机号码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("phone")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("phone")]
|
||||
[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? UserMobileNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置用户邮箱地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("email")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("email")]
|
||||
[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? UserEmail { get; set; }
|
||||
}
|
||||
|
||||
public class Seller : GetNewTaxControlFapiaoMerchantBaseInformationResponse.Types.Seller
|
||||
{
|
||||
}
|
||||
|
||||
public class Extra
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置收款人。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("payee")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("payee")]
|
||||
public string? Payee { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置复核人。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("reviewer")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("reviewer")]
|
||||
public string? Reviewer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置开票人。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("drawer")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("drawer")]
|
||||
public string Drawer { get; set; } = default!;
|
||||
}
|
||||
|
||||
public class Item
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置货物或应税劳务或服务编码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_code")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_code")]
|
||||
public string TaxCode { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置货物或应税劳务或服务名称。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("goods_name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("goods_name")]
|
||||
public string GoodsName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置规格型号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("specification")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("specification")]
|
||||
public string? Specification { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置单位。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("unit")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("unit")]
|
||||
public string? Unit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置数量。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("quantity")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("quantity")]
|
||||
public int Quantity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置单价(单位:10^-6分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("unit_price")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("unit_price")]
|
||||
public long UnitPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置单行金额(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("amount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("amount")]
|
||||
public int Amount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置单行税额(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_amount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_amount")]
|
||||
public int TaxAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置单行合计(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("total_amount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("total_amount")]
|
||||
public int TotalAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置税率(单位:万分数)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_rate")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_rate")]
|
||||
public int TaxRate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置税收优惠政策标识。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_prefer_mark")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_prefer_mark")]
|
||||
public string? TaxPreferMark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置是否是折扣行。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("discount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("discount")]
|
||||
public bool IsDiscount { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商户发票单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_id")]
|
||||
public string FapiaoId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票状态。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("status")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("status")]
|
||||
public string FapiaoStatus { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置总价税合计(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("total_amount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("total_amount")]
|
||||
public int TotalAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置总税额(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_amount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_amount")]
|
||||
public int TaxAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置总金额(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("amount")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("amount")]
|
||||
public int Amount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置蓝字发票信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("blue_fapiao")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("blue_fapiao")]
|
||||
public Types.FapiaoDetail? BlueFapiao { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置红字发票信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("red_fapiao")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("red_fapiao")]
|
||||
public Types.FapiaoDetail? RedFapiao { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置电子发票卡券信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("card_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("card_information")]
|
||||
public Types.FapiaoCard? FapiaoCard { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置购买方信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("buyer_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("buyer_information")]
|
||||
public Types.Buyer Buyer { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置销售方信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("seller_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("seller_information")]
|
||||
public Types.Seller Seller { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置额外信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("extra_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("extra_information")]
|
||||
public Types.Extra Extra { get; set; } = new Types.Extra();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票行列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("items")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("items")]
|
||||
public Types.Item[]? ItemList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置备注信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("remark")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("remark")]
|
||||
public string? Remark { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票信息列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_information")]
|
||||
public Types.Fapiao[] FapiaoList { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票数量。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("total_count")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
|
||||
public int TotalCount { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /new-tax-control-fapiao/fapiao-applications/{fapiao_apply_id}/fapiao-files 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class GetNewTaxControlFapiaoApplicationFilesRequest : WechatTenpayRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置发票申请单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string FapiaoApplyId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商户发票单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string? FapiaoId { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /new-tax-control-fapiao/fapiao-applications/{fapiao_apply_id}/fapiao-files 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class GetNewTaxControlFapiaoApplicationFilesResponse : WechatTenpayResponse
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class FapiaoFile
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置商户发票单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_id")]
|
||||
public string FapiaoId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票状态。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("status")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("status")]
|
||||
public string FapiaoStatus { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票文件下载地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("download_url")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("download_url")]
|
||||
public string? DownloadUrl { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票文件列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_download_info_list")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_download_info_list")]
|
||||
public Types.FapiaoFile[] FapiaoFile { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /new-tax-control-fapiao/fapiao-applications/{fapiao_apply_id}/reverse 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ReverseNewTaxControlFapiaoApplicationRequest : WechatTenpayRequest
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Fapiao
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置商户发票单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_id")]
|
||||
public string FapiaoId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票号码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_number")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_number")]
|
||||
public string FapiaoNumber { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票代码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_code")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_code")]
|
||||
public string FapiaoCode { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置发票申请单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string FapiaoApplyId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置冲红原因。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("reverse_reason")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("reverse_reason")]
|
||||
public string ReverseReason { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置电子发票信息列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_information")]
|
||||
public IList<Types.Fapiao> FapiaoList { get; set; } = new List<Types.Fapiao>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /new-tax-control-fapiao/fapiao-applications/{fapiao_apply_id}/reverse 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ReverseNewTaxControlFapiaoApplicationResponse : WechatTenpayResponse
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /new-tax-control-fapiao/fapiao-applications/upload-fapiao-file 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class UploadNewTaxControlFapiaoApplicationFapiaoFileRequest : WechatTenpayRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置文件字节数组。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public byte[] FileBytes { get; set; } = Array.Empty<byte>();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置文件类型。
|
||||
/// <para>默认值:PDF</para>
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("file_type")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("file_type")]
|
||||
public string FileType { get; set; } = "PDF";
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置文件内容哈希算法。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("digest_alogrithm")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("digest_alogrithm")]
|
||||
public string FileHashAlgorithm { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置文件内容哈希值。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("digest")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("digest")]
|
||||
public string FileHashValue { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [POST] /new-tax-control-fapiao/fapiao-applications/upload-fapiao-file 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class UploadNewTaxControlFapiaoApplicationFapiaoFileResponse : WechatTenpayResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置发票文件 MediaId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("fapiao_media_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("fapiao_media_id")]
|
||||
public string FapiaoMediaId { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /new-tax-control-fapiao/merchant/base-information 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class GetNewTaxControlFapiaoMerchantBaseInformationRequest : WechatTenpayRequest
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /new-tax-control-fapiao/merchant/base-information 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class GetNewTaxControlFapiaoMerchantBaseInformationResponse : WechatTenpayResponse
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Seller
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置销售方名称。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("name")]
|
||||
public string Name { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置纳税人识别号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("taxpayer_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("taxpayer_id")]
|
||||
public string TaxpayerId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("address")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("address")]
|
||||
public string? Address { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置电话。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("telephone")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("telephone")]
|
||||
public string? PhoneNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置开户银行。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("bank_name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("bank_name")]
|
||||
public string? BankName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置银行账号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("bank_account")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("bank_account")]
|
||||
public string? BankAccountNumber { get; set; }
|
||||
}
|
||||
|
||||
public class Extra
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置收款人。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("payee")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("payee")]
|
||||
public string? Payee { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置复核人。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("reviewer")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("reviewer")]
|
||||
public string? Reviewer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置开票人。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("drawer")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("drawer")]
|
||||
public string Drawer { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置销售方信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("seller_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("seller_information")]
|
||||
public Types.Seller Seller { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置额外信息。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("extra_information")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("extra_information")]
|
||||
public Types.Extra Extra { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /new-tax-control-fapiao/merchant/development-config 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class GetNewTaxControlFapiaoMerchantDevelopmentConfigRequest : WechatTenpayRequest
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /new-tax-control-fapiao/merchant/development-config 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class GetNewTaxControlFapiaoMerchantDevelopmentConfigResponse : WechatTenpayResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置回调地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("callback_url")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("callback_url")]
|
||||
public string CallbackUrl { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [PATCH] /new-tax-control-fapiao/merchant/development-config 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class ModifyNewTaxControlFapiaoMerchantDevelopmentConfigRequest : WechatTenpayRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置回调地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("callback_url")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("callback_url")]
|
||||
public string CallbackUrl { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [PATCH] /new-tax-control-fapiao/merchant/development-config 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class ModifyNewTaxControlFapiaoMerchantDevelopmentConfigResponse : WechatTenpayResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置回调地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("callback_url")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("callback_url")]
|
||||
public string CallbackUrl { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /new-tax-control-fapiao/merchant/tax-codes 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class QueryNewTaxControlFapiaoMerchantTaxCodesRequest : WechatTenpayRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置分页起始位置。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public int Offset { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置分页每页数量。
|
||||
/// <para>默认值:10</para>
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public int Limit { get; set; } = 10;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /new-tax-control-fapiao/merchant/tax-codes 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class QueryNewTaxControlFapiaoMerchantTaxCodesResponse : WechatTenpayResponse
|
||||
{
|
||||
public static class Types
|
||||
{
|
||||
public class Tax
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置货物或应税劳务或服务编码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_code")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_code")]
|
||||
public string TaxCode { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置货物或应税劳务或服务名称。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("goods_name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("goods_name")]
|
||||
public string GoodsName { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置税率(单位:万分数)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_rate")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_rate")]
|
||||
public int TaxRate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置税收优惠政策标识。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("tax_prefer_mark")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("tax_prefer_mark")]
|
||||
public string TaxPreferMark { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置商品和服务税收分类对照信息列表。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("data")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("data")]
|
||||
public Types.Tax[] TaxList { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置分页起始位置。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("offset")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("offset")]
|
||||
public int Offset { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置分页每页数量。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("limit")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("limit")]
|
||||
public int Limit { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置总数量。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("total_count")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("total_count")]
|
||||
public int TotalCount { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /new-tax-control-fapiao/user-title 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class GetNewTaxControlFapiaoUserTitleRequest : WechatTenpayRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置发票申请单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string FapiaoApplyId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置开票场景。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string Scene { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /new-tax-control-fapiao/user-title 接口的响应。</para>
|
||||
/// </summary>
|
||||
[WechatTenpaySensitive]
|
||||
public class GetNewTaxControlFapiaoUserTitleResponse : WechatTenpayResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置购买方类型。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("type")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("type")]
|
||||
public string Type { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置购买方名称。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("name")]
|
||||
public string Name { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置纳税人识别号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("taxpayer_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("taxpayer_id")]
|
||||
public string? TaxpayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("address")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("address")]
|
||||
public string? Address { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置电话。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("telephone")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("telephone")]
|
||||
public string? PhoneNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置开户银行。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("bank_name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("bank_name")]
|
||||
public string? BankName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置银行账号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("bank_account")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("bank_account")]
|
||||
public string? BankAccountNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置用户手机号码。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("phone")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("phone")]
|
||||
[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? UserMobileNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置用户邮箱地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("email")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("email")]
|
||||
[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? UserEmail { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /new-tax-control-fapiao/user-title/title-url 接口的请求。</para>
|
||||
/// </summary>
|
||||
public class GetNewTaxControlFapiaoUserTitleUrlRequest : WechatTenpayRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置发票申请单号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string FapiaoApplyId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置开票来源。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string Source { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置总金额(单位:分)。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public int TotalAmount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置开票来源微信 AppId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string AppId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置用户唯一标识。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string OpenId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置销售方名称。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public string? SellerName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置是否需要展示手机号填写栏。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public bool? RequireShowMobileCell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置是否必须填写手机号。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public bool? RequireMustInputMobile { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置是否需要展示邮箱地址填写栏。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public bool? RequireShowEmailCell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置是否必须填写邮箱地址。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonIgnore]
|
||||
[System.Text.Json.Serialization.JsonIgnore]
|
||||
public bool? RequireMustInputEmail { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
{
|
||||
/// <summary>
|
||||
/// <para>表示 [GET] /new-tax-control-fapiao/user-title/title-url 接口的响应。</para>
|
||||
/// </summary>
|
||||
public class GetNewTaxControlFapiaoUserTitleUrlResponse : WechatTenpayResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置小程序 AppId。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("miniprogram_appid")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("miniprogram_appid")]
|
||||
public string MiniProgramAppId { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置小程序页面路径。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("miniprogram_path")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("miniprogram_path")]
|
||||
public string MiniProgramPagePath { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置小程序用户名。
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("miniprogram_user_name")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("miniprogram_user_name")]
|
||||
public string? MiniProgramUsername { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("taxpayer_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("taxpayer_id")]
|
||||
public string? TaxPayerId { get; set; }
|
||||
public string? TaxpayerId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置地址。
|
||||
@@ -80,7 +80,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("taxpayer_id")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("taxpayer_id")]
|
||||
public string TaxPayerId { get; set; } = string.Empty;
|
||||
public string TaxpayerId { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置地址。
|
||||
@@ -135,7 +135,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
public string Drawer { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
public class LineItem
|
||||
public class Item
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置货物或应税劳务或服务编码。
|
||||
@@ -315,7 +315,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
|
||||
/// </summary>
|
||||
[Newtonsoft.Json.JsonProperty("items")]
|
||||
[System.Text.Json.Serialization.JsonPropertyName("items")]
|
||||
public IList<Types.LineItem>? LineItemList { get; set; }
|
||||
public IList<Types.Item>? ItemList { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置备注信息。
|
||||
|
||||
@@ -120,12 +120,12 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
|
||||
public virtual Dictionary<string, object>? ErrorDetail { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取一个值,该值指示调用微信 API 是否成功(即 HTTP 状态码为 200 或 204、且 code 值为空)。
|
||||
/// 获取一个值,该值指示调用微信 API 是否成功(即 HTTP 状态码为 200/202/204、且 code 值为空)。
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public virtual bool IsSuccessful()
|
||||
{
|
||||
return (RawStatus == 200 || RawStatus == 204) && string.IsNullOrEmpty(ErrorCode);
|
||||
return (RawStatus >= 200 && RawStatus <= 204) && string.IsNullOrEmpty(ErrorCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user