diff --git a/docs/WechatTenpayV3/Basic_ModelDefinition.md b/docs/WechatTenpayV3/Basic_ModelDefinition.md index b0f95ab8..050f114b 100644 --- a/docs/WechatTenpayV3/Basic_ModelDefinition.md +++ b/docs/WechatTenpayV3/Basic_ModelDefinition.md @@ -45,6 +45,7 @@ | × | 运营工具:转账到银行卡 | 直连商户 & 合作伙伴 | 官方未提供 v3 API | | √ | 经营能力:微信支付分 | 直连商户 & 合作伙伴 | | | √ | 经营能力:微信支付分停车 | 直连商户 & 合作伙伴 | | +| √ | 经营能力:微信支付分签约计划 | 直连商户 & 合作伙伴 | | | √ | 经营能力:平台收付通 | 合作伙伴 | | | √ | 运营工具:代金券 | 直连商户 & 合作伙伴 | | | √ | 运营工具:商家券 | 直连商户 & 合作伙伴 | | @@ -258,6 +259,28 @@ - 查询订单:`GetVehicleTransactionByOutTradeNumber` + - 微信支付分签约计划 + + - 支付分计划操作 + + - 创建支付分计划:`CreatePayScorePlan` + + - 查询支付分计划:`GetPayScorePlanByOutPlanNumber` + + - 停止支付分计划:`StopPayScorePlan` + + - 签约计划详情对应的服务订单 + + - 创建用户的签约计划详情对应的服务订单:`CreatePayScoreSignPlanServiceOrder` + + - 管理签约计划 + + - 创建用户的签约计划:`CreatePayScoreSignPlanUserSignPlan` + + - 查询用户的签约计划:`GetPayScoreSignPlanUserSignPlanByOutSignPlanNumber` + + - 停止用户的签约计划:`StopPayScoreSignPlanUserSignPlan` + - 代金券 - 创建代金券批次:`CreateMarketingFavorStock` @@ -740,6 +763,28 @@ - 查询订单:`GetVehicleTransactionByOutTradeNumber` + - 微信支付分签约计划 + + - 支付分计划操作 + + - 创建支付分计划:`CreatePayScorePartnerPlan` + + - 查询支付分计划:`GetPayScorePartnerPlanByOutPlanNumber` + + - 停止支付分计划:`StopPayScorePartnerPlan` + + - 签约计划详情对应的服务订单 + + - 创建用户的签约计划详情对应的服务订单:`CreatePayScorePartnerSignPlanServiceOrder` + + - 管理签约计划 + + - 创建用户的签约计划:`CreatePayScorePartnerSignPlanUserSignPlan` + + - 查询用户的签约计划:`GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumber` + + - 停止用户的签约计划:`StopPayScorePartnerSignPlanUserSignPlan` + - 平台收付通(商户进件) - 二级商户进件:`CreateEcommerceApplyment` diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PayScore/PayScoreUserSignPlanResource.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PayScore/PayScoreUserSignPlanResource.cs new file mode 100644 index 00000000..43bfac01 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PayScore/PayScoreUserSignPlanResource.cs @@ -0,0 +1,168 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events +{ + /// + /// 表示 PAYSCORE.USER_SIGN_PLAN(针对直连商户)通知的数据。 + /// + /// REF:
+ ///
+ /// + ///
+ ///
+ public class PayScoreUserSignPlanResource : WechatTenpayEvent.Types.IDecryptedResource + { + public static class Types + { + public class SignPlanDetail : Models.GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse.Types.SignPlanDetail + { + } + } + + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = default!; + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置支付分计划 ID。 + /// + [Newtonsoft.Json.JsonProperty("plan_id")] + [System.Text.Json.Serialization.JsonPropertyName("plan_id")] + public string PlanId { get; set; } = default!; + + /// + /// 获取或设置计划名称。 + /// + [Newtonsoft.Json.JsonProperty("plan_name")] + [System.Text.Json.Serialization.JsonPropertyName("plan_name")] + public string PlanName { get; set; } = default!; + + /// + /// 获取或设置服务 ID。 + /// + [Newtonsoft.Json.JsonProperty("service_id")] + [System.Text.Json.Serialization.JsonPropertyName("service_id")] + public string ServiceId { get; set; } = default!; + + /// + /// 获取或设置商户签约计划单号。 + /// + [Newtonsoft.Json.JsonProperty("merchant_sign_plan_no")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_sign_plan_no")] + public string OutSignPlanNumber { get; set; } = default!; + + /// + /// 获取或设置签约计划 ID。 + /// + [Newtonsoft.Json.JsonProperty("sign_plan_id")] + [System.Text.Json.Serialization.JsonPropertyName("sign_plan_id")] + public string SignPlanId { get; set; } = default!; + + /// + /// 获取或设置计划状态。 + /// + [Newtonsoft.Json.JsonProperty("sign_state")] + [System.Text.Json.Serialization.JsonPropertyName("sign_state")] + public string SignState { get; set; } = default!; + + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("merchant_callback_url")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_callback_url")] + public string? NotifyUrl { get; set; } + + /// + /// 获取或设置目前用户进行到的计划明细序号。 + /// + [Newtonsoft.Json.JsonProperty("going_detail_no")] + [System.Text.Json.Serialization.JsonPropertyName("going_detail_no")] + public int GoingDetailNumber { get; set; } + + /// + /// 获取或设置计划过期时间。 + /// + [Newtonsoft.Json.JsonProperty("plan_over_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("plan_over_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset PlanOverTime { get; set; } + + /// + /// 获取或设置扣费次数。 + /// + [Newtonsoft.Json.JsonProperty("deduction_quantity")] + [System.Text.Json.Serialization.JsonPropertyName("deduction_quantity")] + public int DeductionQuantity { get; set; } + + /// + /// 获取或设置原总金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total_origin_price")] + [System.Text.Json.Serialization.JsonPropertyName("total_origin_price")] + public int TotalOriginalPrice { get; set; } + + /// + /// 获取或设置实际总金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total_actual_price")] + [System.Text.Json.Serialization.JsonPropertyName("total_actual_price")] + public int TotalActualPrice { get; set; } + + /// + /// 获取或设置签约时间。 + /// + [Newtonsoft.Json.JsonProperty("sign_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("sign_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? SignTime { get; set; } + + /// + /// 获取或设置取消类型。 + /// + [Newtonsoft.Json.JsonProperty("cancel_sign_type")] + [System.Text.Json.Serialization.JsonPropertyName("cancel_sign_type")] + public string? CancelType { get; set; } + + /// + /// 获取或设置取消原因。 + /// + [Newtonsoft.Json.JsonProperty("cancel_reason")] + [System.Text.Json.Serialization.JsonPropertyName("cancel_reason")] + public string? CancelReason { get; set; } + + /// + /// 获取或设置取消时间。 + /// + [Newtonsoft.Json.JsonProperty("cancel_sign_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("cancel_sign_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? CancelTime { get; set; } + + /// + /// 获取或设置签约计划明细列表。 + /// + [Newtonsoft.Json.JsonProperty("signed_detail_list")] + [System.Text.Json.Serialization.JsonPropertyName("signed_detail_list")] + public Types.SignPlanDetail[]? SignPlanDetailList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/PayScore/PayScorePartnerUserSignPlanResource.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/PayScore/PayScorePartnerUserSignPlanResource.cs new file mode 100644 index 00000000..5c08aed0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/_Partner/PayScore/PayScorePartnerUserSignPlanResource.cs @@ -0,0 +1,189 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events +{ + /// + /// 表示 PAYSCORE.USER_SIGN_PLAN(针对服务商)通知的数据。 + /// + /// REF:
+ ///
+ /// + ///
+ ///
+ public class PayScorePartnerUserSignPlanResource : WechatTenpayEvent.Types.IDecryptedResource + { + public static class Types + { + public class SignPlanDetail : Models.GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberResponse.Types.SignPlanDetail + { + } + } + + /// + /// 获取或设置微信商户号。 + /// + [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; } = default!; + + /// + /// 获取或设置微信 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; } + + /// + /// 获取或设置支付分计划 ID。 + /// + [Newtonsoft.Json.JsonProperty("plan_id")] + [System.Text.Json.Serialization.JsonPropertyName("plan_id")] + public string PlanId { get; set; } = default!; + + /// + /// 获取或设置计划名称。 + /// + [Newtonsoft.Json.JsonProperty("plan_name")] + [System.Text.Json.Serialization.JsonPropertyName("plan_name")] + public string PlanName { get; set; } = default!; + + /// + /// 获取或设置服务 ID。 + /// + [Newtonsoft.Json.JsonProperty("service_id")] + [System.Text.Json.Serialization.JsonPropertyName("service_id")] + public string ServiceId { get; set; } = default!; + + /// + /// 获取或设置商户签约计划单号。 + /// + [Newtonsoft.Json.JsonProperty("merchant_sign_plan_no")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_sign_plan_no")] + public string OutSignPlanNumber { get; set; } = default!; + + /// + /// 获取或设置签约计划 ID。 + /// + [Newtonsoft.Json.JsonProperty("sign_plan_id")] + [System.Text.Json.Serialization.JsonPropertyName("sign_plan_id")] + public string SignPlanId { get; set; } = default!; + + /// + /// 获取或设置计划状态。 + /// + [Newtonsoft.Json.JsonProperty("sign_state")] + [System.Text.Json.Serialization.JsonPropertyName("sign_state")] + public string SignState { get; set; } = default!; + + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置用户在子商户下的唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("sub_openid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_openid")] + public string? SubOpenId { get; set; } + + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("merchant_callback_url")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_callback_url")] + public string? NotifyUrl { get; set; } + + /// + /// 获取或设置目前用户进行到的计划明细序号。 + /// + [Newtonsoft.Json.JsonProperty("going_detail_no")] + [System.Text.Json.Serialization.JsonPropertyName("going_detail_no")] + public int GoingDetailNumber { get; set; } + + /// + /// 获取或设置计划过期时间。 + /// + [Newtonsoft.Json.JsonProperty("plan_over_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("plan_over_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset PlanOverTime { get; set; } + + /// + /// 获取或设置扣费次数。 + /// + [Newtonsoft.Json.JsonProperty("deduction_quantity")] + [System.Text.Json.Serialization.JsonPropertyName("deduction_quantity")] + public int DeductionQuantity { get; set; } + + /// + /// 获取或设置原总金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total_origin_price")] + [System.Text.Json.Serialization.JsonPropertyName("total_origin_price")] + public int TotalOriginalPrice { get; set; } + + /// + /// 获取或设置实际总金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total_actual_price")] + [System.Text.Json.Serialization.JsonPropertyName("total_actual_price")] + public int TotalActualPrice { get; set; } + + /// + /// 获取或设置签约时间。 + /// + [Newtonsoft.Json.JsonProperty("sign_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("sign_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? SignTime { get; set; } + + /// + /// 获取或设置取消类型。 + /// + [Newtonsoft.Json.JsonProperty("cancel_sign_type")] + [System.Text.Json.Serialization.JsonPropertyName("cancel_sign_type")] + public string? CancelType { get; set; } + + /// + /// 获取或设置取消原因。 + /// + [Newtonsoft.Json.JsonProperty("cancel_reason")] + [System.Text.Json.Serialization.JsonPropertyName("cancel_reason")] + public string? CancelReason { get; set; } + + /// + /// 获取或设置取消时间。 + /// + [Newtonsoft.Json.JsonProperty("cancel_sign_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("cancel_sign_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? CancelTime { get; set; } + + /// + /// 获取或设置签约计划明细列表。 + /// + [Newtonsoft.Json.JsonProperty("signed_detail_list")] + [System.Text.Json.Serialization.JsonPropertyName("signed_detail_list")] + public Types.SignPlanDetail[]? SignPlanDetailList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayScoreExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayScoreExtensions.cs index 70611a41..a7bd95f6 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayScoreExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayScoreExtensions.cs @@ -124,6 +124,74 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 } #endregion + #region Plan + /// + /// 异步调用 [POST] /payscore/plan/payscore-plans 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCreatePayScorePlanAsync(this WechatTenpayClient client, Models.CreatePayScorePlanRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "payscore", "plan", "payscore-plans"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /payscore/plan/payscore-plans/merchant-plan-no/{merchant_plan_no} 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteGetPayScorePlanByOutPlanNumberAsync(this WechatTenpayClient client, Models.GetPayScorePlanByOutPlanNumberRequest 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 + .CreateFlurlRequest(request, HttpMethod.Get, "payscore", "plan", "payscore-plans", "merchant-plan-no", request.OutPlanNumber); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /payscore/plan/payscore-plans/merchant-plan-no/{merchant_plan_no}/stop 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteStopPayScorePlanAsync(this WechatTenpayClient client, Models.StopPayScorePlanRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "payscore", "plan", "payscore-plans", "merchant-plan-no", request.OutPlanNumber, "stop"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + #region ServiceOrder /// /// 异步调用 [POST] /payscore/serviceorder/direct-complete 接口。 @@ -329,5 +397,95 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } #endregion + + #region SignPlan + /// + /// 异步调用 [POST] /payscore/sign-plan/serviceorder 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCreatePayScoreSignPlanServiceOrderAsync(this WechatTenpayClient client, Models.CreatePayScoreSignPlanServiceOrderRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "payscore", "sign-plan", "serviceorder"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /payscore/sign-plan/user-sign-plans 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCreatePayScoreSignPlanUserSignPlanAsync(this WechatTenpayClient client, Models.CreatePayScoreSignPlanUserSignPlanRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "payscore", "sign-plan", "user-sign-plans"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /payscore/sign-plan/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no} 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteGetPayScoreSignPlanUserSignPlanByOutSignPlanNumberAsync(this WechatTenpayClient client, Models.GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberRequest 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 + .CreateFlurlRequest(request, HttpMethod.Get, "payscore", "sign-plan", "user-sign-plans", "merchant-sign-plan-no", request.OutSignPlanNumber); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /payscore/sign-plan/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no}/stop 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteStopPayScoreSignPlanUserSignPlanAsync(this WechatTenpayClient client, Models.StopPayScoreSignPlanUserSignPlanRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "payscore", "sign-plan", "user-sign-plans", "merchant-sign-plan-no", request.OutSignPlanNumber, "stop"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayScorePartnerExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayScorePartnerExtensions.cs index 51ab6aed..747fe4e8 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayScorePartnerExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePayScorePartnerExtensions.cs @@ -133,6 +133,75 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 } #endregion + #region Plan + /// + /// 异步调用 [POST] /payscore/plan/partner/payscore-plans 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCreatePayScorePartnerPlanAsync(this WechatTenpayClient client, Models.CreatePayScorePartnerPlanRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "payscore", "plan", "partner", "payscore-plans"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /payscore/plan/partner/payscore-plans/merchant-plan-no/{merchant_plan_no} 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteGetPayScorePartnerPlanByOutPlanNumberAsync(this WechatTenpayClient client, Models.GetPayScorePartnerPlanByOutPlanNumberRequest 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 + .CreateFlurlRequest(request, HttpMethod.Get, "payscore", "plan", "partner", "payscore-plans", "merchant-plan-no", request.OutPlanNumber) + .SetQueryParam("sub_mchid", request.SubMerchantId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /payscore/plan/partner/payscore-plans/merchant-plan-no/{merchant_plan_no}/stop 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteStopPayScorePartnerPlanAsync(this WechatTenpayClient client, Models.StopPayScorePartnerPlanRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "payscore", "plan", "partner", "payscore-plans", "merchant-plan-no", request.OutPlanNumber, "stop"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion + #region ServiceOrder /// /// 异步调用 [POST] /payscore/partner/serviceorder 接口。 @@ -344,5 +413,96 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); } #endregion + + #region SignPlan + /// + /// 异步调用 [POST] /payscore/sign-plan/partner/serviceorder 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCreatePayScorePartnerSignPlanServiceOrderAsync(this WechatTenpayClient client, Models.CreatePayScorePartnerSignPlanServiceOrderRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "payscore", "sign-plan", "partner", "serviceorder"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /payscore/sign-plan/partner/user-sign-plans 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteCreatePayScorePartnerSignPlanUserSignPlanAsync(this WechatTenpayClient client, Models.CreatePayScorePartnerSignPlanUserSignPlanRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "payscore", "sign-plan", "partner", "user-sign-plans"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [GET] /payscore/sign-plan/partner/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no} 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteGetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberAsync(this WechatTenpayClient client, Models.GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberRequest 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 + .CreateFlurlRequest(request, HttpMethod.Get, "payscore", "sign-plan", "partner", "user-sign-plans", "merchant-sign-plan-no", request.OutSignPlanNumber) + .SetQueryParam("sub_mchid", request.SubMerchantId); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + /// + /// 异步调用 [POST] /payscore/sign-plan/partner/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no}/stop 接口。 + /// + /// REF:
+ /// + ///
+ ///
+ /// + /// + /// + /// + public static async Task ExecuteStopPayScorePartnerSignPlanUserSignPlanAsync(this WechatTenpayClient client, Models.StopPayScorePartnerSignPlanUserSignPlanRequest 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 + .CreateFlurlRequest(request, HttpMethod.Post, "payscore", "sign-plan", "partner", "user-sign-plans", "merchant-sign-plan-no", request.OutSignPlanNumber, "stop"); + + return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false); + } + #endregion } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/CreatePayScorePlanRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/CreatePayScorePlanRequest.cs new file mode 100644 index 00000000..d935ed35 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/CreatePayScorePlanRequest.cs @@ -0,0 +1,107 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/plan/payscore-plans 接口的请求。 + /// + public class CreatePayScorePlanRequest : WechatTenpayRequest + { + public static class Types + { + public class PlanDetail + { + /// + /// 获取或设置明细名称。 + /// + [Newtonsoft.Json.JsonProperty("plan_detail_name")] + [System.Text.Json.Serialization.JsonPropertyName("plan_detail_name")] + public string DetailName { get; set; } = string.Empty; + + /// + /// 获取或设置优惠说明。 + /// + [Newtonsoft.Json.JsonProperty("plan_discount_description")] + [System.Text.Json.Serialization.JsonPropertyName("plan_discount_description")] + public string? DiscountDescription { get; set; } + + /// + /// 获取或设置原支付金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("original_price")] + [System.Text.Json.Serialization.JsonPropertyName("original_price")] + public int OriginalPrice { get; set; } + + /// + /// 获取或设置实际支付金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("actual_price")] + [System.Text.Json.Serialization.JsonPropertyName("actual_price")] + public int ActualPrice { get; set; } + } + } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置商户计划号。 + /// + [Newtonsoft.Json.JsonProperty("merchant_plan_no")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_plan_no")] + public string OutPlanNumber { get; set; } = string.Empty; + + /// + /// 获取或设置服务 ID。 + /// + [Newtonsoft.Json.JsonProperty("service_id")] + [System.Text.Json.Serialization.JsonPropertyName("service_id")] + public string ServiceId { get; set; } = string.Empty; + + /// + /// 获取或设置计划名称。 + /// + [Newtonsoft.Json.JsonProperty("plan_name")] + [System.Text.Json.Serialization.JsonPropertyName("plan_name")] + public string PlanName { get; set; } = string.Empty; + + /// + /// 获取或设置计划有效期(单位:天)。 + /// + [Newtonsoft.Json.JsonProperty("plan_duration")] + [System.Text.Json.Serialization.JsonPropertyName("plan_duration")] + public int PlanDuration { get; set; } + + /// + /// 获取或设置扣费次数。 + /// + [Newtonsoft.Json.JsonProperty("deduction_quantity")] + [System.Text.Json.Serialization.JsonPropertyName("deduction_quantity")] + public int DeductionQuantity { get; set; } + + /// + /// 获取或设置原总金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total_original_price")] + [System.Text.Json.Serialization.JsonPropertyName("total_original_price")] + public int TotalOriginalPrice { get; set; } + + /// + /// 获取或设置实际总金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total_actual_price")] + [System.Text.Json.Serialization.JsonPropertyName("total_actual_price")] + public int TotalActualPrice { get; set; } + + /// + /// 获取或设置计划明细列表。 + /// + [Newtonsoft.Json.JsonProperty("plan_detail_list")] + [System.Text.Json.Serialization.JsonPropertyName("plan_detail_list")] + public IList? PlanDetailList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/CreatePayScorePlanResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/CreatePayScorePlanResponse.cs new file mode 100644 index 00000000..2bd6965b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/CreatePayScorePlanResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/plan/payscore-plans 接口的响应。 + /// + public class CreatePayScorePlanResponse : GetPayScorePlanByOutPlanNumberResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/GetPayScorePlanByOutPlanNumberRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/GetPayScorePlanByOutPlanNumberRequest.cs new file mode 100644 index 00000000..a59436be --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/GetPayScorePlanByOutPlanNumberRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /payscore/plan/payscore-plans/merchant-plan-no/{merchant_plan_no} 接口的请求。 + /// + public class GetPayScorePlanByOutPlanNumberRequest : WechatTenpayRequest + { + /// + /// 获取或设置商户计划号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string OutPlanNumber { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/GetPayScorePlanByOutPlanNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/GetPayScorePlanByOutPlanNumberResponse.cs new file mode 100644 index 00000000..e888bca2 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/GetPayScorePlanByOutPlanNumberResponse.cs @@ -0,0 +1,151 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /payscore/plan/payscore-plans/merchant-plan-no/{merchant_plan_no} 接口的响应。 + /// + public class GetPayScorePlanByOutPlanNumberResponse : WechatTenpayResponse + { + public static class Types + { + public class PlanDetail + { + /// + /// 获取或设置明细序号。 + /// + [Newtonsoft.Json.JsonProperty("plan_detail_no")] + [System.Text.Json.Serialization.JsonPropertyName("plan_detail_no")] + public int DetailNumber { get; set; } = default!; + + /// + /// 获取或设置明细名称。 + /// + [Newtonsoft.Json.JsonProperty("plan_detail_name")] + [System.Text.Json.Serialization.JsonPropertyName("plan_detail_name")] + public string DetailName { get; set; } = default!; + + /// + /// 获取或设置优惠说明。 + /// + [Newtonsoft.Json.JsonProperty("plan_discount_description")] + [System.Text.Json.Serialization.JsonPropertyName("plan_discount_description")] + public string? DiscountDescription { get; set; } + + /// + /// 获取或设置原支付金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("original_price")] + [System.Text.Json.Serialization.JsonPropertyName("original_price")] + public int OriginalPrice { get; set; } + + /// + /// 获取或设置实际支付金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("actual_price")] + [System.Text.Json.Serialization.JsonPropertyName("actual_price")] + public int ActualPrice { get; set; } + } + } + + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = default!; + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置商户计划号。 + /// + [Newtonsoft.Json.JsonProperty("merchant_plan_no")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_plan_no")] + public string OutPlanNumber { get; set; } = default!; + + /// + /// 获取或设置支付分计划 ID。 + /// + [Newtonsoft.Json.JsonProperty("plan_id")] + [System.Text.Json.Serialization.JsonPropertyName("plan_id")] + public string PlanId { get; set; } = default!; + + /// + /// 获取或设置服务 ID。 + /// + [Newtonsoft.Json.JsonProperty("service_id")] + [System.Text.Json.Serialization.JsonPropertyName("service_id")] + public string ServiceId { get; set; } = default!; + + /// + /// 获取或设置计划名称。 + /// + [Newtonsoft.Json.JsonProperty("plan_name")] + [System.Text.Json.Serialization.JsonPropertyName("plan_name")] + public string PlanName { get; set; } = default!; + + /// + /// 获取或设置计划有效期(单位:天)。 + /// + [Newtonsoft.Json.JsonProperty("plan_duration")] + [System.Text.Json.Serialization.JsonPropertyName("plan_duration")] + public int PlanDuration { get; set; } + + /// + /// 获取或设置计划状态。 + /// + [Newtonsoft.Json.JsonProperty("plan_state")] + [System.Text.Json.Serialization.JsonPropertyName("plan_state")] + public string PlanState { get; set; } = default!; + + /// + /// 获取或设置扣费次数。 + /// + [Newtonsoft.Json.JsonProperty("deduction_quantity")] + [System.Text.Json.Serialization.JsonPropertyName("deduction_quantity")] + public int DeductionQuantity { get; set; } + + /// + /// 获取或设置原总金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total_original_price")] + [System.Text.Json.Serialization.JsonPropertyName("total_original_price")] + public int TotalOriginalPrice { get; set; } + + /// + /// 获取或设置实际总金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total_actual_price")] + [System.Text.Json.Serialization.JsonPropertyName("total_actual_price")] + public int TotalActualPrice { get; set; } + + /// + /// 获取或设置计划明细列表。 + /// + [Newtonsoft.Json.JsonProperty("plan_detail_list")] + [System.Text.Json.Serialization.JsonPropertyName("plan_detail_list")] + public Types.PlanDetail[]? PlanDetailList { get; set; } + + /// + /// 获取或设置终止方商户号。 + /// + [Newtonsoft.Json.JsonProperty("stop_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("stop_mchid")] + public string? StopMerchantId { get; set; } + + /// + /// 获取或设置终止时间。 + /// + [Newtonsoft.Json.JsonProperty("stop_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("stop_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? StopTime { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/StopPayScorePlanRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/StopPayScorePlanRequest.cs new file mode 100644 index 00000000..ff546217 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/StopPayScorePlanRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/plan/payscore-plans/merchant-plan-no/{merchant_plan_no}/stop 接口的请求。 + /// + public class StopPayScorePlanRequest : WechatTenpayRequest + { + /// + /// 获取或设置商户计划号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string OutPlanNumber { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/StopPayScorePlanResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/StopPayScorePlanResponse.cs new file mode 100644 index 00000000..5185e89e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/Plan/StopPayScorePlanResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/plan/payscore-plans/merchant-plan-no/{merchant_plan_no}/stop 接口的响应。 + /// + public class StopPayScorePlanResponse : GetPayScorePlanByOutPlanNumberResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/ServiceOrder/CreatePayScoreServiceOrderRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/ServiceOrder/CreatePayScoreServiceOrderRequest.cs index 5461e135..1cdc1ae1 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/ServiceOrder/CreatePayScoreServiceOrderRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/ServiceOrder/CreatePayScoreServiceOrderRequest.cs @@ -109,14 +109,14 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models ///
[Newtonsoft.Json.JsonProperty("start_location")] [System.Text.Json.Serialization.JsonPropertyName("start_location")] - public string StartLocation { get; set; } = string.Empty; + public string? StartLocation { get; set; } /// /// 获取或设置服务结束地点。 /// [Newtonsoft.Json.JsonProperty("end_location")] [System.Text.Json.Serialization.JsonPropertyName("end_location")] - public string EndLocation { get; set; } = string.Empty; + public string? EndLocation { get; set; } } public class RiskFund diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/CreatePayScoreSignPlanServiceOrderRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/CreatePayScoreSignPlanServiceOrderRequest.cs new file mode 100644 index 00000000..06806df0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/CreatePayScoreSignPlanServiceOrderRequest.cs @@ -0,0 +1,96 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/sign-plan/serviceorder 接口的请求。 + /// + public class CreatePayScoreSignPlanServiceOrderRequest : WechatTenpayRequest + { + public static class Types + { + public class TimeRange : CreatePayScoreServiceOrderRequest.Types.TimeRange + { + } + + public class Location : CreatePayScoreServiceOrderRequest.Types.Location + { + } + } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置待签约支付分计划 ID。 + /// + [Newtonsoft.Json.JsonProperty("sign_plan_id")] + [System.Text.Json.Serialization.JsonPropertyName("sign_plan_id")] + public string SignPlanId { get; set; } = string.Empty; + + /// + /// 获取或设置签约计划明细序号。 + /// + [Newtonsoft.Json.JsonProperty("plan_detail_no")] + [System.Text.Json.Serialization.JsonPropertyName("plan_detail_no")] + public int PlanDetailNumber { get; set; } + + /// + /// 获取或设置服务 ID。 + /// + [Newtonsoft.Json.JsonProperty("service_id")] + [System.Text.Json.Serialization.JsonPropertyName("service_id")] + public string ServiceId { get; set; } = string.Empty; + + /// + /// 获取或设置服务信息。 + /// + [Newtonsoft.Json.JsonProperty("service_introduction")] + [System.Text.Json.Serialization.JsonPropertyName("service_introduction")] + public string ServiceInstruction { get; set; } = string.Empty; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = string.Empty; + + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string? NotifyUrl { get; set; } + + /// + /// 获取或设置服务时间段信息。 + /// + [Newtonsoft.Json.JsonProperty("time_range")] + [System.Text.Json.Serialization.JsonPropertyName("time_range")] + public Types.TimeRange TimeRange { get; set; } = new Types.TimeRange(); + + /// + /// 获取或设置服务位置信息。 + /// + [Newtonsoft.Json.JsonProperty("location")] + [System.Text.Json.Serialization.JsonPropertyName("location")] + public Types.Location? Location { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/CreatePayScoreSignPlanServiceOrderResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/CreatePayScoreSignPlanServiceOrderResponse.cs new file mode 100644 index 00000000..163373bf --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/CreatePayScoreSignPlanServiceOrderResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/sign-plan/serviceorder 接口的响应。 + /// + public class CreatePayScoreSignPlanServiceOrderResponse : GetPayScoreServiceOrderByOutOrderNumberResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/CreatePayScoreSignPlanUserSignPlanRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/CreatePayScoreSignPlanUserSignPlanRequest.cs new file mode 100644 index 00000000..08a624cd --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/CreatePayScoreSignPlanUserSignPlanRequest.cs @@ -0,0 +1,79 @@ +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/sign-plan/user-sign-plans 接口的请求。 + /// + public class CreatePayScoreSignPlanUserSignPlanRequest : WechatTenpayRequest + { + public static class Types + { + public class SignPlanDetail + { + /// + /// 获取或设置计划明细序号。 + /// + [Newtonsoft.Json.JsonProperty("plan_detail_no")] + [System.Text.Json.Serialization.JsonPropertyName("plan_detail_no")] + public int PlanDetailNumber { get; set; } + + /// + /// 获取或设置商户计划明细使用订单号。 + /// + [Newtonsoft.Json.JsonProperty("merchant_plan_detail_no")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_plan_detail_no")] + public string OutPlanDetailNumber { get; set; } = string.Empty; + } + } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置支付分计划 ID。 + /// + [Newtonsoft.Json.JsonProperty("plan_id")] + [System.Text.Json.Serialization.JsonPropertyName("plan_id")] + public string PlanId { get; set; } = string.Empty; + + /// + /// 获取或设置服务 ID。 + /// + [Newtonsoft.Json.JsonProperty("service_id")] + [System.Text.Json.Serialization.JsonPropertyName("service_id")] + public string ServiceId { get; set; } = string.Empty; + + /// + /// 获取或设置商户签约计划单号。 + /// + [Newtonsoft.Json.JsonProperty("merchant_sign_plan_no")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_sign_plan_no")] + public string OutSignPlanNumber { get; set; } = string.Empty; + + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = string.Empty; + + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string? NotifyUrl { get; set; } + + /// + /// 获取或设置签约计划明细列表。 + /// + [Newtonsoft.Json.JsonProperty("sign_plan_detail")] + [System.Text.Json.Serialization.JsonPropertyName("sign_plan_detail")] + public IList? SignPlanDetailList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/CreatePayScoreSignPlanUserSignPlanResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/CreatePayScoreSignPlanUserSignPlanResponse.cs new file mode 100644 index 00000000..286e0541 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/CreatePayScoreSignPlanUserSignPlanResponse.cs @@ -0,0 +1,183 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/sign-plan/user-sign-plans 接口的响应。 + /// + public class CreatePayScoreSignPlanUserSignPlanResponse : WechatTenpayResponse + { + public static class Types + { + public class SignPlan + { + public static class Types + { + public class SignPlanDetail : GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse.Types.SignPlanDetail + { + } + } + + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = default!; + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置支付分计划 ID。 + /// + [Newtonsoft.Json.JsonProperty("plan_id")] + [System.Text.Json.Serialization.JsonPropertyName("plan_id")] + public string PlanId { get; set; } = default!; + + /// + /// 获取或设置计划名称。 + /// + [Newtonsoft.Json.JsonProperty("plan_name")] + [System.Text.Json.Serialization.JsonPropertyName("plan_name")] + public string PlanName { get; set; } = default!; + + /// + /// 获取或设置服务 ID。 + /// + [Newtonsoft.Json.JsonProperty("service_id")] + [System.Text.Json.Serialization.JsonPropertyName("service_id")] + public string ServiceId { get; set; } = default!; + + /// + /// 获取或设置商户签约计划单号。 + /// + [Newtonsoft.Json.JsonProperty("merchant_sign_plan_no")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_sign_plan_no")] + public string OutSignPlanNumber { get; set; } = default!; + + /// + /// 获取或设置签约计划 ID。 + /// + [Newtonsoft.Json.JsonProperty("sign_plan_id")] + [System.Text.Json.Serialization.JsonPropertyName("sign_plan_id")] + public string SignPlanId { get; set; } = default!; + + /// + /// 获取或设置计划状态。 + /// + [Newtonsoft.Json.JsonProperty("sign_state")] + [System.Text.Json.Serialization.JsonPropertyName("sign_state")] + public string SignState { get; set; } = default!; + + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("merchant_callback_url")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_callback_url")] + public string? NotifyUrl { get; set; } + + /// + /// 获取或设置目前用户进行到的计划明细序号。 + /// + [Newtonsoft.Json.JsonProperty("going_detail_no")] + [System.Text.Json.Serialization.JsonPropertyName("going_detail_no")] + public int GoingDetailNumber { get; set; } + + /// + /// 获取或设置计划过期时间。 + /// + [Newtonsoft.Json.JsonProperty("plan_over_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("plan_over_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset PlanOverTime { get; set; } + + /// + /// 获取或设置扣费次数。 + /// + [Newtonsoft.Json.JsonProperty("deduction_quantity")] + [System.Text.Json.Serialization.JsonPropertyName("deduction_quantity")] + public int DeductionQuantity { get; set; } + + /// + /// 获取或设置原总金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total_origin_price")] + [System.Text.Json.Serialization.JsonPropertyName("total_origin_price")] + public int TotalOriginalPrice { get; set; } + + /// + /// 获取或设置实际总金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total_actual_price")] + [System.Text.Json.Serialization.JsonPropertyName("total_actual_price")] + public int TotalActualPrice { get; set; } + + /// + /// 获取或设置签约时间。 + /// + [Newtonsoft.Json.JsonProperty("sign_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("sign_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? SignTime { get; set; } + + /// + /// 获取或设置取消类型。 + /// + [Newtonsoft.Json.JsonProperty("cancel_sign_type")] + [System.Text.Json.Serialization.JsonPropertyName("cancel_sign_type")] + public string? CancelType { get; set; } + + /// + /// 获取或设置取消原因。 + /// + [Newtonsoft.Json.JsonProperty("cancel_reason")] + [System.Text.Json.Serialization.JsonPropertyName("cancel_reason")] + public string? CancelReason { get; set; } + + /// + /// 获取或设置取消时间。 + /// + [Newtonsoft.Json.JsonProperty("cancel_sign_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("cancel_sign_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? CancelTime { get; set; } + + /// + /// 获取或设置签约计划明细列表。 + /// + [Newtonsoft.Json.JsonProperty("signed_detail_list")] + [System.Text.Json.Serialization.JsonPropertyName("signed_detail_list")] + public Types.SignPlanDetail[]? SignPlanDetailList { get; set; } + } + } + + /// + /// 获取或设置跳转微信侧小程序订单数据。 + /// + [Newtonsoft.Json.JsonProperty("package")] + [System.Text.Json.Serialization.JsonPropertyName("package")] + public string Package { get; set; } = default!; + + /// + /// 获取或设置待签约计划信息。 + /// + [Newtonsoft.Json.JsonProperty("sign_plan")] + [System.Text.Json.Serialization.JsonPropertyName("sign_plan")] + public Types.SignPlan SignPlan { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberRequest.cs new file mode 100644 index 00000000..077372f0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /payscore/sign-plan/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no} 接口的请求。 + /// + public class GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberRequest : WechatTenpayRequest + { + /// + /// 获取或设置商户签约计划单号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string OutSignPlanNumber { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse.cs new file mode 100644 index 00000000..cc04a8c6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse.cs @@ -0,0 +1,252 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /payscore/sign-plan/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no} 接口的响应。 + /// + public class GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse : WechatTenpayResponse + { + public static class Types + { + public class SignPlanDetail + { + /// + /// 获取或设置计划明细序号。 + /// + [Newtonsoft.Json.JsonProperty("plan_detail_no")] + [System.Text.Json.Serialization.JsonPropertyName("plan_detail_no")] + public int PlanDetailNumber { get; set; } + + /// + /// 获取或设置明细名称。 + /// + [Newtonsoft.Json.JsonProperty("plan_detail_name")] + [System.Text.Json.Serialization.JsonPropertyName("plan_detail_name")] + public string PlanDetailName { get; set; } = default!; + + /// + /// 获取或设置明细状态。 + /// + [Newtonsoft.Json.JsonProperty("plan_detail_state")] + [System.Text.Json.Serialization.JsonPropertyName("plan_detail_state")] + public string PlanDetailState { get; set; } = default!; + + /// + /// 获取或设置优惠说明。 + /// + [Newtonsoft.Json.JsonProperty("plan_discount_description")] + [System.Text.Json.Serialization.JsonPropertyName("plan_discount_description")] + public string? DiscountDescription { get; set; } + + /// + /// 获取或设置原支付金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("original_price")] + [System.Text.Json.Serialization.JsonPropertyName("original_price")] + public int OriginalPrice { get; set; } + + /// + /// 获取或设置实际支付金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("actual_price")] + [System.Text.Json.Serialization.JsonPropertyName("actual_price")] + public int ActualPrice { get; set; } + + /// + /// 获取或设置实际支付金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("actual_pay_price")] + [System.Text.Json.Serialization.JsonPropertyName("actual_pay_price")] + public int? ActualPayPrice { get; set; } + + /// + /// 获取或设置商户计划明细使用订单号。 + /// + [Newtonsoft.Json.JsonProperty("merchant_plan_detail_no")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_plan_detail_no")] + public string OutPlanDetailNumber { get; set; } = default!; + + /// + /// 获取或设置微信支付服务订单号。 + /// + [Newtonsoft.Json.JsonProperty("order_id")] + [System.Text.Json.Serialization.JsonPropertyName("order_id")] + public string? OrderId { get; set; } + + /// + /// 获取或设置使用时间。 + /// + [Newtonsoft.Json.JsonProperty("use_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("use_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? UseTime { get; set; } + + /// + /// 获取或设置完成时间。 + /// + [Newtonsoft.Json.JsonProperty("complete_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("complete_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? CompleteTime { get; set; } + + /// + /// 获取或设置取消时间。 + /// + [Newtonsoft.Json.JsonProperty("cancel_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("cancel_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? CancelTime { get; set; } + } + } + + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = default!; + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置支付分计划 ID。 + /// + [Newtonsoft.Json.JsonProperty("plan_id")] + [System.Text.Json.Serialization.JsonPropertyName("plan_id")] + public string PlanId { get; set; } = default!; + + /// + /// 获取或设置计划名称。 + /// + [Newtonsoft.Json.JsonProperty("plan_name")] + [System.Text.Json.Serialization.JsonPropertyName("plan_name")] + public string PlanName { get; set; } = default!; + + /// + /// 获取或设置服务 ID。 + /// + [Newtonsoft.Json.JsonProperty("service_id")] + [System.Text.Json.Serialization.JsonPropertyName("service_id")] + public string ServiceId { get; set; } = default!; + + /// + /// 获取或设置商户签约计划单号。 + /// + [Newtonsoft.Json.JsonProperty("merchant_sign_plan_no")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_sign_plan_no")] + public string OutSignPlanNumber { get; set; } = default!; + + /// + /// 获取或设置签约计划 ID。 + /// + [Newtonsoft.Json.JsonProperty("sign_plan_id")] + [System.Text.Json.Serialization.JsonPropertyName("sign_plan_id")] + public string SignPlanId { get; set; } = default!; + + /// + /// 获取或设置计划状态。 + /// + [Newtonsoft.Json.JsonProperty("sign_state")] + [System.Text.Json.Serialization.JsonPropertyName("sign_state")] + public string SignState { get; set; } = default!; + + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string OpenId { get; set; } = default!; + + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("merchant_callback_url")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_callback_url")] + public string? NotifyUrl { get; set; } + + /// + /// 获取或设置目前用户进行到的计划明细序号。 + /// + [Newtonsoft.Json.JsonProperty("going_detail_no")] + [System.Text.Json.Serialization.JsonPropertyName("going_detail_no")] + public int GoingDetailNumber { get; set; } + + /// + /// 获取或设置计划过期时间。 + /// + [Newtonsoft.Json.JsonProperty("plan_over_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("plan_over_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset PlanOverTime { get; set; } + + /// + /// 获取或设置扣费次数。 + /// + [Newtonsoft.Json.JsonProperty("deduction_quantity")] + [System.Text.Json.Serialization.JsonPropertyName("deduction_quantity")] + public int DeductionQuantity { get; set; } + + /// + /// 获取或设置原总金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total_origin_price")] + [System.Text.Json.Serialization.JsonPropertyName("total_origin_price")] + public int TotalOriginalPrice { get; set; } + + /// + /// 获取或设置实际总金额(单位:分)。 + /// + [Newtonsoft.Json.JsonProperty("total_actual_price")] + [System.Text.Json.Serialization.JsonPropertyName("total_actual_price")] + public int TotalActualPrice { get; set; } + + /// + /// 获取或设置签约时间。 + /// + [Newtonsoft.Json.JsonProperty("sign_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("sign_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? SignTime { get; set; } + + /// + /// 获取或设置取消类型。 + /// + [Newtonsoft.Json.JsonProperty("cancel_sign_type")] + [System.Text.Json.Serialization.JsonPropertyName("cancel_sign_type")] + public string? CancelType { get; set; } + + /// + /// 获取或设置取消原因。 + /// + [Newtonsoft.Json.JsonProperty("cancel_reason")] + [System.Text.Json.Serialization.JsonPropertyName("cancel_reason")] + public string? CancelReason { get; set; } + + /// + /// 获取或设置取消时间。 + /// + [Newtonsoft.Json.JsonProperty("cancel_sign_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.Rfc3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("cancel_sign_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.Rfc3339DateTimeOffsetConverter))] + public DateTimeOffset? CancelTime { get; set; } + + /// + /// 获取或设置签约计划明细列表。 + /// + [Newtonsoft.Json.JsonProperty("signed_detail_list")] + [System.Text.Json.Serialization.JsonPropertyName("signed_detail_list")] + public Types.SignPlanDetail[]? SignPlanDetailList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/StopPayScoreSignPlanUserSignPlanRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/StopPayScoreSignPlanUserSignPlanRequest.cs new file mode 100644 index 00000000..a2ff5148 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/StopPayScoreSignPlanUserSignPlanRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/sign-plan/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no}/stop 接口的请求。 + /// + public class StopPayScoreSignPlanUserSignPlanRequest : WechatTenpayRequest + { + /// + /// 获取或设置商户签约计划单号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string OutSignPlanNumber { get; set; } = string.Empty; + + /// + /// 获取或设置停止原因。 + /// + [Newtonsoft.Json.JsonProperty("stop_reason")] + [System.Text.Json.Serialization.JsonPropertyName("stop_reason")] + public string? StopReason { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/StopPayScoreSignPlanUserSignPlanResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/StopPayScoreSignPlanUserSignPlanResponse.cs new file mode 100644 index 00000000..0373431f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/PayScore/SignPlan/StopPayScoreSignPlanUserSignPlanResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/sign-plan/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no}/stop 接口的响应。 + /// + public class StopPayScoreSignPlanUserSignPlanResponse : GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/EducationSchoolPay/GetEducationSchoolPayTransactionByOutTradeNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/EducationSchoolPay/GetEducationSchoolPayTransactionByOutTradeNumberResponse.cs index fadd0d3b..27d91ffc 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/EducationSchoolPay/GetEducationSchoolPayTransactionByOutTradeNumberResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/EducationSchoolPay/GetEducationSchoolPayTransactionByOutTradeNumberResponse.cs @@ -11,12 +11,6 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models { public class Payer : GetEducationPAPayTransactionByOutTradeNumberResponse.Types.Payer { - /// - /// 获取或设置用户在子商户下唯一标识。 - /// - [Newtonsoft.Json.JsonProperty("sub_openid")] - [System.Text.Json.Serialization.JsonPropertyName("sub_openid")] - public string? SubOpenId { get; set; } } public class Amount : GetEducationPAPayTransactionByOutTradeNumberResponse.Types.Amount diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/CreatePayScorePartnerPlanRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/CreatePayScorePartnerPlanRequest.cs new file mode 100644 index 00000000..ec88ad70 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/CreatePayScorePartnerPlanRequest.cs @@ -0,0 +1,29 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/plan/partner/payscore-plans 接口的请求。 + /// + public class CreatePayScorePartnerPlanRequest : CreatePayScorePlanRequest + { + public static new class Types + { + public class PlanDetail : CreatePayScorePlanRequest.Types.PlanDetail + { + } + } + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/CreatePayScorePartnerPlanResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/CreatePayScorePartnerPlanResponse.cs new file mode 100644 index 00000000..44d270c5 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/CreatePayScorePartnerPlanResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/plan/partner/payscore-plans 接口的响应。 + /// + public class CreatePayScorePartnerPlanResponse : GetPayScorePartnerPlanByOutPlanNumberResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/GetPayScorePartnerPlanByOutPlanNumberRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/GetPayScorePartnerPlanByOutPlanNumberRequest.cs new file mode 100644 index 00000000..1d0e3b26 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/GetPayScorePartnerPlanByOutPlanNumberRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /payscore/plan/partner/payscore-plans/merchant-plan-no/{merchant_plan_no} 接口的请求。 + /// + public class GetPayScorePartnerPlanByOutPlanNumberRequest : GetPayScorePlanByOutPlanNumberRequest + { + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string SubMerchantId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/GetPayScorePartnerPlanByOutPlanNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/GetPayScorePartnerPlanByOutPlanNumberResponse.cs new file mode 100644 index 00000000..3f73ff23 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/GetPayScorePartnerPlanByOutPlanNumberResponse.cs @@ -0,0 +1,24 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /payscore/plan/partner/payscore-plans/merchant-plan-no/{merchant_plan_no} 接口的响应。 + /// + public class GetPayScorePartnerPlanByOutPlanNumberResponse : GetPayScorePlanByOutPlanNumberResponse + { + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = default!; + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/StopPayScorePartnerPlanRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/StopPayScorePartnerPlanRequest.cs new file mode 100644 index 00000000..3033e399 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/StopPayScorePartnerPlanRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/plan/partner/payscore-plans/merchant-plan-no/{merchant_plan_no}/stop 接口的请求。 + /// + public class StopPayScorePartnerPlanRequest : StopPayScorePlanRequest + { + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/StopPayScorePartnerPlanResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/StopPayScorePartnerPlanResponse.cs new file mode 100644 index 00000000..7273e167 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/Plan/StopPayScorePartnerPlanResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/plan/partner/payscore-plans/merchant-plan-no/{merchant_plan_no}/stop 接口的响应。 + /// + public class StopPayScorePartnerPlanResponse : GetPayScorePartnerPlanByOutPlanNumberResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanServiceOrderRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanServiceOrderRequest.cs new file mode 100644 index 00000000..d3ec2c7e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanServiceOrderRequest.cs @@ -0,0 +1,40 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/sign-plan/partner/serviceorder 接口的请求。 + /// + public class CreatePayScorePartnerSignPlanServiceOrderRequest : CreatePayScoreSignPlanServiceOrderRequest + { + public static new class Types + { + public class TimeRange : CreatePayScorePartnerServiceOrderRequest.Types.TimeRange + { + } + + public class Location : CreatePayScorePartnerServiceOrderRequest.Types.Location + { + } + } + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + + /// + /// 获取或设置用户在子商户下的唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("sub_openid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_openid")] + public string? SubOpenId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanServiceOrderResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanServiceOrderResponse.cs new file mode 100644 index 00000000..d552cb9d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanServiceOrderResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/sign-plan/partner/serviceorder 接口的响应。 + /// + public class CreatePayScorePartnerSignPlanServiceOrderResponse : GetPayScorePartnerServiceOrderByOutOrderNumberResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanUserSignPlanRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanUserSignPlanRequest.cs new file mode 100644 index 00000000..da19c84e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanUserSignPlanRequest.cs @@ -0,0 +1,36 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/sign-plan/partner/user-sign-plans 接口的请求。 + /// + public class CreatePayScorePartnerSignPlanUserSignPlanRequest : CreatePayScoreSignPlanUserSignPlanRequest + { + public static new class Types + { + public class SignPlanDetail : CreatePayScoreSignPlanUserSignPlanRequest.Types.SignPlanDetail + { + } + } + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string SubAppId { get; set; } = string.Empty; + + /// + /// 获取或设置用户在子商户下的唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("sub_openid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_openid")] + public string? SubOpenId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanUserSignPlanResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanUserSignPlanResponse.cs new file mode 100644 index 00000000..11bc2fd6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanUserSignPlanResponse.cs @@ -0,0 +1,49 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/sign-plan/partner/user-sign-plans 接口的响应。 + /// + public class CreatePayScorePartnerSignPlanUserSignPlanResponse : WechatTenpayResponse + { + public static class Types + { + public class SignPlan : CreatePayScoreSignPlanUserSignPlanResponse.Types.SignPlan + { + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = default!; + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + + /// + /// 获取或设置用户在子商户下的唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("sub_openid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_openid")] + public string? SubOpenId { get; set; } + } + } + + /// + /// 获取或设置跳转微信侧小程序订单数据。 + /// + [Newtonsoft.Json.JsonProperty("package")] + [System.Text.Json.Serialization.JsonPropertyName("package")] + public string Package { get; set; } = default!; + + /// + /// 获取或设置待签约计划信息。 + /// + [Newtonsoft.Json.JsonProperty("sign_plan")] + [System.Text.Json.Serialization.JsonPropertyName("sign_plan")] + public Types.SignPlan SignPlan { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberRequest.cs new file mode 100644 index 00000000..0c6cf008 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /payscore/sign-plan/partner/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no} 接口的请求。 + /// + public class GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberRequest : GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberRequest + { + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string SubMerchantId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberResponse.cs new file mode 100644 index 00000000..e8d9e7c1 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberResponse.cs @@ -0,0 +1,29 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /payscore/sign-plan/partner/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no} 接口的响应。 + /// + public class GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberResponse : GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse + { + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = default!; + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + + /// + /// 获取或设置用户在子商户下的唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("sub_openid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_openid")] + public string? SubOpenId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/StopPayScorePartnerSignPlanUserSignPlanRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/StopPayScorePartnerSignPlanUserSignPlanRequest.cs new file mode 100644 index 00000000..135e23b8 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/StopPayScorePartnerSignPlanUserSignPlanRequest.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/sign-plan/partner/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no}/stop 接口的请求。 + /// + public class StopPayScorePartnerSignPlanUserSignPlanRequest : StopPayScoreSignPlanUserSignPlanRequest + { + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/StopPayScorePartnerSignPlanUserSignPlanResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/StopPayScorePartnerSignPlanUserSignPlanResponse.cs new file mode 100644 index 00000000..523c79d3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/_Partner/PayScore/SignPlan/StopPayScorePartnerSignPlanUserSignPlanResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /payscore/sign-plan/partner/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no}/stop 接口的响应。 + /// + public class StopPayScorePartnerSignPlanUserSignPlanResponse : GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberResponse + { + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/PayScore/PayScoreUserSignPlanResource.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/PayScore/PayScoreUserSignPlanResource.json new file mode 100644 index 00000000..1b5a073a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/PayScore/PayScoreUserSignPlanResource.json @@ -0,0 +1,93 @@ +{ + "sign_plan_id": "01020033210023606914000000007830", + "openid": "oBgbt4sGN3Vl76KF7QgLF37UdjDU", + "service_id": "00109000000000169034377913212082", + "mchid": "2480262201", + "appid": "wxa620f17681c6b0c7", + "merchant_sign_plan_no": "1693882928726", + "merchant_callback_url": "https://payapp.weixin.qq.com/wxvaluetest/common/indirect_bank/2492014071/listennotify", + "plan_id": "01000033210032606914000000007983", + "going_detail_no": 0, + "sign_state": "SIGNED", + "cancel_sign_time": "", + "cancel_sign_type": "NOT_CANCEL", + "cancel_reason": "", + "plan_name": "瑜伽课5节", + "plan_over_time": "2024-07-02T00:00:00+08:00", + "total_origin_price": 1000, + "deduction_quantity": 5, + "total_actual_price": 500, + "signed_detail_list": [ + { + "plan_detail_no": 1, + "original_price": 200, + "plan_discount_description": "享受五折", + "actual_price": 100, + "plan_detail_state": "NOT_USED", + "order_id": "", + "merchant_plan_detail_no": "1693882928727", + "plan_detail_name": "服务费1", + "actual_pay_price": 0, + "use_time": "", + "complete_time": "", + "cancel_time": "" + }, + { + "plan_detail_no": 2, + "original_price": 200, + "plan_discount_description": "享受五折", + "actual_price": 100, + "plan_detail_state": "NOT_USED", + "order_id": "", + "merchant_plan_detail_no": "1693882928728", + "plan_detail_name": "服务费2", + "actual_pay_price": 0, + "use_time": "", + "complete_time": "", + "cancel_time": "" + }, + { + "plan_detail_no": 3, + "original_price": 200, + "plan_discount_description": "享受五折", + "actual_price": 100, + "plan_detail_state": "NOT_USED", + "order_id": "", + "merchant_plan_detail_no": "1693882928729", + "plan_detail_name": "服务费3", + "actual_pay_price": 0, + "use_time": "", + "complete_time": "", + "cancel_time": "" + }, + { + "plan_detail_no": 4, + "original_price": 200, + "plan_discount_description": "享受五折", + "actual_price": 100, + "plan_detail_state": "NOT_USED", + "order_id": "", + "merchant_plan_detail_no": "1693882928730", + "plan_detail_name": "服务费4", + "actual_pay_price": 0, + "use_time": "", + "complete_time": "", + "cancel_time": "" + }, + { + "plan_detail_no": 5, + "original_price": 200, + "plan_discount_description": "享受五折", + "actual_price": 100, + "plan_detail_state": "NOT_USED", + "order_id": "", + "merchant_plan_detail_no": "1693882928731", + "plan_detail_name": "服务费5", + "actual_pay_price": 0, + "use_time": "", + "complete_time": "", + "cancel_time": "" + } + ], + "sign_time": "2023-09-05T11:03:56+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/_Partner/PayScore/PayScorePartnerUserSignPlanResource.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/_Partner/PayScore/PayScorePartnerUserSignPlanResource.json new file mode 100644 index 00000000..4430b9f3 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/_/_Partner/PayScore/PayScorePartnerUserSignPlanResource.json @@ -0,0 +1,95 @@ +{ + "sign_plan_id": "01020033210023606914000000007830", + "openid": "oBgbt4sGN3Vl76KF7QgLF37UdjDU", + "service_id": "00109000000000169034377913212082", + "mchid": "2480262201", + "sub_mchid": "2480262211", + "appid": "wxa620f17681c6b0c7", + "sub_appid": "", + "merchant_sign_plan_no": "1693882928726", + "merchant_callback_url": "https://payapp.weixin.qq.com/wxvaluetest/common/indirect_bank/2492014071/listennotify", + "plan_id": "01000033210032606914000000007983", + "going_detail_no": 0, + "sign_state": "SIGNED", + "cancel_sign_time": "", + "cancel_sign_type": "NOT_CANCEL", + "cancel_reason": "", + "plan_name": "瑜伽课5节", + "plan_over_time": "2024-07-02T00:00:00+08:00", + "total_origin_price": 1000, + "deduction_quantity": 5, + "total_actual_price": 500, + "signed_detail_list": [ + { + "plan_detail_no": 1, + "original_price": 200, + "plan_discount_description": "享受五折", + "actual_price": 100, + "plan_detail_state": "NOT_USED", + "order_id": "", + "merchant_plan_detail_no": "1693882928727", + "plan_detail_name": "服务费1", + "actual_pay_price": 0, + "use_time": "", + "complete_time": "", + "cancel_time": "" + }, + { + "plan_detail_no": 2, + "original_price": 200, + "plan_discount_description": "享受五折", + "actual_price": 100, + "plan_detail_state": "NOT_USED", + "order_id": "", + "merchant_plan_detail_no": "1693882928728", + "plan_detail_name": "服务费2", + "actual_pay_price": 0, + "use_time": "", + "complete_time": "", + "cancel_time": "" + }, + { + "plan_detail_no": 3, + "original_price": 200, + "plan_discount_description": "享受五折", + "actual_price": 100, + "plan_detail_state": "NOT_USED", + "order_id": "", + "merchant_plan_detail_no": "1693882928729", + "plan_detail_name": "服务费3", + "actual_pay_price": 0, + "use_time": "", + "complete_time": "", + "cancel_time": "" + }, + { + "plan_detail_no": 4, + "original_price": 200, + "plan_discount_description": "享受五折", + "actual_price": 100, + "plan_detail_state": "NOT_USED", + "order_id": "", + "merchant_plan_detail_no": "1693882928730", + "plan_detail_name": "服务费4", + "actual_pay_price": 0, + "use_time": "", + "complete_time": "", + "cancel_time": "" + }, + { + "plan_detail_no": 5, + "original_price": 200, + "plan_discount_description": "享受五折", + "actual_price": 100, + "plan_detail_state": "NOT_USED", + "order_id": "", + "merchant_plan_detail_no": "1693882928731", + "plan_detail_name": "服务费5", + "actual_pay_price": 0, + "use_time": "", + "complete_time": "", + "cancel_time": "" + } + ], + "sign_time": "2023-09-05T11:03:56+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/Plan/CreatePayScorePlanRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/Plan/CreatePayScorePlanRequest.json new file mode 100644 index 00000000..372af6b2 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/Plan/CreatePayScorePlanRequest.json @@ -0,0 +1,18 @@ +{ + "service_id": "2002000000000558128851361561536", + "appid": "wxd678efh567hg6787", + "plan_name": "瑜伽课20节", + "plan_duration": 300, + "deduction_quantity": 10, + "total_original_price": 15000, + "total_actual_price": 15000, + "plan_detail_list": [ + { + "original_price": 15000, + "plan_discount_description": "享受九折", + "actual_price": 14000, + "plan_detail_name": "第八节课" + } + ], + "merchant_plan_no": "1234323JKHDFE1243252" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/Plan/CreatePayScorePlanResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/Plan/CreatePayScorePlanResponse.json new file mode 100644 index 00000000..6e379ce3 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/Plan/CreatePayScorePlanResponse.json @@ -0,0 +1,24 @@ +{ + "plan_id": "01000033210000324638000000376258", + "service_id": "2002000000000558128851361561536", + "mchid": "1900000109", + "appid": "wxd678efh567hg6787", + "merchant_plan_no": "1234323JKHDFE1243252", + "plan_name": "瑜伽课20节", + "plan_duration": 10, + "plan_state": "NORMAL", + "total_original_price": 15000, + "deduction_quantity": 10, + "total_actual_price": 140000, + "plan_detail_list": [ + { + "plan_detail_no": 1, + "plan_detail_name": "第8节课", + "original_price": 15000, + "plan_discount_description": "享受九折优惠", + "actual_price": 14000 + } + ], + "stop_mchid": "1900000109", + "stop_time": "2021-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/Plan/GetPayScorePlanByOutPlanNumberResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/Plan/GetPayScorePlanByOutPlanNumberResponse.json new file mode 100644 index 00000000..6e379ce3 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/Plan/GetPayScorePlanByOutPlanNumberResponse.json @@ -0,0 +1,24 @@ +{ + "plan_id": "01000033210000324638000000376258", + "service_id": "2002000000000558128851361561536", + "mchid": "1900000109", + "appid": "wxd678efh567hg6787", + "merchant_plan_no": "1234323JKHDFE1243252", + "plan_name": "瑜伽课20节", + "plan_duration": 10, + "plan_state": "NORMAL", + "total_original_price": 15000, + "deduction_quantity": 10, + "total_actual_price": 140000, + "plan_detail_list": [ + { + "plan_detail_no": 1, + "plan_detail_name": "第8节课", + "original_price": 15000, + "plan_discount_description": "享受九折优惠", + "actual_price": 14000 + } + ], + "stop_mchid": "1900000109", + "stop_time": "2021-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/Plan/StopPayScorePlanResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/Plan/StopPayScorePlanResponse.json new file mode 100644 index 00000000..6e379ce3 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/Plan/StopPayScorePlanResponse.json @@ -0,0 +1,24 @@ +{ + "plan_id": "01000033210000324638000000376258", + "service_id": "2002000000000558128851361561536", + "mchid": "1900000109", + "appid": "wxd678efh567hg6787", + "merchant_plan_no": "1234323JKHDFE1243252", + "plan_name": "瑜伽课20节", + "plan_duration": 10, + "plan_state": "NORMAL", + "total_original_price": 15000, + "deduction_quantity": 10, + "total_actual_price": 140000, + "plan_detail_list": [ + { + "plan_detail_no": 1, + "plan_detail_name": "第8节课", + "original_price": 15000, + "plan_discount_description": "享受九折优惠", + "actual_price": 14000 + } + ], + "stop_mchid": "1900000109", + "stop_time": "2021-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/CreatePayScoreSignPlanServiceOrderRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/CreatePayScoreSignPlanServiceOrderRequest.json new file mode 100644 index 00000000..ceeaafae --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/CreatePayScoreSignPlanServiceOrderRequest.json @@ -0,0 +1,21 @@ +{ + "service_id": "2002000000000558128851361561536", + "sign_plan_id": "01000033210000324638000000376258", + "plan_detail_no": 2, + "appid": "wxd678efh567hg6787", + "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o", + "notify_url": "https://api.test.com", + "service_introduction": "羽毛球课基础练习课程", + "time_range": { + "start_time": "20091225091010", + "end_time": "20091225121010", + "start_time_remark": "备注1", + "end_time_remark": "备注2" + }, + "location": { + "start_location": "嗨客时尚主题展餐厅", + "end_location": "嗨客时尚主题展餐厅" + }, + "attach": "Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald", + "out_trade_no": "1514323JSVDFE1243252" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/CreatePayScoreSignPlanServiceOrderResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/CreatePayScoreSignPlanServiceOrderResponse.json new file mode 100644 index 00000000..d4e46c54 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/CreatePayScoreSignPlanServiceOrderResponse.json @@ -0,0 +1,38 @@ +{ + "out_order_no": "1234323JKHDFE1243252", + "service_id": "2002000000000558128851361561536", + "appid": "wxd678efh567hg6787", + "mchid": "1230000109", + "service_introduction": "羽毛球课程基础训练", + "state": "CREATED", + "state_description": "USER_CONFIRM", + "post_payments": [ + { + "name": "瑜伽课程20节", + "amount": 40000, + "description": "第6节课" + } + ], + "post_discounts": [ + { + "name": "享9折优惠", + "amount": 100 + } + ], + "risk_fund": { + "amount": 10000 + }, + "time_range": { + "start_time": "20091225091010", + "end_time": "20091225121010", + "start_time_remark": "备注1", + "end_time_remark": "备注2" + }, + "location": { + "start_location": "嗨客时尚主题展餐厅", + "end_location": "嗨客时尚主题展餐厅" + }, + "attach": "Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald", + "notify_url": "https://api.test.com", + "order_id": "0000300001201908301055157220022" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/CreatePayScoreSignPlanUserSignPlanRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/CreatePayScoreSignPlanUserSignPlanRequest.json new file mode 100644 index 00000000..635b44fb --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/CreatePayScoreSignPlanUserSignPlanRequest.json @@ -0,0 +1,14 @@ +{ + "service_id": "2002000000000558128851361561536", + "plan_id": "01000033210000324638000000376258", + "appid": "wxd678efh567hg6787", + "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o", + "merchant_sign_plan_no": "1234323JKHDFE1243252", + "notify_url": "https://api.test.com", + "sign_plan_detail": [ + { + "plan_detail_no": 1, + "merchant_plan_detail_no": "1234323JKHDFE1243252" + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/CreatePayScoreSignPlanUserSignPlanResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/CreatePayScoreSignPlanUserSignPlanResponse.json new file mode 100644 index 00000000..6538e9c4 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/CreatePayScoreSignPlanUserSignPlanResponse.json @@ -0,0 +1,40 @@ +{ + "sign_plan": { + "sign_plan_id": "01010033210001424338000019876258", + "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o", + "service_id": "2002000000000558128851361561536", + "mchid": "1900000109", + "appid": "wxd678efh567hg6787", + "merchant_sign_plan_no": "1234323JKHDFE1243252", + "merchant_callback_url": "https://api.test.com", + "plan_id": "01000033210000324638000000376258", + "going_detail_no": 2, + "sign_state": "UNSIGNED", + "cancel_sign_time": "2021-05-20T13:29:35.120+08:00", + "cancel_sign_type": "NOT_CANCEL", + "cancel_reason": "用户放弃课程", + "plan_name": "瑜伽晨练课10次", + "plan_over_time": "2021-05-20T13:29:35.120+08:00", + "total_origin_price": 150000, + "deduction_quantity": 10, + "total_actual_price": 120000, + "signed_detail_list": [ + { + "plan_detail_no": 1, + "original_price": 30000, + "plan_discount_description": "享9折优惠", + "actual_price": 27000, + "plan_detail_state": "NOT_USED", + "order_id": "0000300001201908301055157220022", + "merchant_plan_detail_no": "1234323JKHDFE1243252", + "plan_detail_name": "第一节课", + "actual_pay_price": 50000, + "use_time": "2021-05-20T13:29:35.120+08:00", + "complete_time": "2021-05-20T13:29:35.120+08:00", + "cancel_time": "2021-05-20T13:29:35.120+08:00" + } + ], + "sign_time": "2021-05-20T13:29:35.120+08:00" + }, + "package": "Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse.json new file mode 100644 index 00000000..fd475ed9 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse.json @@ -0,0 +1,37 @@ +{ + "sign_plan_id": "01010033210001424338000019876258", + "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o", + "service_id": "2002000000000558128851361561536", + "mchid": "1900000109", + "appid": "wxd678efh567hg6787", + "merchant_sign_plan_no": "1234323JKHDFE1243252", + "merchant_callback_url": "https://api.test.com", + "plan_id": "01000033210000324638000000376258", + "going_detail_no": 2, + "sign_state": "UNSIGNED", + "cancel_sign_time": "2021-05-20T13:29:35.120+08:00", + "cancel_sign_type": "NOT_CANCEL", + "cancel_reason": "用户放弃课程", + "plan_name": "瑜伽晨练课10次", + "plan_over_time": "2021-05-20T13:29:35.120+08:00", + "total_origin_price": 150000, + "deduction_quantity": 10, + "total_actual_price": 120000, + "signed_detail_list": [ + { + "plan_detail_no": 1, + "original_price": 30000, + "plan_discount_description": "享9折优惠", + "actual_price": 27000, + "plan_detail_state": "NOT_USED", + "order_id": "0000300001201908301055157220022", + "merchant_plan_detail_no": "1234323JKHDFE1243252", + "plan_detail_name": "第一节课", + "actual_pay_price": 50000, + "use_time": "2021-05-20T13:29:35.120+08:00", + "complete_time": "2021-05-20T13:29:35.120+08:00", + "cancel_time": "2021-05-20T13:29:35.120+08:00" + } + ], + "sign_time": "2021-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/StopPayScoreSignPlanUserSignPlanRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/StopPayScoreSignPlanUserSignPlanRequest.json new file mode 100644 index 00000000..bde8908c --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/StopPayScoreSignPlanUserSignPlanRequest.json @@ -0,0 +1,3 @@ +{ + "stop_reason": "用户协商后停止" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/StopPayScoreSignPlanUserSignPlanResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/StopPayScoreSignPlanUserSignPlanResponse.json new file mode 100644 index 00000000..fd475ed9 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/PayScore/SignPlan/StopPayScoreSignPlanUserSignPlanResponse.json @@ -0,0 +1,37 @@ +{ + "sign_plan_id": "01010033210001424338000019876258", + "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o", + "service_id": "2002000000000558128851361561536", + "mchid": "1900000109", + "appid": "wxd678efh567hg6787", + "merchant_sign_plan_no": "1234323JKHDFE1243252", + "merchant_callback_url": "https://api.test.com", + "plan_id": "01000033210000324638000000376258", + "going_detail_no": 2, + "sign_state": "UNSIGNED", + "cancel_sign_time": "2021-05-20T13:29:35.120+08:00", + "cancel_sign_type": "NOT_CANCEL", + "cancel_reason": "用户放弃课程", + "plan_name": "瑜伽晨练课10次", + "plan_over_time": "2021-05-20T13:29:35.120+08:00", + "total_origin_price": 150000, + "deduction_quantity": 10, + "total_actual_price": 120000, + "signed_detail_list": [ + { + "plan_detail_no": 1, + "original_price": 30000, + "plan_discount_description": "享9折优惠", + "actual_price": 27000, + "plan_detail_state": "NOT_USED", + "order_id": "0000300001201908301055157220022", + "merchant_plan_detail_no": "1234323JKHDFE1243252", + "plan_detail_name": "第一节课", + "actual_pay_price": 50000, + "use_time": "2021-05-20T13:29:35.120+08:00", + "complete_time": "2021-05-20T13:29:35.120+08:00", + "cancel_time": "2021-05-20T13:29:35.120+08:00" + } + ], + "sign_time": "2021-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Plan/CreatePayScorePartnerPlanRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Plan/CreatePayScorePartnerPlanRequest.json new file mode 100644 index 00000000..dd1a9428 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Plan/CreatePayScorePartnerPlanRequest.json @@ -0,0 +1,20 @@ +{ + "service_id": "2002000000000558128851361561536", + "appid": "wxd678efh567hg6787", + "sub_mchid": "1900000109", + "sub_appid": "wxd678efh567hg6787", + "plan_name": "瑜伽课20节", + "plan_duration": 300, + "deduction_quantity": 10, + "total_original_price": 15000, + "total_actual_price": 15000, + "plan_detail_list": [ + { + "original_price": 15000, + "plan_discount_description": "享受九折", + "actual_price": 14000, + "plan_detail_name": "第八节课" + } + ], + "merchant_plan_no": "1234323JKHDFE1243252" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Plan/CreatePayScorePartnerPlanResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Plan/CreatePayScorePartnerPlanResponse.json new file mode 100644 index 00000000..d190b681 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Plan/CreatePayScorePartnerPlanResponse.json @@ -0,0 +1,26 @@ +{ + "plan_id": "01000033210000324638000000376258", + "service_id": "2002000000000558128851361561536", + "mchid": "1900000109", + "sub_mchid": "1900000109", + "appid": "wxd678efh567hg6787", + "sub_appid": "wxd678efh567hg6787", + "merchant_plan_no": "1234323JKHDFE1243252", + "plan_name": "瑜伽课20节", + "plan_duration": 10, + "plan_state": "NORMAL", + "total_original_price": 15000, + "deduction_quantity": 10, + "total_actual_price": 140000, + "plan_detail_list": [ + { + "plan_detail_no": 1, + "plan_detail_name": "第8节课", + "original_price": 15000, + "plan_discount_description": "享受九折优惠", + "actual_price": 14000 + } + ], + "stop_mchid": "1900000109", + "stop_time": "2021-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Plan/GetPayScorePartnerPlanByOutPlanNumberResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Plan/GetPayScorePartnerPlanByOutPlanNumberResponse.json new file mode 100644 index 00000000..d190b681 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Plan/GetPayScorePartnerPlanByOutPlanNumberResponse.json @@ -0,0 +1,26 @@ +{ + "plan_id": "01000033210000324638000000376258", + "service_id": "2002000000000558128851361561536", + "mchid": "1900000109", + "sub_mchid": "1900000109", + "appid": "wxd678efh567hg6787", + "sub_appid": "wxd678efh567hg6787", + "merchant_plan_no": "1234323JKHDFE1243252", + "plan_name": "瑜伽课20节", + "plan_duration": 10, + "plan_state": "NORMAL", + "total_original_price": 15000, + "deduction_quantity": 10, + "total_actual_price": 140000, + "plan_detail_list": [ + { + "plan_detail_no": 1, + "plan_detail_name": "第8节课", + "original_price": 15000, + "plan_discount_description": "享受九折优惠", + "actual_price": 14000 + } + ], + "stop_mchid": "1900000109", + "stop_time": "2021-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Plan/StopPayScorePartnerPlanRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Plan/StopPayScorePartnerPlanRequest.json new file mode 100644 index 00000000..9f8b42b7 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Plan/StopPayScorePartnerPlanRequest.json @@ -0,0 +1,3 @@ +{ + "sub_mchid": "1900000109" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Plan/StopPayScorePartnerPlanResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Plan/StopPayScorePartnerPlanResponse.json new file mode 100644 index 00000000..d190b681 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/Plan/StopPayScorePartnerPlanResponse.json @@ -0,0 +1,26 @@ +{ + "plan_id": "01000033210000324638000000376258", + "service_id": "2002000000000558128851361561536", + "mchid": "1900000109", + "sub_mchid": "1900000109", + "appid": "wxd678efh567hg6787", + "sub_appid": "wxd678efh567hg6787", + "merchant_plan_no": "1234323JKHDFE1243252", + "plan_name": "瑜伽课20节", + "plan_duration": 10, + "plan_state": "NORMAL", + "total_original_price": 15000, + "deduction_quantity": 10, + "total_actual_price": 140000, + "plan_detail_list": [ + { + "plan_detail_no": 1, + "plan_detail_name": "第8节课", + "original_price": 15000, + "plan_discount_description": "享受九折优惠", + "actual_price": 14000 + } + ], + "stop_mchid": "1900000109", + "stop_time": "2021-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanServiceOrderRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanServiceOrderRequest.json new file mode 100644 index 00000000..baa02da4 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanServiceOrderRequest.json @@ -0,0 +1,24 @@ +{ + "service_id": "2002000000000558128851361561536", + "sign_plan_id": "01000033210000324638000000376258", + "plan_detail_no": 2, + "appid": "wxd678efh567hg6787", + "sub_mchid": "1900000109", + "sub_appid": "wxd678efh567hg6999", + "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o", + "sub_openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o", + "notify_url": "https://api.test.com", + "service_introduction": "羽毛球课基础练习课程", + "time_range": { + "start_time": "20091225091010", + "end_time": "20091225121010", + "start_time_remark": "备注1", + "end_time_remark": "备注2" + }, + "location": { + "start_location": "嗨客时尚主题展餐厅", + "end_location": "嗨客时尚主题展餐厅" + }, + "attach": "Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald", + "out_trade_no": "1514323JSVDFE1243252" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanServiceOrderResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanServiceOrderResponse.json new file mode 100644 index 00000000..fed79f62 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanServiceOrderResponse.json @@ -0,0 +1,40 @@ +{ + "out_order_no": "1234323JKHDFE1243252", + "service_id": "2002000000000558128851361561536", + "appid": "wxd678efh567hg6787", + "mchid": "1230000109", + "sub_appid": "wxd678efh567hg6999", + "sub_mchid": "1900000109", + "service_introduction": "羽毛球课程基础训练", + "state": "CREATED", + "state_description": "USER_CONFIRM", + "post_payments": [ + { + "name": "瑜伽课程20节", + "amount": 40000, + "description": "第6节课" + } + ], + "post_discounts": [ + { + "name": "享9折优惠", + "amount": 100 + } + ], + "risk_fund": { + "amount": 10000 + }, + "time_range": { + "start_time": "20091225091010", + "end_time": "20091225121010", + "start_time_remark": "备注1", + "end_time_remark": "备注2" + }, + "location": { + "start_location": "嗨客时尚主题展餐厅", + "end_location": "嗨客时尚主题展餐厅" + }, + "attach": "Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald", + "notify_url": "https://api.test.com", + "order_id": "0000300001201908301055157220022" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanUserSignPlanRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanUserSignPlanRequest.json new file mode 100644 index 00000000..a1cfabab --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanUserSignPlanRequest.json @@ -0,0 +1,17 @@ +{ + "service_id": "2002000000000558128851361561536", + "plan_id": "01000033210000324638000000376258", + "appid": "wxd678efh567hg6787", + "sub_mchid": "1900000109", + "sub_appid": "wxd678efh567hg6999", + "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o", + "sub_openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o", + "merchant_sign_plan_no": "1234323JKHDFE1243252", + "notify_url": "https://api.test.com", + "sign_plan_detail": [ + { + "plan_detail_no": 1, + "merchant_plan_detail_no": "1234323JKHDFE1243252" + } + ] +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanUserSignPlanResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanUserSignPlanResponse.json new file mode 100644 index 00000000..5778e813 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/CreatePayScorePartnerSignPlanUserSignPlanResponse.json @@ -0,0 +1,43 @@ +{ + "sign_plan": { + "sign_plan_id": "01010033210001424338000019876258", + "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o", + "sub_openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o", + "service_id": "2002000000000558128851361561536", + "mchid": "1900000109", + "sub_mchid": "1900000109", + "appid": "wxd678efh567hg6787", + "sub_appid": "wxd678efh567hg6787", + "merchant_sign_plan_no": "1234323JKHDFE1243252", + "merchant_callback_url": "https://api.test.com", + "plan_id": "01000033210000324638000000376258", + "going_detail_no": 2, + "sign_state": "UNSIGNED", + "cancel_sign_time": "2021-05-20T13:29:35.120+08:00", + "cancel_sign_type": "NOT_CANCEL", + "cancel_reason": "用户放弃课程", + "plan_name": "瑜伽晨练课10次", + "plan_over_time": "2021-05-20T13:29:35.120+08:00", + "total_origin_price": 150000, + "deduction_quantity": 10, + "total_actual_price": 120000, + "signed_detail_list": [ + { + "plan_detail_no": 1, + "original_price": 30000, + "plan_discount_description": "享9折优惠", + "actual_price": 27000, + "plan_detail_state": "NOT_USED", + "order_id": "0000300001201908301055157220022", + "merchant_plan_detail_no": "1234323JKHDFE1243252", + "plan_detail_name": "第一节课", + "actual_pay_price": 50000, + "use_time": "2021-05-20T13:29:35.120+08:00", + "complete_time": "2021-05-20T13:29:35.120+08:00", + "cancel_time": "2021-05-20T13:29:35.120+08:00" + } + ], + "sign_time": "2021-05-20T13:29:35.120+08:00" + }, + "package": "Easdfowealsdkjfnlaksjdlfkwqoi&wl3l2sald" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberResponse.json new file mode 100644 index 00000000..a05617d4 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberResponse.json @@ -0,0 +1,40 @@ +{ + "sign_plan_id": "01010033210001424338000019876258", + "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o", + "sub_openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o", + "service_id": "2002000000000558128851361561536", + "mchid": "1900000109", + "sub_mchid": "1900000109", + "appid": "wxd678efh567hg6787", + "sub_appid": "wxd678efh567hg6787", + "merchant_sign_plan_no": "1234323JKHDFE1243252", + "merchant_callback_url": "https://api.test.com", + "plan_id": "01000033210000324638000000376258", + "going_detail_no": 2, + "sign_state": "UNSIGNED", + "cancel_sign_time": "2021-05-20T13:29:35.120+08:00", + "cancel_sign_type": "NOT_CANCEL", + "cancel_reason": "用户放弃课程", + "plan_name": "瑜伽晨练课10次", + "plan_over_time": "2021-05-20T13:29:35.120+08:00", + "total_origin_price": 150000, + "deduction_quantity": 10, + "total_actual_price": 120000, + "signed_detail_list": [ + { + "plan_detail_no": 1, + "original_price": 30000, + "plan_discount_description": "享9折优惠", + "actual_price": 27000, + "plan_detail_state": "NOT_USED", + "order_id": "0000300001201908301055157220022", + "merchant_plan_detail_no": "1234323JKHDFE1243252", + "plan_detail_name": "第一节课", + "actual_pay_price": 50000, + "use_time": "2021-05-20T13:29:35.120+08:00", + "complete_time": "2021-05-20T13:29:35.120+08:00", + "cancel_time": "2021-05-20T13:29:35.120+08:00" + } + ], + "sign_time": "2021-05-20T13:29:35.120+08:00" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/StopPayScorePartnerSignPlanUserSignPlanRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/StopPayScorePartnerSignPlanUserSignPlanRequest.json new file mode 100644 index 00000000..ea40a0e1 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/StopPayScorePartnerSignPlanUserSignPlanRequest.json @@ -0,0 +1,4 @@ +{ + "sub_mchid": "1900000109", + "stop_reason": "用户协商后停止" +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/StopPayScorePartnerSignPlanUserSignPlanResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/StopPayScorePartnerSignPlanUserSignPlanResponse.json new file mode 100644 index 00000000..a05617d4 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/_/_Partner/PayScore/SignPlan/StopPayScorePartnerSignPlanUserSignPlanResponse.json @@ -0,0 +1,40 @@ +{ + "sign_plan_id": "01010033210001424338000019876258", + "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o", + "sub_openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o", + "service_id": "2002000000000558128851361561536", + "mchid": "1900000109", + "sub_mchid": "1900000109", + "appid": "wxd678efh567hg6787", + "sub_appid": "wxd678efh567hg6787", + "merchant_sign_plan_no": "1234323JKHDFE1243252", + "merchant_callback_url": "https://api.test.com", + "plan_id": "01000033210000324638000000376258", + "going_detail_no": 2, + "sign_state": "UNSIGNED", + "cancel_sign_time": "2021-05-20T13:29:35.120+08:00", + "cancel_sign_type": "NOT_CANCEL", + "cancel_reason": "用户放弃课程", + "plan_name": "瑜伽晨练课10次", + "plan_over_time": "2021-05-20T13:29:35.120+08:00", + "total_origin_price": 150000, + "deduction_quantity": 10, + "total_actual_price": 120000, + "signed_detail_list": [ + { + "plan_detail_no": 1, + "original_price": 30000, + "plan_discount_description": "享9折优惠", + "actual_price": 27000, + "plan_detail_state": "NOT_USED", + "order_id": "0000300001201908301055157220022", + "merchant_plan_detail_no": "1234323JKHDFE1243252", + "plan_detail_name": "第一节课", + "actual_pay_price": 50000, + "use_time": "2021-05-20T13:29:35.120+08:00", + "complete_time": "2021-05-20T13:29:35.120+08:00", + "cancel_time": "2021-05-20T13:29:35.120+08:00" + } + ], + "sign_time": "2021-05-20T13:29:35.120+08:00" +}