feat(tenpayv3): 新增境外支付 H5 支付认证申请相关接口

This commit is contained in:
Fu Diwei 2024-05-17 16:39:51 +08:00
parent 91bb251ff6
commit 3e5f1eb485
32 changed files with 1074 additions and 61 deletions

View File

@ -0,0 +1,21 @@
## 如何接入境外支付 API
微信支付境外支付 API 的接入点、接口模型公共参数等配置项与基础 API 完全不同,需要使用独立的扩展客户端。
```csharp
using SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global;
using SKIT.FlurlHttpClient.Wechat.TenpayV3.Settings;
var manager = new InMemoryCertificateManager();
var options = new WechatTenpayGlobalClientOptions()
{
MerchantId = "微信商户号",
MerchantV3Secret = "微信商户 v3 API 密钥",
MerchantCertificateSerialNumber = "微信商户证书序列号",
MerchantCertificatePrivateKey = System.IO.File.ReadAllText("/微信商户证书私钥文件路径/apiclient_key.pem"),
PlatformCertificateManager = manager
};
var client = WechatTenpayGlobalClientBuilder.Create(options).Build();
```
该扩展客户端在用法上基础客户端完全相同,只需引入相应的命名空间即可。

View File

@ -1465,151 +1465,151 @@
- Quick Pay
- Quick Pay`CreateHKTransactionMicroPay` / `CreateHKPartnerTransactionMicroPay`
- Quick Pay`CreateTransactionMicroPay` / `CreatePartnerTransactionMicroPay`
- Query Order`GetHKTransactionByOutTradeNumber` / `GetHKTransactionById` / `GetHKPartnerTransactionByOutTradeNumber` / `GetHKPartnerTransactionById`
- Query Order`GetTransactionByOutTradeNumber` / `GetTransactionById` / `GetPartnerTransactionByOutTradeNumber` / `GetPartnerTransactionById`
- Refund Application`CreateHKRefund` / `CreateHKPartnerRefund`
- Refund Application`CreateRefund` / `CreatePartnerRefund`
- Query Single Refund`GetHKRefundByOutRefundNumber` / `GetHKRefundById` / `GetHKPartnerRefundByOutRefundNumber` / `GetHKPartnerRefundById`
- Query Single Refund`GetRefundByOutRefundNumber` / `GetRefundById` / `GetPartnerRefundByOutRefundNumber` / `GetPartnerRefundById`
- Query All Refunds: `QueryHKRefunds` / `QueryHKPartnerRefunds`
- Query All Refunds: `QueryRefunds` / `QueryPartnerRefunds`
- Downloading Reconciliation`DownloadHKStatements`
- Downloading Reconciliation`DownloadStatements`
- Revoke Order`ReverseHKTransaction` / `ReverseHKPartnerTransaction`
- Revoke Order`ReverseTransaction` / `ReversePartnerTransaction`
- Downloading Platform Certificate`QueryCertificates`
- Query Fund Settlement Details`QueryHKSettlements`
- Query Fund Settlement Details`QuerySettlements`
- Native Payment
- Order Placement`CreateHKTransactionMicroPay` / `CreateHKPartnerTransactionMicroPay`
- Order Placement`CreateTransactionMicroPay` / `CreatePartnerTransactionMicroPay`
- Query Order`GetHKTransactionByOutTradeNumber` / `GetHKTransactionById` / `GetHKPartnerTransactionByOutTradeNumber` / `GetHKPartnerTransactionById`
- Query Order`GetTransactionByOutTradeNumber` / `GetTransactionById` / `GetPartnerTransactionByOutTradeNumber` / `GetPartnerTransactionById`
- Refund Application`CreateHKRefund` / `CreateHKPartnerRefund`
- Refund Application`CreateRefund` / `CreatePartnerRefund`
- Query Single Refund`GetHKRefundByOutRefundNumber` / `GetHKRefundById` / `GetHKPartnerRefundByOutRefundNumber` / `GetHKPartnerRefundById`
- Query Single Refund`GetRefundByOutRefundNumber` / `GetRefundById` / `GetPartnerRefundByOutRefundNumber` / `GetPartnerRefundById`
- Query All Refunds: `QueryHKRefunds` / `QueryHKPartnerRefunds`
- Query All Refunds: `QueryRefunds` / `QueryPartnerRefunds`
- Downloading Reconciliation`DownloadHKStatements`
- Downloading Reconciliation`DownloadStatements`
- Close Order`CloseHKTransaction` / `CloseHKPartnerTransaction`
- Close Order`CloseTransaction` / `ClosePartnerTransaction`
- Downloading Platform Certificate`QueryCertificates`
- Query Fund Settlement Details`QueryHKSettlements`
- Query Fund Settlement Details`QuerySettlements`
- JSAPI Payment
- Order Placement`CreateHKTransactionMicroPay` / `CreateHKPartnerTransactionMicroPay`
- Order Placement`CreateTransactionMicroPay` / `CreatePartnerTransactionMicroPay`
- Query Order`GetHKTransactionByOutTradeNumber` / `GetHKTransactionById` / `GetHKPartnerTransactionByOutTradeNumber` / `GetHKPartnerTransactionById`
- Query Order`GetTransactionByOutTradeNumber` / `GetTransactionById` / `GetPartnerTransactionByOutTradeNumber` / `GetPartnerTransactionById`
- Refund Application`CreateHKRefund` / `CreateHKPartnerRefund`
- Refund Application`CreateRefund` / `CreatePartnerRefund`
- Query Single Refund`GetHKRefundByOutRefundNumber` / `GetHKRefundById` / `GetHKPartnerRefundByOutRefundNumber` / `GetHKPartnerRefundById`
- Query Single Refund`GetRefundByOutRefundNumber` / `GetRefundById` / `GetPartnerRefundByOutRefundNumber` / `GetPartnerRefundById`
- Query All Refunds: `QueryHKRefunds` / `QueryHKPartnerRefunds`
- Query All Refunds: `QueryRefunds` / `QueryPartnerRefunds`
- Downloading Reconciliation`DownloadHKStatements`
- Downloading Reconciliation`DownloadStatements`
- Close Order`CloseHKTransaction` / `CloseHKPartnerTransaction`
- Close Order`CloseTransaction` / `ClosePartnerTransaction`
- Downloading Platform Certificate`QueryCertificates`
- Query Fund Settlement Details`QueryHKSettlements`
- Query Fund Settlement Details`QuerySettlements`
- In-App Payment
- Order Placement`CreateHKTransactionMicroPay` / `CreateHKPartnerTransactionMicroPay`
- Order Placement`CreateTransactionMicroPay` / `CreatePartnerTransactionMicroPay`
- Query Order`GetHKTransactionByOutTradeNumber` / `GetHKTransactionById` / `GetHKPartnerTransactionByOutTradeNumber` / `GetHKPartnerTransactionById`
- Query Order`GetTransactionByOutTradeNumber` / `GetTransactionById` / `GetPartnerTransactionByOutTradeNumber` / `GetPartnerTransactionById`
- Refund Application`CreateHKRefund` / `CreateHKPartnerRefund`
- Refund Application`CreateRefund` / `CreatePartnerRefund`
- Query Single Refund`GetHKRefundByOutRefundNumber` / `GetHKRefundById` / `GetHKPartnerRefundByOutRefundNumber` / `GetHKPartnerRefundById`
- Query Single Refund`GetRefundByOutRefundNumber` / `GetRefundById` / `GetPartnerRefundByOutRefundNumber` / `GetPartnerRefundById`
- Query All Refunds: `QueryHKRefunds` / `QueryHKPartnerRefunds`
- Query All Refunds: `QueryRefunds` / `QueryPartnerRefunds`
- Downloading Reconciliation`DownloadHKStatements`
- Downloading Reconciliation`DownloadStatements`
- Close Order`CloseHKTransaction` / `CloseHKPartnerTransaction`
- Close Order`CloseTransaction` / `ClosePartnerTransaction`
- Downloading Platform Certificate`QueryCertificates`
- Query Fund Settlement Details`QueryHKSettlements`
- Query Fund Settlement Details`QuerySettlements`
- Mini-Program Payment
- Order Placement`CreateHKTransactionMicroPay` / `CreateHKPartnerTransactionMicroPay`
- Order Placement`CreateTransactionMicroPay` / `CreatePartnerTransactionMicroPay`
- Query Order`GetHKTransactionByOutTradeNumber` / `GetHKTransactionById` / `GetHKPartnerTransactionByOutTradeNumber` / `GetHKPartnerTransactionById`
- Query Order`GetTransactionByOutTradeNumber` / `GetTransactionById` / `GetPartnerTransactionByOutTradeNumber` / `GetPartnerTransactionById`
- Refund Application`CreateHKRefund` / `CreateHKPartnerRefund`
- Refund Application`CreateRefund` / `CreatePartnerRefund`
- Query Single Refund`GetHKRefundByOutRefundNumber` / `GetHKRefundById` / `GetHKPartnerRefundByOutRefundNumber` / `GetHKPartnerRefundById`
- Query Single Refund`GetRefundByOutRefundNumber` / `GetRefundById` / `GetPartnerRefundByOutRefundNumber` / `GetPartnerRefundById`
- Query All Refunds: `QueryHKRefunds` / `QueryHKPartnerRefunds`
- Query All Refunds: `QueryRefunds` / `QueryPartnerRefunds`
- Downloading Reconciliation`DownloadHKStatements`
- Downloading Reconciliation`DownloadStatements`
- Close Order`CloseHKTransaction` / `CloseHKPartnerTransaction`
- Close Order`CloseTransaction` / `ClosePartnerTransaction`
- Downloading Platform Certificate`QueryCertificates`
- Query Fund Settlement Details`QueryHKSettlements`
- Query Fund Settlement Details`QuerySettlements`
- H5 Payment
- Order Placement`CreateHKTransactionMicroPay` / `CreateHKPartnerTransactionMicroPay`
- Order Placement`CreateTransactionMicroPay` / `CreatePartnerTransactionMicroPay`
- Query Order`GetHKTransactionByOutTradeNumber` / `GetHKTransactionById` / `GetHKPartnerTransactionByOutTradeNumber` / `GetHKPartnerTransactionById`
- Query Order`GetTransactionByOutTradeNumber` / `GetTransactionById` / `GetPartnerTransactionByOutTradeNumber` / `GetPartnerTransactionById`
- Query All Refunds: `QueryHKRefunds` / `QueryHKPartnerRefunds`
- Query All Refunds: `QueryRefunds` / `QueryPartnerRefunds`
- Refund Application`CreateHKRefund` / `CreateHKPartnerRefund`
- Refund Application`CreateRefund` / `CreatePartnerRefund`
- Query Single Refund`GetHKRefundByOutRefundNumber` / `GetHKRefundById` / `GetHKPartnerRefundByOutRefundNumber` / `GetHKPartnerRefundById`
- Query Single Refund`GetRefundByOutRefundNumber` / `GetRefundById` / `GetPartnerRefundByOutRefundNumber` / `GetPartnerRefundById`
- Downloading Reconciliation`DownloadHKStatements`
- Downloading Reconciliation`DownloadStatements`
- Close Order`CloseHKTransaction` / `CloseHKPartnerTransaction`
- Close Order`CloseTransaction` / `ClosePartnerTransaction`
- Downloading Platform Certificate`QueryCertificates`
- Query Fund Settlement Details`QueryHKSettlements`
- Query Fund Settlement Details`QuerySettlements`
- Auto-Debit Payment
- Mini Program Signing: `PresignHKPAPayContractEntrustMiniProgram` / `PresignHKPartnerPAPayContractEntrustMiniProgram`
- Mini Program Signing: `PresignPAPayContractEntrustMiniProgram` / `PresignPartnerPAPayContractEntrustMiniProgram`
- H5 Signing: `PresignHKPAPayContractEntrustH5` / `PresignHKPartnerPAPayContractEntrustH5`
- H5 Signing: `PresignPAPayContractEntrustH5` / `PresignPartnerPAPayContractEntrustH5`
- JSAPI Signing: `PresignHKPAPayContractEntrustJsapi` / `PresignHKPartnerPAPayContractEntrustJsapi`
- JSAPI Signing: `PresignPAPayContractEntrustJsapi` / `PresignPartnerPAPayContractEntrustJsapi`
- PC WEB Signing: `PresignHKPAPayContractEntrustJsapi` / `PresignHKPartnerPAPayContractEntrustJsapi`
- PC WEB Signing: `PresignPAPayContractEntrustJsapi` / `PresignPartnerPAPayContractEntrustJsapi`
- APP Signing: `PresignHKPAPayContractEntrustApp` / `PresignHKPartnerPAPayContractEntrustApp`
- APP Signing: `PresignPAPayContractEntrustApp` / `PresignPartnerPAPayContractEntrustApp`
- Querying Signing Status: `GetHKPAPayContractByOutContractCode` / `GetHKPAPayContractByContractId` / `GetHKPartnerPAPayContractByOutContractCode` / `GetHKPartnerPAPayContractByContractId`
- Querying Signing Status: `GetPAPayContractByOutContractCode` / `GetPAPayContractByContractId` / `GetPartnerPAPayContractByOutContractCode` / `GetPartnerPAPayContractByContractId`
- Applying for Termination: `TerminateHKPAPayContract` / `TerminateHKPartnerPAPayContract`
- Applying for Termination: `TerminatePAPayContract` / `TerminatePartnerPAPayContract`
- Deduction: `CreateHKPAPayTransaction` / `CreateHKPartnerPAPayTransaction`
- Deduction: `CreatePAPayTransaction` / `CreatePartnerPAPayTransaction`
- Order Query: `GetHKPAPayTransactionByOutTradeNumber` / `GetHKPAPayTransactionById` / `GetHKPartnerPAPayTransactionByOutTradeNumber` / `GetHKPartnerPAPayTransactionById`
- Order Query: `GetPAPayTransactionByOutTradeNumber` / `GetPAPayTransactionById` / `GetPartnerPAPayTransactionByOutTradeNumber` / `GetPartnerPAPayTransactionById`
- Order Reversing: `ReverseHKPAPayTransaction` / `ReverseHKPartnerPAPayTransaction`
- Order Reversing: `ReversePAPayTransaction` / `ReversePartnerPAPayTransaction`
- Submit Refund: `CreateHKRefund` / `CreateHKPartnerRefund`
- Submit Refund: `CreateRefund` / `CreatePartnerRefund`
- Query Single Refund: `GetHKRefundByOutRefundNumber` / `GetHKRefundById` / `GetHKPartnerRefundByOutRefundNumber` / `GetHKPartnerRefundById`
- Query Single Refund: `GetRefundByOutRefundNumber` / `GetRefundById` / `GetPartnerRefundByOutRefundNumber` / `GetPartnerRefundById`
- Query All Refunds: `QueryHKRefunds` / `QueryHKPartnerRefunds`
- Query All Refunds: `QueryRefunds` / `QueryPartnerRefunds`
- Other
@ -1623,6 +1623,22 @@
- Upload Image`UploadMerchantMediaImage`
- H5 Payment Authorization Application
- Create Authorization Application`CreateMerchantH5PermissionApplication`
- Query Authorization Application`GetMerchantH5PermissionApplicationByApplymentId`
- Modify Authorization Application`UpdateMerchantH5PermissionApplication`
- Create Domain Modification Application`UpdateMerchantH5PermissionDomainApplication`
- Query Domain Modification Application`GetMerchantH5PermissionDomainApplicationByApplymentId`
- Modify Domain Modification Application`UpdateMerchantH5PermissionDomainAApplication`
- Query Authorization Status`GetMerchantH5PermissionBySubMerchantId`
- Customs Declaration
- Customs Declaration`CreateCustomsOrder`

View File

@ -110,6 +110,8 @@ else
- [如何接入国密算法?](./Basic_SMAlgorithm.md)
- [如何接入境外支付 API](./Basic_GlobalAPI.md)
---
## 高级技巧

View File

@ -0,0 +1,165 @@
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global
{
public static class WechatTenpayGlobalClientExecuteMerchantH5PermissionExtensions
{
/// <summary>
/// <para>异步调用 [POST] /merchant/h5/permission/applications 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/api_external/en/apis/chapter4_4_1.shtml ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreateMerchantH5PermissionApplicationResponse> ExecuteCreateMerchantH5PermissionApplicationAsync(this WechatTenpayGlobalClient client, Models.CreateMerchantH5PermissionApplicationRequest 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, "merchant", "h5", "permission", "applications");
return await client.SendFlurlRequestAsJsonAsync<Models.CreateMerchantH5PermissionApplicationResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [GET] /merchant/h5/permission/applications/{applyment_id} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/api_external/en/apis/chapter4_4_2.shtml ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetMerchantH5PermissionApplicationByApplymentIdResponse> ExecuteGetMerchantH5PermissionApplicationByApplymentIdAsync(this WechatTenpayGlobalClient client, Models.GetMerchantH5PermissionApplicationByApplymentIdRequest 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, "merchant", "h5", "permission", "applications", request.ApplymentId);
return await client.SendFlurlRequestAsJsonAsync<Models.GetMerchantH5PermissionApplicationByApplymentIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [PATCH] /merchant/h5/permission/applications/{applyment_id} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/api_external/en/apis/chapter4_4_3.shtml ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.UpdateMerchantH5PermissionApplicationResponse> ExecuteUpdateMerchantH5PermissionApplicationAsync(this WechatTenpayGlobalClient client, Models.UpdateMerchantH5PermissionApplicationRequest 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, new HttpMethod("PATCH"), "merchant", "h5", "permission", "applications", request.ApplymentId);
return await client.SendFlurlRequestAsJsonAsync<Models.UpdateMerchantH5PermissionApplicationResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /merchant/h5/permission/domain/applications 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/api_external/en/apis/chapter4_4_4.shtml ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.CreateMerchantH5PermissionDomainApplicationResponse> ExecuteCreateMerchantH5PermissionDomainApplicationAsync(this WechatTenpayGlobalClient client, Models.CreateMerchantH5PermissionDomainApplicationRequest 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, "merchant", "h5", "permission", "domain", "applications");
return await client.SendFlurlRequestAsJsonAsync<Models.CreateMerchantH5PermissionDomainApplicationResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [GET] /merchant/h5/permission/domain/applications/{applyment_id} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/api_external/en/apis/chapter4_4_5.shtml ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetMerchantH5PermissionDomainApplicationByApplymentIdResponse> ExecuteGetMerchantH5PermissionDomainApplicationByApplymentIdAsync(this WechatTenpayGlobalClient client, Models.GetMerchantH5PermissionDomainApplicationByApplymentIdRequest 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, "merchant", "h5", "permission", "domain", "applications", request.ApplymentId);
return await client.SendFlurlRequestAsJsonAsync<Models.GetMerchantH5PermissionDomainApplicationByApplymentIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [PATCH] /merchant/h5/permission/domain/applications/{applyment_id} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/api_external/en/apis/chapter4_4_6.shtml ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.UpdateMerchantH5PermissionDomainApplicationResponse> ExecuteUpdateMerchantH5PermissionDomainApplicationAsync(this WechatTenpayGlobalClient client, Models.UpdateMerchantH5PermissionDomainApplicationRequest 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, new HttpMethod("PATCH"), "merchant", "h5", "permission", "domain", "applications", request.ApplymentId);
return await client.SendFlurlRequestAsJsonAsync<Models.UpdateMerchantH5PermissionDomainApplicationResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [GET] /merchant/h5/permission/{sub_mchid} 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/api_external/en/apis/chapter4_4_7.shtml ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.GetMerchantH5PermissionBySubMerchantIdResponse> ExecuteGetMerchantH5PermissionBySubMerchantIdAsync(this WechatTenpayGlobalClient client, Models.GetMerchantH5PermissionBySubMerchantIdRequest 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, "merchant", "h5", "permissions", request.SubMerchantId);
return await client.SendFlurlRequestAsJsonAsync<Models.GetMerchantH5PermissionBySubMerchantIdResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}

View File

@ -3,6 +3,7 @@ using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl.Http;
using SKIT.FlurlHttpClient.Primitives;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global
{
@ -85,5 +86,37 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global
return await client.SendFlurlRequestAsJsonAsync<Models.ModifySubMerchantResponse>(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
/// <summary>
/// <para>异步调用 [POST] /merchant/media/upload 接口。</para>
/// <para>
/// REF: <br/>
/// <![CDATA[ https://pay.weixin.qq.com/wiki/doc/api_external/en/apis/chapter4_2_4.shtml ]]>
/// </para>
/// </summary>
/// <param name="client"></param>
/// <param name="request"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public static async Task<Models.UploadMerchantMediaImageResponse> ExecuteUploadMerchantMediaImageAsync(this WechatTenpayClient client, Models.UploadMerchantMediaImageRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
if (request.FileName is null)
request.FileName = Guid.NewGuid().ToString("N").ToLower() + ".jpg";
if (request.FileHash is null)
request.FileHash = EncodedString.ToHexString(Utilities.SHA256Utility.Hash(request.FileBytes)).Value!.ToLower();
if (request.FileContentType is null)
request.FileContentType = Utilities.FileNameToContentTypeMapper.GetContentTypeForImage(request.FileName!) ?? "image/jpeg";
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "merchant", "media", "upload");
using var httpContent = Utilities.FileHttpContentBuilder.Build(fileName: request.FileName, fileBytes: request.FileBytes, fileContentType: request.FileContentType, fileMetaJson: client.JsonSerializer.Serialize(request));
return await client.SendFlurlRequestAsync<Models.UploadMerchantMediaImageResponse>(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}

View File

@ -0,0 +1,87 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [POST] /merchant/h5/permission/applications 接口的请求。</para>
/// </summary>
public class CreateMerchantH5PermissionApplicationRequest : WechatTenpayGlobalRequest
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置申请类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("applyment_type")]
[System.Text.Json.Serialization.JsonPropertyName("applyment_type")]
public string? ApplymentType { get; set; }
/// <summary>
/// 获取或设置业务描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("business_description")]
[System.Text.Json.Serialization.JsonPropertyName("business_description")]
public string? BusinessDescription { get; set; }
/// <summary>
/// 获取或设置交易限制类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("transaction_limit_type")]
[System.Text.Json.Serialization.JsonPropertyName("transaction_limit_type")]
public string? TransactionLimitType { get; set; }
/// <summary>
/// 获取或设置域名列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("domains")]
[System.Text.Json.Serialization.JsonPropertyName("domains")]
public IList<string> DomainList { get; set; } = new List<string>();
/// <summary>
/// 获取或设置公司注册文件编号。
/// </summary>
[Newtonsoft.Json.JsonProperty("company_register_cert")]
[System.Text.Json.Serialization.JsonPropertyName("company_register_cert")]
public string? CompanyRegisterCertificateNumber { get; set; }
/// <summary>
/// 获取或设置网站业务页面截图 MediaId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_business_page_pics")]
[System.Text.Json.Serialization.JsonPropertyName("website_business_page_pics")]
public IList<string>? WebsiteBusinessPagePictureMediaIdList { get; set; }
/// <summary>
/// 获取或设置网站首页截图 MediaId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_homepage_pics")]
[System.Text.Json.Serialization.JsonPropertyName("website_homepage_pics")]
public IList<string>? WebsiteHomePagePictureMediaIdList { get; set; }
/// <summary>
/// 获取或设置网站状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_state")]
[System.Text.Json.Serialization.JsonPropertyName("website_state")]
public string? WebsiteState { get; set; }
/// <summary>
/// 获取或设置网站 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_url")]
[System.Text.Json.Serialization.JsonPropertyName("website_url")]
public string? WebsiteUrl { get; set; }
/// <summary>
/// 获取或设置回调通知地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("notify_url")]
[System.Text.Json.Serialization.JsonPropertyName("notify_url")]
public string? NotifyUrl { get; set; }
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [POST] /merchant/h5/permission/applications 接口的响应。</para>
/// </summary>
public class CreateMerchantH5PermissionApplicationResponse : GetMerchantH5PermissionApplicationByApplymentIdResponse
{
}
}

View File

@ -0,0 +1,66 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [POST] /merchant/h5/permission/domain/applications 接口的请求。</para>
/// </summary>
public class CreateMerchantH5PermissionDomainApplicationRequest : WechatTenpayGlobalRequest
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置商户申请单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_applyment_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_applyment_id")]
public string OutApplymentId { get; set; } = string.Empty;
/// <summary>
/// 获取或设置域名列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("domains")]
[System.Text.Json.Serialization.JsonPropertyName("domains")]
public IList<string> DomainList { get; set; } = new List<string>();
/// <summary>
/// 获取或设置网站业务页面截图 MediaId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_business_page_pics")]
[System.Text.Json.Serialization.JsonPropertyName("website_business_page_pics")]
public IList<string>? WebsiteBusinessPagePictureMediaIdList { get; set; }
/// <summary>
/// 获取或设置网站首页截图 MediaId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_homepage_pics")]
[System.Text.Json.Serialization.JsonPropertyName("website_homepage_pics")]
public IList<string>? WebsiteHomePagePictureMediaIdList { get; set; }
/// <summary>
/// 获取或设置网站状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_state")]
[System.Text.Json.Serialization.JsonPropertyName("website_state")]
public string? WebsiteState { get; set; }
/// <summary>
/// 获取或设置网站 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_url")]
[System.Text.Json.Serialization.JsonPropertyName("website_url")]
public string? WebsiteUrl { get; set; }
/// <summary>
/// 获取或设置回调通知地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("notify_url")]
[System.Text.Json.Serialization.JsonPropertyName("notify_url")]
public string? NotifyUrl { get; set; }
}
}

View File

@ -0,0 +1,9 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [POST] /merchant/h5/permission/domain/applications 接口的响应。</para>
/// </summary>
public class CreateMerchantH5PermissionDomainApplicationResponse : GetMerchantH5PermissionDomainApplicationByApplymentIdResponse
{
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [GET] /merchant/h5/permission/applications/{applyment_id} 接口的请求。</para>
/// </summary>
public class GetMerchantH5PermissionApplicationByApplymentIdRequest : WechatTenpayGlobalRequest
{
/// <summary>
/// 获取或设置申请单 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public long ApplymentId { get; set; }
}
}

View File

@ -0,0 +1,107 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [GET] /merchant/h5/permission/applications/{applyment_id} 接口的响应。</para>
/// </summary>
public class GetMerchantH5PermissionApplicationByApplymentIdResponse : WechatTenpayGlobalResponse
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置申请单 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("applyment_id")]
[System.Text.Json.Serialization.JsonPropertyName("applyment_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long ApplymentId { get; set; }
/// <summary>
/// 获取或设置申请类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("applyment_type")]
[System.Text.Json.Serialization.JsonPropertyName("applyment_type")]
public string ApplymentType { get; set; } = default!;
/// <summary>
/// 获取或设置申请状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("applyment_state")]
[System.Text.Json.Serialization.JsonPropertyName("applyment_state")]
public string ApplymentState { get; set; } = default!;
/// <summary>
/// 获取或设置业务描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("business_description")]
[System.Text.Json.Serialization.JsonPropertyName("business_description")]
public string? BusinessDescription { get; set; }
/// <summary>
/// 获取或设置交易限制类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("transaction_limit_type")]
[System.Text.Json.Serialization.JsonPropertyName("transaction_limit_type")]
public string TransactionLimitType { get; set; } = default!;
/// <summary>
/// 获取或设置域名列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("domains")]
[System.Text.Json.Serialization.JsonPropertyName("domains")]
public string[] DomainList { get; set; } = default!;
/// <summary>
/// 获取或设置公司注册文件编号。
/// </summary>
[Newtonsoft.Json.JsonProperty("company_register_cert")]
[System.Text.Json.Serialization.JsonPropertyName("company_register_cert")]
public string? CompanyRegisterCertificateNumber { get; set; }
/// <summary>
/// 获取或设置网站业务页面截图 MediaId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_business_page_pics")]
[System.Text.Json.Serialization.JsonPropertyName("website_business_page_pics")]
public string[]? WebsiteBusinessPagePictureMediaIdList { get; set; }
/// <summary>
/// 获取或设置网站首页截图 MediaId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_homepage_pics")]
[System.Text.Json.Serialization.JsonPropertyName("website_homepage_pics")]
public string[]? WebsiteHomePagePictureMediaIdList { get; set; }
/// <summary>
/// 获取或设置网站状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_state")]
[System.Text.Json.Serialization.JsonPropertyName("website_state")]
public string WebsiteState { get; set; } = default!;
/// <summary>
/// 获取或设置网站 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_url")]
[System.Text.Json.Serialization.JsonPropertyName("website_url")]
public string WebsiteUrl { get; set; } = default!;
/// <summary>
/// 获取或设置回调通知地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("notify_url")]
[System.Text.Json.Serialization.JsonPropertyName("notify_url")]
public string? NotifyUrl { get; set; }
/// <summary>
/// 获取或设置审核拒绝原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("audit_reject_detail")]
[System.Text.Json.Serialization.JsonPropertyName("audit_reject_detail")]
public string? AuditRejectReason { get; set; }
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [GET] /merchant/h5/permission/{sub_mchid} 接口的请求。</para>
/// </summary>
public class GetMerchantH5PermissionBySubMerchantIdRequest : WechatTenpayGlobalRequest
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string SubMerchantId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,22 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [GET] /merchant/h5/permission/{sub_mchid} 接口的响应。</para>
/// </summary>
public class GetMerchantH5PermissionBySubMerchantIdResponse : WechatTenpayGlobalResponse
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置认证状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("authorization_state")]
[System.Text.Json.Serialization.JsonPropertyName("authorization_state")]
public string AuthorizationState { get; set; } = default!;
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [GET] /merchant/h5/permission/domain/applications/{applyment_id} 接口的请求。</para>
/// </summary>
public class GetMerchantH5PermissionDomainApplicationByApplymentIdRequest : WechatTenpayGlobalRequest
{
/// <summary>
/// 获取或设置申请单 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public long ApplymentId { get; set; }
}
}

View File

@ -0,0 +1,86 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [GET] /merchant/h5/permission/domain/applications/{applyment_id} 接口的响应。</para>
/// </summary>
public class GetMerchantH5PermissionDomainApplicationByApplymentIdResponse : WechatTenpayGlobalResponse
{
/// <summary>
/// 获取或设置子商户号。
/// </summary>
[Newtonsoft.Json.JsonProperty("sub_mchid")]
[System.Text.Json.Serialization.JsonPropertyName("sub_mchid")]
public string SubMerchantId { get; set; } = default!;
/// <summary>
/// 获取或设置商户申请单号。
/// </summary>
[Newtonsoft.Json.JsonProperty("out_applyment_id")]
[System.Text.Json.Serialization.JsonPropertyName("out_applyment_id")]
public string OutApplymentId { get; set; } = default!;
/// <summary>
/// 获取或设置申请单 ID。
/// </summary>
[Newtonsoft.Json.JsonProperty("applyment_id")]
[System.Text.Json.Serialization.JsonPropertyName("applyment_id")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long ApplymentId { get; set; }
/// <summary>
/// 获取或设置申请状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("applyment_state")]
[System.Text.Json.Serialization.JsonPropertyName("applyment_state")]
public string ApplymentState { get; set; } = default!;
/// <summary>
/// 获取或设置域名列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("domains")]
[System.Text.Json.Serialization.JsonPropertyName("domains")]
public string[] DomainList { get; set; } = default!;
/// <summary>
/// 获取或设置网站业务页面截图 MediaId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_business_page_pics")]
[System.Text.Json.Serialization.JsonPropertyName("website_business_page_pics")]
public string[]? WebsiteBusinessPagePictureMediaIdList { get; set; }
/// <summary>
/// 获取或设置网站首页截图 MediaId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_homepage_pics")]
[System.Text.Json.Serialization.JsonPropertyName("website_homepage_pics")]
public string[]? WebsiteHomePagePictureMediaIdList { get; set; }
/// <summary>
/// 获取或设置网站状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_state")]
[System.Text.Json.Serialization.JsonPropertyName("website_state")]
public string WebsiteState { get; set; } = default!;
/// <summary>
/// 获取或设置网站 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_url")]
[System.Text.Json.Serialization.JsonPropertyName("website_url")]
public string WebsiteUrl { get; set; } = default!;
/// <summary>
/// 获取或设置回调通知地址。
/// </summary>
[Newtonsoft.Json.JsonProperty("notify_url")]
[System.Text.Json.Serialization.JsonPropertyName("notify_url")]
public string? NotifyUrl { get; set; }
/// <summary>
/// 获取或设置审核拒绝原因。
/// </summary>
[Newtonsoft.Json.JsonProperty("audit_reject_detail")]
[System.Text.Json.Serialization.JsonPropertyName("audit_reject_detail")]
public string? AuditRejectReason { get; set; }
}
}

View File

@ -0,0 +1,80 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [PATCH] /merchant/h5/permission/applications/{applyment_id} 接口的请求。</para>
/// </summary>
public class UpdateMerchantH5PermissionApplicationRequest : WechatTenpayGlobalRequest
{
/// <summary>
/// 获取或设置申请单 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public long ApplymentId { get; set; }
/// <summary>
/// 获取或设置申请类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("applyment_type")]
[System.Text.Json.Serialization.JsonPropertyName("applyment_type")]
public string? ApplymentType { get; set; }
/// <summary>
/// 获取或设置业务描述。
/// </summary>
[Newtonsoft.Json.JsonProperty("business_description")]
[System.Text.Json.Serialization.JsonPropertyName("business_description")]
public string? BusinessDescription { get; set; }
/// <summary>
/// 获取或设置交易限制类型。
/// </summary>
[Newtonsoft.Json.JsonProperty("transaction_limit_type")]
[System.Text.Json.Serialization.JsonPropertyName("transaction_limit_type")]
public string? TransactionLimitType { get; set; }
/// <summary>
/// 获取或设置域名列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("domains")]
[System.Text.Json.Serialization.JsonPropertyName("domains")]
public IList<string> DomainList { get; set; } = new List<string>();
/// <summary>
/// 获取或设置公司注册文件编号。
/// </summary>
[Newtonsoft.Json.JsonProperty("company_register_cert")]
[System.Text.Json.Serialization.JsonPropertyName("company_register_cert")]
public string? CompanyRegisterCertificateNumber { get; set; }
/// <summary>
/// 获取或设置网站业务页面截图 MediaId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_business_page_pics")]
[System.Text.Json.Serialization.JsonPropertyName("website_business_page_pics")]
public IList<string>? WebsiteBusinessPagePictureMediaIdList { get; set; }
/// <summary>
/// 获取或设置网站首页截图 MediaId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_homepage_pics")]
[System.Text.Json.Serialization.JsonPropertyName("website_homepage_pics")]
public IList<string>? WebsiteHomePagePictureMediaIdList { get; set; }
/// <summary>
/// 获取或设置网站状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_state")]
[System.Text.Json.Serialization.JsonPropertyName("website_state")]
public string? WebsiteState { get; set; }
/// <summary>
/// 获取或设置网站 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_url")]
[System.Text.Json.Serialization.JsonPropertyName("website_url")]
public string? WebsiteUrl { get; set; }
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [PATCH] /merchant/h5/permission/applications/{applyment_id} 接口的响应。</para>
/// </summary>
public class UpdateMerchantH5PermissionApplicationResponse : GetMerchantH5PermissionApplicationByApplymentIdResponse
{
/// <summary>
/// 获取或设置申请单 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string ApplymentId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,52 @@
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [PATCH] /merchant/h5/permission/domain/applications/{applyment_id} 接口的请求。</para>
/// </summary>
public class UpdateMerchantH5PermissionDomainApplicationRequest : WechatTenpayGlobalRequest
{
/// <summary>
/// 获取或设置申请单 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public long ApplymentId { get; set; }
/// <summary>
/// 获取或设置域名列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("domains")]
[System.Text.Json.Serialization.JsonPropertyName("domains")]
public IList<string> DomainList { get; set; } = new List<string>();
/// <summary>
/// 获取或设置网站业务页面截图 MediaId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_business_page_pics")]
[System.Text.Json.Serialization.JsonPropertyName("website_business_page_pics")]
public IList<string>? WebsiteBusinessPagePictureMediaIdList { get; set; }
/// <summary>
/// 获取或设置网站首页截图 MediaId 列表。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_homepage_pics")]
[System.Text.Json.Serialization.JsonPropertyName("website_homepage_pics")]
public IList<string>? WebsiteHomePagePictureMediaIdList { get; set; }
/// <summary>
/// 获取或设置网站状态。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_state")]
[System.Text.Json.Serialization.JsonPropertyName("website_state")]
public string? WebsiteState { get; set; }
/// <summary>
/// 获取或设置网站 URL。
/// </summary>
[Newtonsoft.Json.JsonProperty("website_url")]
[System.Text.Json.Serialization.JsonPropertyName("website_url")]
public string? WebsiteUrl { get; set; }
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [PATCH] /merchant/h5/permission/domain/applications/{applyment_id} 接口的响应。</para>
/// </summary>
public class UpdateMerchantH5PermissionDomainApplicationResponse : GetMerchantH5PermissionDomainApplicationByApplymentIdResponse
{
/// <summary>
/// 获取或设置申请单 ID。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string ApplymentId { get; set; } = string.Empty;
}
}

View File

@ -0,0 +1,38 @@
using System;
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [POST] /merchant/media/upload 接口的请求。</para>
/// </summary>
public class UploadMerchantMediaImageRequest : WechatTenpayRequest
{
/// <summary>
/// 获取或设置图片文件字节数组。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public byte[] FileBytes { get; set; } = Array.Empty<byte>();
/// <summary>
/// 获取或设置图片文件名。如果不指定将由系统自动生成。
/// </summary>
[Newtonsoft.Json.JsonProperty("filename")]
[System.Text.Json.Serialization.JsonPropertyName("filename")]
public string? FileName { get; set; }
/// <summary>
/// 获取或设置图片文件摘要。如果不指定将由系统自动生成。
/// </summary>
[Newtonsoft.Json.JsonProperty("sha256")]
[System.Text.Json.Serialization.JsonPropertyName("sha256")]
public string? FileHash { get; set; }
/// <summary>
/// 获取或设置图片文件 Conent-Type。如果不指定将由系统自动生成。
/// </summary>
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public string? FileContentType { get; set; }
}
}

View File

@ -0,0 +1,15 @@
namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models
{
/// <summary>
/// <para>表示 [POST] /merchant/media/upload 接口的响应。</para>
/// </summary>
public class UploadMerchantMediaImageResponse : WechatTenpayResponse
{
/// <summary>
/// 获取或设置媒体文件标识。
/// </summary>
[Newtonsoft.Json.JsonProperty("media_id")]
[System.Text.Json.Serialization.JsonPropertyName("media_id")]
public string MediaId { get; set; } = default!;
}
}

View File

@ -0,0 +1,12 @@
{
"applyment_type": "APPLY_FOR_PAYMENT_AUTHORITY",
"company_register_cert": "6uqyGjvHzOhsLleGFQVRF",
"domains": [ "qq.com" ],
"notify_url": "https://pay.weixin.qq.com/wxpay/pay.action",
"sub_mchid": "2491935631",
"transaction_limit_type": "UN_LAUNCHED_WEBSITE_LIMIT",
"website_business_page_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"website_homepage_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"website_state": "HAS_LAUNCHED",
"website_url": "https://qq.com"
}

View File

@ -0,0 +1,16 @@
{
"applyment_id": 100000,
"applyment_state": "PENDING",
"applyment_type": "APPLY_FOR_PAYMENT_AUTHORITY",
"audit_reject_detail": "The merchant's certificate does not meet requirements.",
"business_description": "Founded in November 1998, Tencent is an Internet-based platform company that uses technology to enrich the lives of Internet users and assist enterprises with digital upgrade.",
"company_register_cert": "6uqyGjvHzOhsLleGFQVRF",
"domains": [ "qq.com" ],
"notify_url": "https://pay.weixin.qq.com/wxpay/pay.action",
"sub_mchid": "2491935631",
"transaction_limit_type": "UN_LAUNCHED_WEBSITE_LIMIT",
"website_business_page_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"website_homepage_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"website_state": "HAS_LAUNCHED",
"website_url": "https://qq.com"
}

View File

@ -0,0 +1,10 @@
{
"domains": [ "qq.com" ],
"notify_url": "https://pay.weixin.qq.com/wxpay/pay.action",
"sub_mchid": "2491935631",
"website_business_page_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"website_homepage_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"website_state": "HAS_LAUNCHED",
"website_url": "https://qq.com",
"out_applyment_id": "123456"
}

View File

@ -0,0 +1,13 @@
{
"applyment_id": 1000000,
"applyment_state": "PENDING",
"audit_reject_detail": "Illegal content of website homepage screenshot",
"domains": [ "qq.com" ],
"notify_url": "https://pay.weixin.qq.com/wxpay/pay.action",
"sub_mchid": "2491935631",
"website_url": "https://qq.com",
"website_business_page_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"website_homepage_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"out_applyment_id": "123456",
"website_state": "HAS_LAUNCHED"
}

View File

@ -0,0 +1,16 @@
{
"applyment_id": 100000,
"applyment_state": "PENDING",
"applyment_type": "APPLY_FOR_PAYMENT_AUTHORITY",
"audit_reject_detail": "The merchant's certificate does not meet requirements.",
"business_description": "Founded in November 1998, Tencent is an Internet-based platform company that uses technology to enrich the lives of Internet users and assist enterprises with digital upgrade.",
"company_register_cert": "6uqyGjvHzOhsLleGFQVRF",
"domains": [ "qq.com" ],
"notify_url": "https://pay.weixin.qq.com/wxpay/pay.action",
"sub_mchid": "2491935631",
"transaction_limit_type": "UN_LAUNCHED_WEBSITE_LIMIT",
"website_business_page_pics": [ "" ],
"website_homepage_pics": [ "" ],
"website_state": "HAS_LAUNCHED",
"website_url": "https://qq.com"
}

View File

@ -0,0 +1,4 @@
{
"authorization_state": "AUTHORITY_TO_TEST",
"sub_mchid": "2491935631"
}

View File

@ -0,0 +1,13 @@
{
"applyment_id": 1000000,
"applyment_state": "PENDING",
"audit_reject_detail": "Illegal content of website homepage screenshot",
"domains": [ "qq.com" ],
"notify_url": "https://pay.weixin.qq.com/wxpay/pay.action",
"sub_mchid": "2491935631",
"website_url": "https://qq.com",
"website_business_page_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"website_homepage_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"out_applyment_id": "123456",
"website_state": "HAS_LAUNCHED"
}

View File

@ -0,0 +1,10 @@
{
"business_description": "Founded in November 1998, Tencent is an Internet-based platform company that uses technology to enrich the lives of Internet users and assist enterprises with digital upgrade.",
"company_register_cert": "6uqyGjvHzOhsLleGFQVRF",
"domains": [ "qq.com" ],
"transaction_limit_type": "UN_LAUNCHED_WEBSITE_LIMIT",
"website_business_page_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"website_homepage_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"website_state": "HAS_LAUNCHED",
"website_url": "https://qq.com"
}

View File

@ -0,0 +1,16 @@
{
"applyment_id": 100000,
"applyment_state": "PENDING",
"applyment_type": "APPLY_FOR_PAYMENT_AUTHORITY",
"audit_reject_detail": "The merchant's certificate does not meet requirements.",
"business_description": "Founded in November 1998, Tencent is an Internet-based platform company that uses technology to enrich the lives of Internet users and assist enterprises with digital upgrade.",
"company_register_cert": "6uqyGjvHzOhsLleGFQVRF",
"domains": [ "qq.com" ],
"notify_url": "https://pay.weixin.qq.com/wxpay/pay.action",
"sub_mchid": "2491935631",
"transaction_limit_type": "UN_LAUNCHED_WEBSITE_LIMIT",
"website_business_page_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"website_homepage_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"website_state": "HAS_LAUNCHED",
"website_url": "https://qq.com"
}

View File

@ -0,0 +1,7 @@
{
"domains": [ "qq.com" ],
"website_business_page_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"website_homepage_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"website_state": "HAS_LAUNCHED",
"website_url": "https://qq.com"
}

View File

@ -0,0 +1,13 @@
{
"applyment_id": 1000000,
"applyment_state": "PENDING",
"audit_reject_detail": "Illegal content of website homepage screenshot",
"domains": [ "qq.com" ],
"notify_url": "https://pay.weixin.qq.com/wxpay/pay.action",
"sub_mchid": "2491935631",
"website_url": "https://qq.com",
"website_business_page_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"website_homepage_pics": [ "6uqyGjvHzOhsLleGFQVRF" ],
"out_applyment_id": "123456",
"website_state": "HAS_LAUNCHED"
}