feat(tenpayv3): 新增微信支付分签约计划相关接口

This commit is contained in:
Fu Diwei 2024-05-16 11:50:33 +08:00
parent 4030fc5366
commit 8b2d5fd185
60 changed files with 2773 additions and 8 deletions

View File

@ -45,6 +45,7 @@
| × | <del>运营工具:转账到银行卡</del> | 直连商户 & 合作伙伴 | 官方未提供 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`

View File

@ -0,0 +1,168 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
{
/// <summary>
/// <para>表示 PAYSCORE.USER_SIGN_PLAN针对直连商户通知的数据。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/merchant/apis/payscore-plan/cancel-sign-plan-notice.html ]]> <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/merchant/apis/payscore-plan/sign-plan-notice.html ]]>
/// </para>
/// </summary>
public class PayScoreUserSignPlanResource : WechatTenpayEvent.Types.IDecryptedResource
{
public static class Types
{
public class SignPlanDetail : Models.GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse.Types.SignPlanDetail
{
}
}
/// <summary>
/// 获取或设置微信商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("mchid")]
[System.Text.Json.Serialization.JsonPropertyName("mchid")]
public string MerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置微信 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string AppId { get; set; } = default!;
/// <summary>
/// 获取或设置支付分计划 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_id")]
[System.Text.Json.Serialization.JsonPropertyName("plan_id")]
public string PlanId { get; set; } = default!;
/// <summary>
/// 获取或设置计划名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_name")]
[System.Text.Json.Serialization.JsonPropertyName("plan_name")]
public string PlanName { get; set; } = default!;
/// <summary>
/// 获取或设置服务 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("service_id")]
[System.Text.Json.Serialization.JsonPropertyName("service_id")]
public string ServiceId { get; set; } = default!;
/// <summary>
/// 获取或设置商户签约计划单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_sign_plan_no")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_sign_plan_no")]
public string OutSignPlanNumber { get; set; } = default!;
/// <summary>
/// 获取或设置签约计划 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("sign_plan_id")]
[System.Text.Json.Serialization.JsonPropertyName("sign_plan_id")]
public string SignPlanId { get; set; } = default!;
/// <summary>
/// 获取或设置计划状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("sign_state")]
[System.Text.Json.Serialization.JsonPropertyName("sign_state")]
public string SignState { get; set; } = default!;
/// <summary>
/// 获取或设置用户唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = default!;
/// <summary>
/// 获取或设置回调通知地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_callback_url")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_callback_url")]
public string? NotifyUrl { get; set; }
/// <summary>
/// 获取或设置目前用户进行到的计划明细序号。
/// </summary>
[Newtonsoft.Json.JsonProperty("going_detail_no")]
[System.Text.Json.Serialization.JsonPropertyName("going_detail_no")]
public int GoingDetailNumber { get; set; }
/// <summary>
/// 获取或设置计划过期时间。
/// </summary>
[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; }
/// <summary>
/// 获取或设置扣费次数。
/// </summary>
[Newtonsoft.Json.JsonProperty("deduction_quantity")]
[System.Text.Json.Serialization.JsonPropertyName("deduction_quantity")]
public int DeductionQuantity { get; set; }
/// <summary>
/// 获取或设置原总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_origin_price")]
[System.Text.Json.Serialization.JsonPropertyName("total_origin_price")]
public int TotalOriginalPrice { get; set; }
/// <summary>
/// 获取或设置实际总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_actual_price")]
[System.Text.Json.Serialization.JsonPropertyName("total_actual_price")]
public int TotalActualPrice { get; set; }
/// <summary>
/// 获取或设置签约时间。
/// </summary>
[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; }
/// <summary>
/// 获取或设置取消类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("cancel_sign_type")]
[System.Text.Json.Serialization.JsonPropertyName("cancel_sign_type")]
public string? CancelType { get; set; }
/// <summary>
/// 获取或设置取消原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("cancel_reason")]
[System.Text.Json.Serialization.JsonPropertyName("cancel_reason")]
public string? CancelReason { get; set; }
/// <summary>
/// 获取或设置取消时间。
/// </summary>
[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; }
/// <summary>
/// 获取或设置签约计划明细列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("signed_detail_list")]
[System.Text.Json.Serialization.JsonPropertyName("signed_detail_list")]
public Types.SignPlanDetail[]? SignPlanDetailList { get; set; }
}
}

View File

@ -0,0 +1,189 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events
{
/// <summary>
/// <para>表示 PAYSCORE.USER_SIGN_PLAN针对服务商通知的数据。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-payscore-plan/cancel-sign-plan-notice.html ]]> <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-payscore-plan/sign-plan-notice.html ]]>
/// </para>
/// </summary>
public class PayScorePartnerUserSignPlanResource : WechatTenpayEvent.Types.IDecryptedResource
{
public static class Types
{
public class SignPlanDetail : Models.GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberResponse.Types.SignPlanDetail
{
}
}
/// <summary>
/// 获取或设置微信商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("mchid")]
[System.Text.Json.Serialization.JsonPropertyName("mchid")]
public string MerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置微信 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string AppId { get; set; } = default!;
/// <summary>
/// 获取或设置子商户 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_appid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_appid")]
public string? SubAppId { get; set; }
/// <summary>
/// 获取或设置支付分计划 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_id")]
[System.Text.Json.Serialization.JsonPropertyName("plan_id")]
public string PlanId { get; set; } = default!;
/// <summary>
/// 获取或设置计划名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_name")]
[System.Text.Json.Serialization.JsonPropertyName("plan_name")]
public string PlanName { get; set; } = default!;
/// <summary>
/// 获取或设置服务 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("service_id")]
[System.Text.Json.Serialization.JsonPropertyName("service_id")]
public string ServiceId { get; set; } = default!;
/// <summary>
/// 获取或设置商户签约计划单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_sign_plan_no")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_sign_plan_no")]
public string OutSignPlanNumber { get; set; } = default!;
/// <summary>
/// 获取或设置签约计划 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("sign_plan_id")]
[System.Text.Json.Serialization.JsonPropertyName("sign_plan_id")]
public string SignPlanId { get; set; } = default!;
/// <summary>
/// 获取或设置计划状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("sign_state")]
[System.Text.Json.Serialization.JsonPropertyName("sign_state")]
public string SignState { get; set; } = default!;
/// <summary>
/// 获取或设置用户唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = default!;
/// <summary>
/// 获取或设置用户在子商户下的唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_openid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_openid")]
public string? SubOpenId { get; set; }
/// <summary>
/// 获取或设置回调通知地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_callback_url")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_callback_url")]
public string? NotifyUrl { get; set; }
/// <summary>
/// 获取或设置目前用户进行到的计划明细序号。
/// </summary>
[Newtonsoft.Json.JsonProperty("going_detail_no")]
[System.Text.Json.Serialization.JsonPropertyName("going_detail_no")]
public int GoingDetailNumber { get; set; }
/// <summary>
/// 获取或设置计划过期时间。
/// </summary>
[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; }
/// <summary>
/// 获取或设置扣费次数。
/// </summary>
[Newtonsoft.Json.JsonProperty("deduction_quantity")]
[System.Text.Json.Serialization.JsonPropertyName("deduction_quantity")]
public int DeductionQuantity { get; set; }
/// <summary>
/// 获取或设置原总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_origin_price")]
[System.Text.Json.Serialization.JsonPropertyName("total_origin_price")]
public int TotalOriginalPrice { get; set; }
/// <summary>
/// 获取或设置实际总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_actual_price")]
[System.Text.Json.Serialization.JsonPropertyName("total_actual_price")]
public int TotalActualPrice { get; set; }
/// <summary>
/// 获取或设置签约时间。
/// </summary>
[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; }
/// <summary>
/// 获取或设置取消类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("cancel_sign_type")]
[System.Text.Json.Serialization.JsonPropertyName("cancel_sign_type")]
public string? CancelType { get; set; }
/// <summary>
/// 获取或设置取消原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("cancel_reason")]
[System.Text.Json.Serialization.JsonPropertyName("cancel_reason")]
public string? CancelReason { get; set; }
/// <summary>
/// 获取或设置取消时间。
/// </summary>
[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; }
/// <summary>
/// 获取或设置签约计划明细列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("signed_detail_list")]
[System.Text.Json.Serialization.JsonPropertyName("signed_detail_list")]
public Types.SignPlanDetail[]? SignPlanDetailList { get; set; }
}
}

View File

@ -124,6 +124,74 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
}
#endregion
#region Plan
/// <summary>
/// <para>异步调用 [POST] /payscore/plan/payscore-plans 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/merchant/apis/payscore-plan/pay-score-plan/create-pay-score-plan.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreatePayScorePlanResponse> 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<Models.CreatePayScorePlanResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [GET] /payscore/plan/payscore-plans/merchant-plan-no/{merchant_plan_no} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/merchant/apis/payscore-plan/pay-score-plan/query-pay-score-plan.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetPayScorePlanByOutPlanNumberResponse> 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<Models.GetPayScorePlanByOutPlanNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /payscore/plan/payscore-plans/merchant-plan-no/{merchant_plan_no}/stop 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/merchant/apis/payscore-plan/pay-score-plan/stop-pay-score-plan.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.StopPayScorePlanResponse> 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<Models.StopPayScorePlanResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region ServiceOrder
/// <summary>
/// <para>异步调用 [POST] /payscore/serviceorder/direct-complete 接口。</para>
@ -329,5 +397,95 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
return await client.SendFlurlRequestAsJsonAsync<Models.SetPayScoreServiceOrderSyncResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region SignPlan
/// <summary>
/// <para>异步调用 [POST] /payscore/sign-plan/serviceorder 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/merchant/apis/payscore-plan/service-order/create-service-order.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreatePayScoreSignPlanServiceOrderResponse> 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<Models.CreatePayScoreSignPlanServiceOrderResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /payscore/sign-plan/user-sign-plans 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/merchant/apis/payscore-plan/user-sign-plan/create-user-sign-plan.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreatePayScoreSignPlanUserSignPlanResponse> 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<Models.CreatePayScoreSignPlanUserSignPlanResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [GET] /payscore/sign-plan/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/merchant/apis/payscore-plan/user-sign-plan/query-user-sign-plan.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse> 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<Models.GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /payscore/sign-plan/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no}/stop 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/merchant/apis/payscore-plan/user-sign-plan/query-user-sign-plan.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.StopPayScoreSignPlanUserSignPlanResponse> 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<Models.StopPayScoreSignPlanUserSignPlanResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
}
}

View File

@ -133,6 +133,75 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
}
#endregion
#region Plan
/// <summary>
/// <para>异步调用 [POST] /payscore/plan/partner/payscore-plans 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-payscore-plan/partner-pay-score-plan/create-partner-pay-score-plan.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreatePayScorePartnerPlanResponse> 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<Models.CreatePayScorePartnerPlanResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [GET] /payscore/plan/partner/payscore-plans/merchant-plan-no/{merchant_plan_no} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-payscore-plan/partner-pay-score-plan/query-partner-pay-score-plan.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetPayScorePartnerPlanByOutPlanNumberResponse> 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<Models.GetPayScorePartnerPlanByOutPlanNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /payscore/plan/partner/payscore-plans/merchant-plan-no/{merchant_plan_no}/stop 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-payscore-plan/partner-pay-score-plan/stop-partner-pay-score-plan.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.StopPayScorePartnerPlanResponse> 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<Models.StopPayScorePartnerPlanResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region ServiceOrder
/// <summary>
/// <para>异步调用 [POST] /payscore/partner/serviceorder 接口。</para>
@ -344,5 +413,96 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
return await client.SendFlurlRequestAsJsonAsync<Models.GetPayScorePartnerServiceQuotasByServiceIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region SignPlan
/// <summary>
/// <para>异步调用 [POST] /payscore/sign-plan/partner/serviceorder 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-payscore-plan/partner-service-order/create-partner-service-order.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreatePayScorePartnerSignPlanServiceOrderResponse> 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<Models.CreatePayScorePartnerSignPlanServiceOrderResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /payscore/sign-plan/partner/user-sign-plans 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-payscore-plan/partner-user-sign-plan/create-partner-user-sign-plan.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreatePayScorePartnerSignPlanUserSignPlanResponse> 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<Models.CreatePayScorePartnerSignPlanUserSignPlanResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [GET] /payscore/sign-plan/partner/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-payscore-plan/partner-user-sign-plan/query-partner-user-sign-plan.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberResponse> 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<Models.GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /payscore/sign-plan/partner/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no}/stop 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/docs/partner/apis/partner-payscore-plan/partner-user-sign-plan/stop-partner-user-sign-plan.html ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.StopPayScorePartnerSignPlanUserSignPlanResponse> 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<Models.StopPayScorePartnerSignPlanUserSignPlanResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
}
}

View File

@ -0,0 +1,107 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/plan/payscore-plans 接口的请求。</para>
/// </summary>
public class CreatePayScorePlanRequest : WechatTenpayRequest
{
public static class Types
{
public class PlanDetail
{
/// <summary>
/// 获取或设置明细名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_detail_name")]
[System.Text.Json.Serialization.JsonPropertyName("plan_detail_name")]
public string DetailName { get; set; } = string.Empty;
/// <summary>
/// 获取或设置优惠说明。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_discount_description")]
[System.Text.Json.Serialization.JsonPropertyName("plan_discount_description")]
public string? DiscountDescription { get; set; }
/// <summary>
/// 获取或设置原支付金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("original_price")]
[System.Text.Json.Serialization.JsonPropertyName("original_price")]
public int OriginalPrice { get; set; }
/// <summary>
/// 获取或设置实际支付金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("actual_price")]
[System.Text.Json.Serialization.JsonPropertyName("actual_price")]
public int ActualPrice { get; set; }
}
}
/// <summary>
/// 获取或设置微信 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string AppId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置商户计划号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_plan_no")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_plan_no")]
public string OutPlanNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置服务 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("service_id")]
[System.Text.Json.Serialization.JsonPropertyName("service_id")]
public string ServiceId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置计划名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_name")]
[System.Text.Json.Serialization.JsonPropertyName("plan_name")]
public string PlanName { get; set; } = string.Empty;
/// <summary>
/// 获取或设置计划有效期(单位:天)。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_duration")]
[System.Text.Json.Serialization.JsonPropertyName("plan_duration")]
public int PlanDuration { get; set; }
/// <summary>
/// 获取或设置扣费次数。
/// </summary>
[Newtonsoft.Json.JsonProperty("deduction_quantity")]
[System.Text.Json.Serialization.JsonPropertyName("deduction_quantity")]
public int DeductionQuantity { get; set; }
/// <summary>
/// 获取或设置原总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_original_price")]
[System.Text.Json.Serialization.JsonPropertyName("total_original_price")]
public int TotalOriginalPrice { get; set; }
/// <summary>
/// 获取或设置实际总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_actual_price")]
[System.Text.Json.Serialization.JsonPropertyName("total_actual_price")]
public int TotalActualPrice { get; set; }
/// <summary>
/// 获取或设置计划明细列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_detail_list")]
[System.Text.Json.Serialization.JsonPropertyName("plan_detail_list")]
public IList<Types.PlanDetail>? PlanDetailList { get; set; }
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/plan/payscore-plans 接口的响应。</para>
/// </summary>
public class CreatePayScorePlanResponse : GetPayScorePlanByOutPlanNumberResponse
{
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /payscore/plan/payscore-plans/merchant-plan-no/{merchant_plan_no} 接口的请求。</para>
/// </summary>
public class GetPayScorePlanByOutPlanNumberRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置商户计划号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string OutPlanNumber { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,151 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /payscore/plan/payscore-plans/merchant-plan-no/{merchant_plan_no} 接口的响应。</para>
/// </summary>
public class GetPayScorePlanByOutPlanNumberResponse : WechatTenpayResponse
{
public static class Types
{
public class PlanDetail
{
/// <summary>
/// 获取或设置明细序号。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_detail_no")]
[System.Text.Json.Serialization.JsonPropertyName("plan_detail_no")]
public int DetailNumber { get; set; } = default!;
/// <summary>
/// 获取或设置明细名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_detail_name")]
[System.Text.Json.Serialization.JsonPropertyName("plan_detail_name")]
public string DetailName { get; set; } = default!;
/// <summary>
/// 获取或设置优惠说明。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_discount_description")]
[System.Text.Json.Serialization.JsonPropertyName("plan_discount_description")]
public string? DiscountDescription { get; set; }
/// <summary>
/// 获取或设置原支付金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("original_price")]
[System.Text.Json.Serialization.JsonPropertyName("original_price")]
public int OriginalPrice { get; set; }
/// <summary>
/// 获取或设置实际支付金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("actual_price")]
[System.Text.Json.Serialization.JsonPropertyName("actual_price")]
public int ActualPrice { get; set; }
}
}
/// <summary>
/// 获取或设置微信商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("mchid")]
[System.Text.Json.Serialization.JsonPropertyName("mchid")]
public string MerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置微信 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string AppId { get; set; } = default!;
/// <summary>
/// 获取或设置商户计划号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_plan_no")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_plan_no")]
public string OutPlanNumber { get; set; } = default!;
/// <summary>
/// 获取或设置支付分计划 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_id")]
[System.Text.Json.Serialization.JsonPropertyName("plan_id")]
public string PlanId { get; set; } = default!;
/// <summary>
/// 获取或设置服务 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("service_id")]
[System.Text.Json.Serialization.JsonPropertyName("service_id")]
public string ServiceId { get; set; } = default!;
/// <summary>
/// 获取或设置计划名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_name")]
[System.Text.Json.Serialization.JsonPropertyName("plan_name")]
public string PlanName { get; set; } = default!;
/// <summary>
/// 获取或设置计划有效期(单位:天)。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_duration")]
[System.Text.Json.Serialization.JsonPropertyName("plan_duration")]
public int PlanDuration { get; set; }
/// <summary>
/// 获取或设置计划状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_state")]
[System.Text.Json.Serialization.JsonPropertyName("plan_state")]
public string PlanState { get; set; } = default!;
/// <summary>
/// 获取或设置扣费次数。
/// </summary>
[Newtonsoft.Json.JsonProperty("deduction_quantity")]
[System.Text.Json.Serialization.JsonPropertyName("deduction_quantity")]
public int DeductionQuantity { get; set; }
/// <summary>
/// 获取或设置原总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_original_price")]
[System.Text.Json.Serialization.JsonPropertyName("total_original_price")]
public int TotalOriginalPrice { get; set; }
/// <summary>
/// 获取或设置实际总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_actual_price")]
[System.Text.Json.Serialization.JsonPropertyName("total_actual_price")]
public int TotalActualPrice { get; set; }
/// <summary>
/// 获取或设置计划明细列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_detail_list")]
[System.Text.Json.Serialization.JsonPropertyName("plan_detail_list")]
public Types.PlanDetail[]? PlanDetailList { get; set; }
/// <summary>
/// 获取或设置终止方商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("stop_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("stop_mchid")]
public string? StopMerchantId { get; set; }
/// <summary>
/// 获取或设置终止时间。
/// </summary>
[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; }
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/plan/payscore-plans/merchant-plan-no/{merchant_plan_no}/stop 接口的请求。</para>
/// </summary>
public class StopPayScorePlanRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置商户计划号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string OutPlanNumber { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/plan/payscore-plans/merchant-plan-no/{merchant_plan_no}/stop 接口的响应。</para>
/// </summary>
public class StopPayScorePlanResponse : GetPayScorePlanByOutPlanNumberResponse
{
}
}

View File

@ -109,14 +109,14 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
/// </summary>
[Newtonsoft.Json.JsonProperty("start_location")]
[System.Text.Json.Serialization.JsonPropertyName("start_location")]
public string StartLocation { get; set; } = string.Empty;
public string? StartLocation { get; set; }
/// <summary>
/// 获取或设置服务结束地点。
/// </summary>
[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

View File

@ -0,0 +1,96 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/sign-plan/serviceorder 接口的请求。</para>
/// </summary>
public class CreatePayScoreSignPlanServiceOrderRequest : WechatTenpayRequest
{
public static class Types
{
public class TimeRange : CreatePayScoreServiceOrderRequest.Types.TimeRange
{
}
public class Location : CreatePayScoreServiceOrderRequest.Types.Location
{
}
}
/// <summary>
/// 获取或设置微信 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string AppId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置待签约支付分计划 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("sign_plan_id")]
[System.Text.Json.Serialization.JsonPropertyName("sign_plan_id")]
public string SignPlanId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置签约计划明细序号。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_detail_no")]
[System.Text.Json.Serialization.JsonPropertyName("plan_detail_no")]
public int PlanDetailNumber { get; set; }
/// <summary>
/// 获取或设置服务 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("service_id")]
[System.Text.Json.Serialization.JsonPropertyName("service_id")]
public string ServiceId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置服务信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("service_introduction")]
[System.Text.Json.Serialization.JsonPropertyName("service_introduction")]
public string ServiceInstruction { get; set; } = string.Empty;
/// <summary>
/// 获取或设置商户订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_trade_no")]
[System.Text.Json.Serialization.JsonPropertyName("out_trade_no")]
public string OutTradeNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置用户唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置附加数据。
/// </summary>
[Newtonsoft.Json.JsonProperty("attach")]
[System.Text.Json.Serialization.JsonPropertyName("attach")]
public string? Attachment { get; set; }
/// <summary>
/// 获取或设置回调通知地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("notify_url")]
[System.Text.Json.Serialization.JsonPropertyName("notify_url")]
public string? NotifyUrl { get; set; }
/// <summary>
/// 获取或设置服务时间段信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("time_range")]
[System.Text.Json.Serialization.JsonPropertyName("time_range")]
public Types.TimeRange TimeRange { get; set; } = new Types.TimeRange();
/// <summary>
/// 获取或设置服务位置信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("location")]
[System.Text.Json.Serialization.JsonPropertyName("location")]
public Types.Location? Location { get; set; }
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/sign-plan/serviceorder 接口的响应。</para>
/// </summary>
public class CreatePayScoreSignPlanServiceOrderResponse : GetPayScoreServiceOrderByOutOrderNumberResponse
{
}
}

View File

@ -0,0 +1,79 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/sign-plan/user-sign-plans 接口的请求。</para>
/// </summary>
public class CreatePayScoreSignPlanUserSignPlanRequest : WechatTenpayRequest
{
public static class Types
{
public class SignPlanDetail
{
/// <summary>
/// 获取或设置计划明细序号。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_detail_no")]
[System.Text.Json.Serialization.JsonPropertyName("plan_detail_no")]
public int PlanDetailNumber { get; set; }
/// <summary>
/// 获取或设置商户计划明细使用订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_plan_detail_no")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_plan_detail_no")]
public string OutPlanDetailNumber { get; set; } = string.Empty;
}
}
/// <summary>
/// 获取或设置微信 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string AppId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置支付分计划 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_id")]
[System.Text.Json.Serialization.JsonPropertyName("plan_id")]
public string PlanId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置服务 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("service_id")]
[System.Text.Json.Serialization.JsonPropertyName("service_id")]
public string ServiceId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置商户签约计划单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_sign_plan_no")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_sign_plan_no")]
public string OutSignPlanNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置用户唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置回调通知地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("notify_url")]
[System.Text.Json.Serialization.JsonPropertyName("notify_url")]
public string? NotifyUrl { get; set; }
/// <summary>
/// 获取或设置签约计划明细列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("sign_plan_detail")]
[System.Text.Json.Serialization.JsonPropertyName("sign_plan_detail")]
public IList<Types.SignPlanDetail>? SignPlanDetailList { get; set; }
}
}

View File

@ -0,0 +1,183 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/sign-plan/user-sign-plans 接口的响应。</para>
/// </summary>
public class CreatePayScoreSignPlanUserSignPlanResponse : WechatTenpayResponse
{
public static class Types
{
public class SignPlan
{
public static class Types
{
public class SignPlanDetail : GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse.Types.SignPlanDetail
{
}
}
/// <summary>
/// 获取或设置微信商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("mchid")]
[System.Text.Json.Serialization.JsonPropertyName("mchid")]
public string MerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置微信 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string AppId { get; set; } = default!;
/// <summary>
/// 获取或设置支付分计划 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_id")]
[System.Text.Json.Serialization.JsonPropertyName("plan_id")]
public string PlanId { get; set; } = default!;
/// <summary>
/// 获取或设置计划名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_name")]
[System.Text.Json.Serialization.JsonPropertyName("plan_name")]
public string PlanName { get; set; } = default!;
/// <summary>
/// 获取或设置服务 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("service_id")]
[System.Text.Json.Serialization.JsonPropertyName("service_id")]
public string ServiceId { get; set; } = default!;
/// <summary>
/// 获取或设置商户签约计划单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_sign_plan_no")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_sign_plan_no")]
public string OutSignPlanNumber { get; set; } = default!;
/// <summary>
/// 获取或设置签约计划 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("sign_plan_id")]
[System.Text.Json.Serialization.JsonPropertyName("sign_plan_id")]
public string SignPlanId { get; set; } = default!;
/// <summary>
/// 获取或设置计划状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("sign_state")]
[System.Text.Json.Serialization.JsonPropertyName("sign_state")]
public string SignState { get; set; } = default!;
/// <summary>
/// 获取或设置用户唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = default!;
/// <summary>
/// 获取或设置回调通知地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_callback_url")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_callback_url")]
public string? NotifyUrl { get; set; }
/// <summary>
/// 获取或设置目前用户进行到的计划明细序号。
/// </summary>
[Newtonsoft.Json.JsonProperty("going_detail_no")]
[System.Text.Json.Serialization.JsonPropertyName("going_detail_no")]
public int GoingDetailNumber { get; set; }
/// <summary>
/// 获取或设置计划过期时间。
/// </summary>
[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; }
/// <summary>
/// 获取或设置扣费次数。
/// </summary>
[Newtonsoft.Json.JsonProperty("deduction_quantity")]
[System.Text.Json.Serialization.JsonPropertyName("deduction_quantity")]
public int DeductionQuantity { get; set; }
/// <summary>
/// 获取或设置原总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_origin_price")]
[System.Text.Json.Serialization.JsonPropertyName("total_origin_price")]
public int TotalOriginalPrice { get; set; }
/// <summary>
/// 获取或设置实际总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_actual_price")]
[System.Text.Json.Serialization.JsonPropertyName("total_actual_price")]
public int TotalActualPrice { get; set; }
/// <summary>
/// 获取或设置签约时间。
/// </summary>
[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; }
/// <summary>
/// 获取或设置取消类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("cancel_sign_type")]
[System.Text.Json.Serialization.JsonPropertyName("cancel_sign_type")]
public string? CancelType { get; set; }
/// <summary>
/// 获取或设置取消原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("cancel_reason")]
[System.Text.Json.Serialization.JsonPropertyName("cancel_reason")]
public string? CancelReason { get; set; }
/// <summary>
/// 获取或设置取消时间。
/// </summary>
[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; }
/// <summary>
/// 获取或设置签约计划明细列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("signed_detail_list")]
[System.Text.Json.Serialization.JsonPropertyName("signed_detail_list")]
public Types.SignPlanDetail[]? SignPlanDetailList { get; set; }
}
}
/// <summary>
/// 获取或设置跳转微信侧小程序订单数据。
/// </summary>
[Newtonsoft.Json.JsonProperty("package")]
[System.Text.Json.Serialization.JsonPropertyName("package")]
public string Package { get; set; } = default!;
/// <summary>
/// 获取或设置待签约计划信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("sign_plan")]
[System.Text.Json.Serialization.JsonPropertyName("sign_plan")]
public Types.SignPlan SignPlan { get; set; } = default!;
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /payscore/sign-plan/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no} 接口的请求。</para>
/// </summary>
public class GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置商户签约计划单号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string OutSignPlanNumber { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,252 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /payscore/sign-plan/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no} 接口的响应。</para>
/// </summary>
public class GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse : WechatTenpayResponse
{
public static class Types
{
public class SignPlanDetail
{
/// <summary>
/// 获取或设置计划明细序号。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_detail_no")]
[System.Text.Json.Serialization.JsonPropertyName("plan_detail_no")]
public int PlanDetailNumber { get; set; }
/// <summary>
/// 获取或设置明细名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_detail_name")]
[System.Text.Json.Serialization.JsonPropertyName("plan_detail_name")]
public string PlanDetailName { get; set; } = default!;
/// <summary>
/// 获取或设置明细状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_detail_state")]
[System.Text.Json.Serialization.JsonPropertyName("plan_detail_state")]
public string PlanDetailState { get; set; } = default!;
/// <summary>
/// 获取或设置优惠说明。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_discount_description")]
[System.Text.Json.Serialization.JsonPropertyName("plan_discount_description")]
public string? DiscountDescription { get; set; }
/// <summary>
/// 获取或设置原支付金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("original_price")]
[System.Text.Json.Serialization.JsonPropertyName("original_price")]
public int OriginalPrice { get; set; }
/// <summary>
/// 获取或设置实际支付金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("actual_price")]
[System.Text.Json.Serialization.JsonPropertyName("actual_price")]
public int ActualPrice { get; set; }
/// <summary>
/// 获取或设置实际支付金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("actual_pay_price")]
[System.Text.Json.Serialization.JsonPropertyName("actual_pay_price")]
public int? ActualPayPrice { get; set; }
/// <summary>
/// 获取或设置商户计划明细使用订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_plan_detail_no")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_plan_detail_no")]
public string OutPlanDetailNumber { get; set; } = default!;
/// <summary>
/// 获取或设置微信支付服务订单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public string? OrderId { get; set; }
/// <summary>
/// 获取或设置使用时间。
/// </summary>
[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; }
/// <summary>
/// 获取或设置完成时间。
/// </summary>
[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; }
/// <summary>
/// 获取或设置取消时间。
/// </summary>
[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; }
}
}
/// <summary>
/// 获取或设置微信商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("mchid")]
[System.Text.Json.Serialization.JsonPropertyName("mchid")]
public string MerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置微信 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("appid")]
[System.Text.Json.Serialization.JsonPropertyName("appid")]
public string AppId { get; set; } = default!;
/// <summary>
/// 获取或设置支付分计划 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_id")]
[System.Text.Json.Serialization.JsonPropertyName("plan_id")]
public string PlanId { get; set; } = default!;
/// <summary>
/// 获取或设置计划名称。
/// </summary>
[Newtonsoft.Json.JsonProperty("plan_name")]
[System.Text.Json.Serialization.JsonPropertyName("plan_name")]
public string PlanName { get; set; } = default!;
/// <summary>
/// 获取或设置服务 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("service_id")]
[System.Text.Json.Serialization.JsonPropertyName("service_id")]
public string ServiceId { get; set; } = default!;
/// <summary>
/// 获取或设置商户签约计划单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_sign_plan_no")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_sign_plan_no")]
public string OutSignPlanNumber { get; set; } = default!;
/// <summary>
/// 获取或设置签约计划 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("sign_plan_id")]
[System.Text.Json.Serialization.JsonPropertyName("sign_plan_id")]
public string SignPlanId { get; set; } = default!;
/// <summary>
/// 获取或设置计划状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("sign_state")]
[System.Text.Json.Serialization.JsonPropertyName("sign_state")]
public string SignState { get; set; } = default!;
/// <summary>
/// 获取或设置用户唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("openid")]
[System.Text.Json.Serialization.JsonPropertyName("openid")]
public string OpenId { get; set; } = default!;
/// <summary>
/// 获取或设置回调通知地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("merchant_callback_url")]
[System.Text.Json.Serialization.JsonPropertyName("merchant_callback_url")]
public string? NotifyUrl { get; set; }
/// <summary>
/// 获取或设置目前用户进行到的计划明细序号。
/// </summary>
[Newtonsoft.Json.JsonProperty("going_detail_no")]
[System.Text.Json.Serialization.JsonPropertyName("going_detail_no")]
public int GoingDetailNumber { get; set; }
/// <summary>
/// 获取或设置计划过期时间。
/// </summary>
[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; }
/// <summary>
/// 获取或设置扣费次数。
/// </summary>
[Newtonsoft.Json.JsonProperty("deduction_quantity")]
[System.Text.Json.Serialization.JsonPropertyName("deduction_quantity")]
public int DeductionQuantity { get; set; }
/// <summary>
/// 获取或设置原总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_origin_price")]
[System.Text.Json.Serialization.JsonPropertyName("total_origin_price")]
public int TotalOriginalPrice { get; set; }
/// <summary>
/// 获取或设置实际总金额(单位:分)。
/// </summary>
[Newtonsoft.Json.JsonProperty("total_actual_price")]
[System.Text.Json.Serialization.JsonPropertyName("total_actual_price")]
public int TotalActualPrice { get; set; }
/// <summary>
/// 获取或设置签约时间。
/// </summary>
[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; }
/// <summary>
/// 获取或设置取消类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("cancel_sign_type")]
[System.Text.Json.Serialization.JsonPropertyName("cancel_sign_type")]
public string? CancelType { get; set; }
/// <summary>
/// 获取或设置取消原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("cancel_reason")]
[System.Text.Json.Serialization.JsonPropertyName("cancel_reason")]
public string? CancelReason { get; set; }
/// <summary>
/// 获取或设置取消时间。
/// </summary>
[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; }
/// <summary>
/// 获取或设置签约计划明细列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("signed_detail_list")]
[System.Text.Json.Serialization.JsonPropertyName("signed_detail_list")]
public Types.SignPlanDetail[]? SignPlanDetailList { get; set; }
}
}

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/sign-plan/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no}/stop 接口的请求。</para>
/// </summary>
public class StopPayScoreSignPlanUserSignPlanRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置商户签约计划单号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string OutSignPlanNumber { get; set; } = string.Empty;
/// <summary>
/// 获取或设置停止原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("stop_reason")]
[System.Text.Json.Serialization.JsonPropertyName("stop_reason")]
public string? StopReason { get; set; }
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/sign-plan/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no}/stop 接口的响应。</para>
/// </summary>
public class StopPayScoreSignPlanUserSignPlanResponse : GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse
{
}
}

View File

@ -11,12 +11,6 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
public class Payer : GetEducationPAPayTransactionByOutTradeNumberResponse.Types.Payer
{
/// <summary>
/// 获取或设置用户在子商户下唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_openid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_openid")]
public string? SubOpenId { get; set; }
}
public class Amount : GetEducationPAPayTransactionByOutTradeNumberResponse.Types.Amount

View File

@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/plan/partner/payscore-plans 接口的请求。</para>
/// </summary>
public class CreatePayScorePartnerPlanRequest : CreatePayScorePlanRequest
{
public static new class Types
{
public class PlanDetail : CreatePayScorePlanRequest.Types.PlanDetail
{
}
}
/// <summary>
/// 获取或设置子商户 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置子商户 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_appid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_appid")]
public string? SubAppId { get; set; }
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/plan/partner/payscore-plans 接口的响应。</para>
/// </summary>
public class CreatePayScorePartnerPlanResponse : GetPayScorePartnerPlanByOutPlanNumberResponse
{
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /payscore/plan/partner/payscore-plans/merchant-plan-no/{merchant_plan_no} 接口的请求。</para>
/// </summary>
public class GetPayScorePartnerPlanByOutPlanNumberRequest : GetPayScorePlanByOutPlanNumberRequest
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string SubMerchantId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,24 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /payscore/plan/partner/payscore-plans/merchant-plan-no/{merchant_plan_no} 接口的响应。</para>
/// </summary>
public class GetPayScorePartnerPlanByOutPlanNumberResponse : GetPayScorePlanByOutPlanNumberResponse
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置子商户 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_appid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_appid")]
public string? SubAppId { get; set; }
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/plan/partner/payscore-plans/merchant-plan-no/{merchant_plan_no}/stop 接口的请求。</para>
/// </summary>
public class StopPayScorePartnerPlanRequest : StopPayScorePlanRequest
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/plan/partner/payscore-plans/merchant-plan-no/{merchant_plan_no}/stop 接口的响应。</para>
/// </summary>
public class StopPayScorePartnerPlanResponse : GetPayScorePartnerPlanByOutPlanNumberResponse
{
}
}

View File

@ -0,0 +1,40 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/sign-plan/partner/serviceorder 接口的请求。</para>
/// </summary>
public class CreatePayScorePartnerSignPlanServiceOrderRequest : CreatePayScoreSignPlanServiceOrderRequest
{
public static new class Types
{
public class TimeRange : CreatePayScorePartnerServiceOrderRequest.Types.TimeRange
{
}
public class Location : CreatePayScorePartnerServiceOrderRequest.Types.Location
{
}
}
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置子商户 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_appid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_appid")]
public string? SubAppId { get; set; }
/// <summary>
/// 获取或设置用户在子商户下的唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_openid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_openid")]
public string? SubOpenId { get; set; }
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/sign-plan/partner/serviceorder 接口的响应。</para>
/// </summary>
public class CreatePayScorePartnerSignPlanServiceOrderResponse : GetPayScorePartnerServiceOrderByOutOrderNumberResponse
{
}
}

View File

@ -0,0 +1,36 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/sign-plan/partner/user-sign-plans 接口的请求。</para>
/// </summary>
public class CreatePayScorePartnerSignPlanUserSignPlanRequest : CreatePayScoreSignPlanUserSignPlanRequest
{
public static new class Types
{
public class SignPlanDetail : CreatePayScoreSignPlanUserSignPlanRequest.Types.SignPlanDetail
{
}
}
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置子商户 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_appid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_appid")]
public string SubAppId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置用户在子商户下的唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_openid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_openid")]
public string? SubOpenId { get; set; }
}
}

View File

@ -0,0 +1,49 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/sign-plan/partner/user-sign-plans 接口的响应。</para>
/// </summary>
public class CreatePayScorePartnerSignPlanUserSignPlanResponse : WechatTenpayResponse
{
public static class Types
{
public class SignPlan : CreatePayScoreSignPlanUserSignPlanResponse.Types.SignPlan
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置子商户 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_appid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_appid")]
public string? SubAppId { get; set; }
/// <summary>
/// 获取或设置用户在子商户下的唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_openid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_openid")]
public string? SubOpenId { get; set; }
}
}
/// <summary>
/// 获取或设置跳转微信侧小程序订单数据。
/// </summary>
[Newtonsoft.Json.JsonProperty("package")]
[System.Text.Json.Serialization.JsonPropertyName("package")]
public string Package { get; set; } = default!;
/// <summary>
/// 获取或设置待签约计划信息。
/// </summary>
[Newtonsoft.Json.JsonProperty("sign_plan")]
[System.Text.Json.Serialization.JsonPropertyName("sign_plan")]
public Types.SignPlan SignPlan { get; set; } = default!;
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /payscore/sign-plan/partner/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no} 接口的请求。</para>
/// </summary>
public class GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberRequest : GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberRequest
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string SubMerchantId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,29 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [GET] /payscore/sign-plan/partner/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no} 接口的响应。</para>
/// </summary>
public class GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberResponse : GetPayScoreSignPlanUserSignPlanByOutSignPlanNumberResponse
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置子商户 AppId。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_appid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_appid")]
public string? SubAppId { get; set; }
/// <summary>
/// 获取或设置用户在子商户下的唯一标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_openid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_openid")]
public string? SubOpenId { get; set; }
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/sign-plan/partner/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no}/stop 接口的请求。</para>
/// </summary>
public class StopPayScorePartnerSignPlanUserSignPlanRequest : StopPayScoreSignPlanUserSignPlanRequest
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models
{
/// <summary>
/// <para>表示 [POST] /payscore/sign-plan/partner/user-sign-plans/merchant-sign-plan-no/{merchant_sign_plan_no}/stop 接口的响应。</para>
/// </summary>
public class StopPayScorePartnerSignPlanUserSignPlanResponse : GetPayScorePartnerSignPlanUserSignPlanByOutSignPlanNumberResponse
{
}
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}
]
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -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"
}
]
}

View File

@ -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"
}

View File

@ -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"
}

View File

@ -0,0 +1,4 @@
{
"sub_mchid": "1900000109",
"stop_reason": "用户协商后停止"
}

View File

@ -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"
}