using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Flurl;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3
{
///
/// 为 提供微信支付分相关的 API 扩展方法。
///
public static class WechatTenpayClientExecutePayScoreServiceOrderExtensions
{
///
/// 异步调用 [POST] /payscore/serviceorder/direct-complete 接口。
/// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter6_1_1.shtml
///
///
///
///
///
public static async Task ExecuteCreatePayScoreServiceOrderDirectCompleteAsync(this WechatTenpayClient client, Models.CreatePayScoreServiceOrderDirectCompleteRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "payscore", "serviceorder", "direct-complete");
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /payscore/serviceorder 接口。
/// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter6_1_14.shtml
///
///
///
///
///
public static async Task ExecuteCreatePayScoreServiceOrderAsync(this WechatTenpayClient client, Models.CreatePayScoreServiceOrderRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "payscore", "serviceorder");
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [GET] /payscore/serviceorder 接口。
/// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter6_1_15.shtml
///
///
///
///
///
public static async Task ExecuteGetPayScoreServiceOrderByOutOrderNumberAsync(this WechatTenpayClient client, Models.GetPayScoreServiceOrderByOutOrderNumberRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Get, "payscore", "serviceorder")
.SetQueryParam("out_order_no", request.OutOrderNumber)
.SetQueryParam("service_id", request.ServiceId)
.SetQueryParam("appid", request.AppId);
return await client.SendRequestWithJsonAsync(flurlReq, cancellationToken: cancellationToken);
}
///
/// 异步调用 [GET] /payscore/serviceorder 接口。
/// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter6_1_15.shtml
///
///
///
///
///
public static async Task ExecuteGetPayScoreServiceOrderByQueryIdAsync(this WechatTenpayClient client, Models.GetPayScoreServiceOrderByQueryIdRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Get, "payscore", "serviceorder")
.SetQueryParam("query_id", request.QueryId)
.SetQueryParam("service_id", request.ServiceId)
.SetQueryParam("appid", request.AppId);
return await client.SendRequestWithJsonAsync(flurlReq, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /payscore/serviceorder/{out_order_no}/cancel 接口。
/// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter6_1_16.shtml
///
///
///
///
///
public static async Task ExecuteCancelPayScoreServiceOrderAsync(this WechatTenpayClient client, Models.CancelPayScoreServiceOrderRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "payscore", "serviceorder", request.OutOrderNumber, "cancel");
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /payscore/serviceorder/{out_order_no}/modify 接口。
/// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter6_1_17.shtml
///
///
///
///
///
public static async Task ExecuteModifyPayScoreServiceOrderAsync(this WechatTenpayClient client, Models.ModifyPayScoreServiceOrderRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "payscore", "serviceorder", request.OutOrderNumber, "modify");
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /payscore/serviceorder/{out_order_no}/complete 接口。
/// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter6_1_18.shtml
///
///
///
///
///
public static async Task ExecuteSetPayScoreServiceOrderCompleteAsync(this WechatTenpayClient client, Models.SetPayScoreServiceOrderCompleteRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "payscore", "serviceorder", request.OutOrderNumber, "complete");
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /payscore/serviceorder/{out_order_no}/pay 接口。
/// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter6_1_19.shtml
///
///
///
///
///
public static async Task ExecuteSetPayScoreServiceOrderPayAsync(this WechatTenpayClient client, Models.SetPayScoreServiceOrderPayRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "payscore", "serviceorder", request.OutOrderNumber, "pay");
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
///
/// 异步调用 [POST] /payscore/serviceorder/{out_order_no}/sync 接口。
/// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter6_1_20.shtml
///
///
///
///
///
public static async Task ExecuteSetPayScoreServiceOrderSyncAsync(this WechatTenpayClient client, Models.SetPayScoreServiceOrderSyncRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "payscore", "serviceorder", request.OutOrderNumber, "sync");
return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
}
}
}