diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Events/OrderEvent.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Events/OrderEvent.cs index 05fa7692..da19855c 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Events/OrderEvent.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Events/OrderEvent.cs @@ -211,10 +211,11 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2.Events public DateTimeOffset? EndTime { get; set; } /// - /// 获取或设置汇率字符串(格式:外币兑换人民币的比例乘以 10 的 8 次方)。 + /// 获取或设置汇率(格式:外币兑换人民币的比例乘以 10 的 8 次方)。 /// [Newtonsoft.Json.JsonProperty("rate")] [System.Text.Json.Serialization.JsonPropertyName("rate")] - public string? ExchangeRateString { get; set; } + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long? ExchangeRate { get; set; } } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/Pay/ExchangeRate/GetPayExchangeRateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/Pay/ExchangeRate/GetPayExchangeRateResponse.cs index 55ef568a..c5e49010 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/Pay/ExchangeRate/GetPayExchangeRateResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/Pay/ExchangeRate/GetPayExchangeRateResponse.cs @@ -41,10 +41,11 @@ public string DateString { get; set; } = default!; /// - /// 获取或设置汇率字符串(格式:外币兑换人民币的比例乘以 10 的 8 次方)。 + /// 获取或设置汇率(格式:外币兑换人民币的比例乘以 10 的 8 次方)。 /// [Newtonsoft.Json.JsonProperty("rate")] [System.Text.Json.Serialization.JsonPropertyName("rate")] - public string ExchangeRateString { get; set; } = default!; + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long? ExchangeRate { get; set; } = default!; } } diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/Pay/Settlement/GetPaySettlementRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/Pay/Settlement/GetPaySettlementRequest.cs index 8d92fdd5..7d8367f0 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/Pay/Settlement/GetPaySettlementRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Models/Pay/Settlement/GetPaySettlementRequest.cs @@ -31,7 +31,7 @@ /// [Newtonsoft.Json.JsonProperty("usetag")] [System.Text.Json.Serialization.JsonPropertyName("usetag")] - public int SettlementStatus { get; set; } + public int SettleState { get; set; } /// /// 获取或设置交易开始日期字符串(格式:yyyyMMdd)。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/HKPartnerTransactions/HKPartnerTransactionResource.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/HKPartnerTransactions/HKPartnerTransactionResource.cs new file mode 100644 index 00000000..7c6d2f95 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/HKPartnerTransactions/HKPartnerTransactionResource.cs @@ -0,0 +1,132 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events +{ + /// + /// 表示 TRANSACTION.SUCCESS (仅限服务商 For HK)通知的数据。 + /// + public class HKPartnerTransactionResource : WechatTenpayEvent.Types.IDecryptedResource + { + public static class Types + { + public class Payer : Models.GetHKPartnerTransactionByOutTradeNumberResponse.Types.Payer + { + } + + public class Amount : Models.GetHKPartnerTransactionByOutTradeNumberResponse.Types.Amount + { + } + + public class Promotion : Models.GetHKPartnerTransactionByOutTradeNumberResponse.Types.Promotion + { + } + } + + /// + /// 获取或设置服务商商户号。 + /// + [Newtonsoft.Json.JsonProperty("sp_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_mchid")] + public string MerchantId { get; set; } = default!; + + /// + /// 获取或设置服务商 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sp_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_appid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = default!; + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = default!; + + /// + /// 获取或设置微信支付订单号。 + /// + [Newtonsoft.Json.JsonProperty("id")] + [System.Text.Json.Serialization.JsonPropertyName("id")] + public string TransactionId { get; set; } = default!; + + /// + /// 获取或设置交易类型。 + /// + [Newtonsoft.Json.JsonProperty("trade_type")] + [System.Text.Json.Serialization.JsonPropertyName("trade_type")] + public string TradeType { get; set; } = default!; + + /// + /// 获取或设置交易状态。 + /// + [Newtonsoft.Json.JsonProperty("trade_state")] + [System.Text.Json.Serialization.JsonPropertyName("trade_state")] + public string TradeState { get; set; } = default!; + + /// + /// 获取或设置交易状态描述。 + /// + [Newtonsoft.Json.JsonProperty("trade_state_desc")] + [System.Text.Json.Serialization.JsonPropertyName("trade_state_desc")] + public string TradeStateDescription { get; set; } = default!; + + /// + /// 获取或设置付款银行类型。 + /// + [Newtonsoft.Json.JsonProperty("bank_type")] + [System.Text.Json.Serialization.JsonPropertyName("bank_type")] + public string? BankType { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置支付完成时间。 + /// + [Newtonsoft.Json.JsonProperty("success_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("success_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))] + public DateTimeOffset SuccessTime { get; set; } + + /// + /// 获取或设置支付者信息。 + /// + [Newtonsoft.Json.JsonProperty("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer? Payer { get; set; } + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = default!; + + /// + /// 获取或设置优惠信息。 + /// + [Newtonsoft.Json.JsonProperty("promotion_detail")] + [System.Text.Json.Serialization.JsonPropertyName("promotion_detail")] + public Types.Promotion[]? PromotionList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/HKTransactions/HKTransactionResource.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/HKTransactions/HKTransactionResource.cs new file mode 100644 index 00000000..97206c43 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/HKTransactions/HKTransactionResource.cs @@ -0,0 +1,118 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Events +{ + /// + /// 表示 TRANSACTION.SUCCESS (仅限直连商户 For HK)通知的数据。 + /// + public class HKTransactionResource : WechatTenpayEvent.Types.IDecryptedResource + { + public static class Types + { + public class Payer : Models.GetHKTransactionByOutTradeNumberResponse.Types.Payer + { + } + + public class Amount : Models.GetHKTransactionByOutTradeNumberResponse.Types.Amount + { + } + + public class Promotion : Models.GetHKTransactionByOutTradeNumberResponse.Types.Promotion + { + } + } + + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = default!; + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = default!; + + /// + /// 获取或设置微信支付订单号。 + /// + [Newtonsoft.Json.JsonProperty("id")] + [System.Text.Json.Serialization.JsonPropertyName("id")] + public string TransactionId { get; set; } = default!; + + /// + /// 获取或设置交易类型。 + /// + [Newtonsoft.Json.JsonProperty("trade_type")] + [System.Text.Json.Serialization.JsonPropertyName("trade_type")] + public string TradeType { get; set; } = default!; + + /// + /// 获取或设置交易状态。 + /// + [Newtonsoft.Json.JsonProperty("trade_state")] + [System.Text.Json.Serialization.JsonPropertyName("trade_state")] + public string TradeState { get; set; } = default!; + + /// + /// 获取或设置交易状态描述。 + /// + [Newtonsoft.Json.JsonProperty("trade_state_desc")] + [System.Text.Json.Serialization.JsonPropertyName("trade_state_desc")] + public string TradeStateDescription { get; set; } = default!; + + /// + /// 获取或设置付款银行类型。 + /// + [Newtonsoft.Json.JsonProperty("bank_type")] + [System.Text.Json.Serialization.JsonPropertyName("bank_type")] + public string? BankType { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置支付完成时间。 + /// + [Newtonsoft.Json.JsonProperty("success_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339DateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("success_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339DateTimeOffsetConverter))] + public DateTimeOffset SuccessTime { get; set; } + + /// + /// 获取或设置支付者信息。 + /// + [Newtonsoft.Json.JsonProperty("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer Payer { get; set; } = default!; + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = default!; + + /// + /// 获取或设置优惠信息。 + /// + [Newtonsoft.Json.JsonProperty("promotion_detail")] + [System.Text.Json.Serialization.JsonPropertyName("promotion_detail")] + public Types.Promotion[]? PromotionList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PayPartnerTransactions/PartnerRefundResource.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PartnerRefund/PartnerRefundResource.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PayPartnerTransactions/PartnerRefundResource.cs rename to src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PartnerRefund/PartnerRefundResource.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PayPartnerTransactions/PartnerTransactionResource.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PartnerTransactions/PartnerTransactionResource.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PayPartnerTransactions/PartnerTransactionResource.cs rename to src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PartnerTransactions/PartnerTransactionResource.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PayTransactions/TransactionResource.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/Transactions/TransactionResource.cs similarity index 100% rename from src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/PayTransactions/TransactionResource.cs rename to src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Events/Transactions/TransactionResource.cs diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteCertificatesExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteCertificatesExtensions.cs index c0df256e..940a272e 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteCertificatesExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteCertificatesExtensions.cs @@ -15,6 +15,12 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// 异步调用 [GET] /certificates 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay5_1.shtml /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/wechatpay/wechatpay5_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/QuickPay/chapter8_7.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/In-AppPay/chapter8_7.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/H5Payment/chapter8_7.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/OfficialPayMent/chapter8_7.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/MiniProgramPay/chapter8_7.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/NativePay/chapter8_7.shtml /// /// /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteHKCustomsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteHKCustomsExtensions.cs index 6a260914..a52db062 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteHKCustomsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteHKCustomsExtensions.cs @@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// /// 异步调用 [POST] /customs/orders 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/declarecustom/chapter3_1.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) /// /// /// @@ -36,6 +37,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// /// 异步调用 [GET] /customs/orders 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/declarecustom/chapter3_1.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) /// /// /// @@ -69,6 +71,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// /// 异步调用 [POST] /customs/redeclare 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/declarecustom/chapter3_4.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) /// /// /// @@ -91,6 +94,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// /// 异步调用 [PATCH] /customs/orders 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/declarecustom/chapter3_5.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) /// /// /// @@ -113,6 +117,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// /// 异步调用 [POST] /customs/verify-certificate 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/declarecustom/chapter3_2.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) /// /// /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteHKMerchantsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteHKMerchantsExtensions.cs index 7e7a17e1..298e2669 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteHKMerchantsExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteHKMerchantsExtensions.cs @@ -14,6 +14,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// /// 异步调用 [POST] /merchants 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/Onborading_Sub_Merchant/chapter3_1.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) /// /// /// @@ -37,6 +38,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// /// 异步调用 [GET] /merchants/{sub_mchid} 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/Onborading%20Sub%20Merchant/chapter3_2.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) /// /// /// @@ -61,6 +63,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 /// /// 异步调用 [PUT] /merchants 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/Onborading_Sub_Merchant/chapter3_3.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) /// /// /// diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteHKPartnerTransactionsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteHKPartnerTransactionsExtensions.cs new file mode 100644 index 00000000..e02af792 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteHKPartnerTransactionsExtensions.cs @@ -0,0 +1,287 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 +{ + /// + /// 为 提供境外支付融合钱包(For HK)相关的 API 扩展方法。 + /// + public static class WechatTenpayClientExecuteHKPartnerTransactionsExtensions + { + /// + /// 异步调用 [POST] /transactions/app 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/In-AppPay/chapter6_3.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteCreateHKPartnerTransactionAppAsync(this WechatTenpayClient client, Models.CreateHKPartnerTransactionAppRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "transactions", "app"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /transactions/mweb 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/H5Payment/chapter3_3.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteCreateHKPartnerTransactionMWebAsync(this WechatTenpayClient client, Models.CreateHKPartnerTransactionMWebRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "transactions", "mweb"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /transactions/jsapi 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/OfficialPayMent/chapter5_4.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/MiniProgramPay/chapter7_3.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteCreateHKPartnerTransactionJsapiAsync(this WechatTenpayClient client, Models.CreateHKPartnerTransactionJsapiRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "transactions", "jsapi"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /transactions/native 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/NativePay/chapter4_3.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteCreateHKPartnerTransactionNativeAsync(this WechatTenpayClient client, Models.CreateHKPartnerTransactionNativeRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "transactions", "native"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /transactions/out-trade-no/{out_trade_no} 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/In-AppPay/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/H5Payment/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/OfficialPayMent/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/MiniProgramPay/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/NativePay/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/QuickPay/chapter8_1.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteGetHKPartnerTransactionByOutTradeNumberAsync(this WechatTenpayClient client, Models.GetHKPartnerTransactionByOutTradeNumberRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Get, "transactions", "out-trade-no", request.OutTradeNumber) + .SetQueryParam("sp_mchid", request.MerchantId) + .SetQueryParam("sub_mchid", request.SubMerchantId); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /transactions/id/{transaction_id} 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/In-AppPay/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/H5Payment/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/OfficialPayMent/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/MiniProgramPay/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/NativePay/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/QuickPay/chapter8_1.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteGetHKPartnerTransactionByIdAsync(this WechatTenpayClient client, Models.GetHKPartnerTransactionByIdRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Get, "transactions", "id", request.TransactionId) + .SetQueryParam("sp_mchid", request.MerchantId) + .SetQueryParam("sub_mchid", request.SubMerchantId); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /transactions/out-trade-no/{out_trade_no}/close 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/In-AppPay/chapter8_6.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/H5Payment/chapter8_6.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/OfficialPayMent/chapter8_6.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/MiniProgramPay/chapter8_6.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/NativePay/chapter8_6.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteCloseHKPartnerTransactionAsync(this WechatTenpayClient client, Models.CloseHKPartnerTransactionRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "transactions", "out-trade-no", request.OutTradeNumber, "close") + .SetQueryParam("sp_mchid", request.MerchantId) + .SetQueryParam("sub_mchid", request.SubMerchantId); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /transactions/out-trade-no/{out_trade_no}/reverse 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/QuickPay/chapter3_4.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteReverseHKPartnerTransactionAsync(this WechatTenpayClient client, Models.ReverseHKPartnerTransactionRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "transactions", "out-trade-no", request.OutTradeNumber, "reverse") + .SetQueryParam("sp_mchid", request.MerchantId) + .SetQueryParam("sub_mchid", request.SubMerchantId); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /statements 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/In-AppPay/chapter8_5.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/H5Payment/chapter8_5.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/OfficialPayMent/chapter8_5.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/MiniProgramPay/chapter8_5.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/NativePay/chapter8_5.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/QuickPay/chapter8_5.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteDownloadHKStatementsAsync(this WechatTenpayClient client, Models.DownloadHKStatementsRequest 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, "statements") + .SetQueryParam("date", request.DateString); + + if (request.SubMerchantId != null) + flurlReq.SetQueryParam("mchid", request.SubMerchantId); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /settle/settlements 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/In-AppPay/chapter8_12.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/H5Payment/chapter8_12.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/OfficialPayMent/chapter8_12.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/MiniProgramPay/chapter8_12.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/NativePay/chapter8_12.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/QuickPay/chapter8_12.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteQueryHKSettlementsAsync(this WechatTenpayClient client, Models.QueryHKSettlementsRequest 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, "settle", "settlements") + .SetQueryParam("settle_state", request.SettleState) + .SetQueryParam("offset", request.Offset) + .SetQueryParam("limit", request.Limit); + + if (request.SubMerchantId != null) + flurlReq.SetQueryParam("sub_mchid", request.SubMerchantId); + + if (request.StartDateString != null) + flurlReq.SetQueryParam("settle_start_date", request.StartDateString); + + if (request.EndDateString != null) + flurlReq.SetQueryParam("settle_end_date", request.EndDateString); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteHKTransactionsExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteHKTransactionsExtensions.cs new file mode 100644 index 00000000..62b7620e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecuteHKTransactionsExtensions.cs @@ -0,0 +1,217 @@ +using System; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Flurl.Http; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 +{ + /// + /// 为 提供境外支付融合钱包(For HK)相关的 API 扩展方法。 + /// + public static class WechatTenpayClientExecuteHKTransactionsExtensions + { + /// + /// 异步调用 [POST] /transactions/app 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/In-AppPay/chapter6_3.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteCreateHKTransactionAppAsync(this WechatTenpayClient client, Models.CreateHKTransactionAppRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "transactions", "app"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /transactions/mweb 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/H5Payment/chapter3_3.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteCreateHKTransactionMWebAsync(this WechatTenpayClient client, Models.CreateHKTransactionMWebRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "transactions", "mweb"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /transactions/jsapi 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/OfficialPayMent/chapter5_4.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/MiniProgramPay/chapter7_3.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteCreateHKTransactionJsapiAsync(this WechatTenpayClient client, Models.CreateHKTransactionJsapiRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "transactions", "jsapi"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /transactions/native 接口。 + /// REF: https://https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/NativePay/chapter4_3.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteCreateHKTransactionNativeAsync(this WechatTenpayClient client, Models.CreateHKTransactionNativeRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "transactions", "native"); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /transactions/out-trade-no/{out_trade_no} 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/In-AppPay/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/H5Payment/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/OfficialPayMent/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/MiniProgramPay/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/NativePay/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/QuickPay/chapter8_1.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteGetHKTransactionByOutTradeNumberAsync(this WechatTenpayClient client, Models.GetHKTransactionByOutTradeNumberRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Get, "transactions", "out-trade-no", request.OutTradeNumber) + .SetQueryParam("mchid", request.MerchantId); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [GET] /transactions/id/{transaction_id} 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/In-AppPay/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/H5Payment/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/OfficialPayMent/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/MiniProgramPay/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/NativePay/chapter8_1.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/QuickPay/chapter8_1.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteGetHKTransactionByIdAsync(this WechatTenpayClient client, Models.GetHKTransactionByIdRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Get, "transactions", "id", request.TransactionId) + .SetQueryParam("mchid", request.MerchantId); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /transactions/out-trade-no/{out_trade_no}/close 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/In-AppPay/chapter8_6.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/H5Payment/chapter8_6.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/OfficialPayMent/chapter8_6.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/MiniProgramPay/chapter8_6.shtml + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/NativePay/chapter8_6.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteCloseHKTransactionAsync(this WechatTenpayClient client, Models.CloseHKTransactionRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "transactions", "out-trade-no", request.OutTradeNumber, "close") + .SetQueryParam("mchid", request.MerchantId); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + + /// + /// 异步调用 [POST] /transactions/out-trade-no/{out_trade_no}/reverse 接口。 + /// REF: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/fusion_wallet/QuickPay/chapter3_4.shtml + /// (请注意调用此接口需在构造 时指定特殊的 。) + /// + /// + /// + /// + /// + public static async Task ExecuteReverseHKTransactionAsync(this WechatTenpayClient client, Models.ReverseHKTransactionRequest request, CancellationToken cancellationToken = default) + { + if (client is null) throw new ArgumentNullException(nameof(client)); + if (request is null) throw new ArgumentNullException(nameof(request)); + + if (request.MerchantId == null) + request.MerchantId = client.Credentials.MerchantId; + + IFlurlRequest flurlReq = client + .CreateRequest(request, HttpMethod.Post, "transactions", "out-trade-no", request.OutTradeNumber, "reverse") + .SetQueryParam("mchid", request.MerchantId); + + return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePartnerTransferExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePartnerTransferExtensions.cs index 3516f939..a7e22bd3 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePartnerTransferExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientExecutePartnerTransferExtensions.cs @@ -31,7 +31,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken); } - + /// /// 异步调用 [GET] /partner-transfer/batches/batch-id/{batch_id} 接口。 /// REF: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transfer_partner/chapter3_2.shtml diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientRequestEncryptionExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientRequestEncryptionExtensions.cs index a0f8b4a7..34569d92 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientRequestEncryptionExtensions.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Extensions/WechatTenpayClientRequestEncryptionExtensions.cs @@ -74,7 +74,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3 plainText: oldValue ); } - else if(Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS1.Equals(attr.Algorithm)) + else if (Constants.EncryptionAlgorithms.RSA_2048_ECB_PKCS1.Equals(attr.Algorithm)) { newValue = Utilities.RSAUtility.EncryptWithECBByCertificate( certificate: certificate, diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKCustoms/CreateHKCustomsOrderRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKCustoms/CreateHKCustomsOrderRequest.cs index 599e4a0c..75244005 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKCustoms/CreateHKCustomsOrderRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKCustoms/CreateHKCustomsOrderRequest.cs @@ -55,7 +55,7 @@ public string MerchantCustomsNumber { get; set; } = string.Empty; /// - /// 获取或设置关税(单位:分)。 + /// 获取或设置关税(单位:指定货币的最小单位)。 /// [Newtonsoft.Json.JsonProperty("duty")] [System.Text.Json.Serialization.JsonPropertyName("duty")] @@ -69,21 +69,21 @@ public string? FeeType { get; set; } /// - /// 获取或设置应付金额(单位:分)。 + /// 获取或设置应付金额(单位:指定货币的最小单位)。 /// [Newtonsoft.Json.JsonProperty("order_fee")] [System.Text.Json.Serialization.JsonPropertyName("order_fee")] public int? OrderFee { get; set; } /// - /// 获取或设置物流费(单位:分)。 + /// 获取或设置物流费(单位:指定货币的最小单位)。 /// [Newtonsoft.Json.JsonProperty("transport_fee")] [System.Text.Json.Serialization.JsonPropertyName("transport_fee")] public int? TransportFee { get; set; } /// - /// 获取或设置商品价格(单位:分)。 + /// 获取或设置商品价格(单位:指定货币的最小单位)。 /// [Newtonsoft.Json.JsonProperty("product_fee")] [System.Text.Json.Serialization.JsonPropertyName("product_fee")] diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKCustoms/QueryHKCustomsOrdersResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKCustoms/QueryHKCustomsOrdersResponse.cs index d6d4ab27..620864bd 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKCustoms/QueryHKCustomsOrdersResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKCustoms/QueryHKCustomsOrdersResponse.cs @@ -47,7 +47,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models public string MerchantCustomsNumber { get; set; } = default!; /// - /// 获取或设置关税(单位:分)。 + /// 获取或设置关税(单位:指定货币的最小单位)。 /// [Newtonsoft.Json.JsonProperty("duty")] [System.Text.Json.Serialization.JsonPropertyName("duty")] @@ -62,14 +62,14 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models public string? FeeType { get; set; } /// - /// 获取或设置应付金额(单位:分)。 + /// 获取或设置应付金额(单位:指定货币的最小单位)。 /// [Newtonsoft.Json.JsonProperty("order_fee")] [System.Text.Json.Serialization.JsonPropertyName("order_fee")] public int? OrderFee { get; set; } /// - /// 获取或设置物流费(单位:分)。 + /// 获取或设置物流费(单位:指定货币的最小单位)。 /// [Newtonsoft.Json.JsonProperty("transport_fee")] [System.Text.Json.Serialization.JsonPropertyName("transport_fee")] @@ -77,7 +77,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models public int? TransportFee { get; set; } /// - /// 获取或设置商品价格(单位:分)。 + /// 获取或设置商品价格(单位:指定货币的最小单位)。 /// [Newtonsoft.Json.JsonProperty("product_fee")] [System.Text.Json.Serialization.JsonPropertyName("product_fee")] diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKCustoms/VerifyHKCustomsCertificateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKCustoms/VerifyHKCustomsCertificateResponse.cs index bb86f7b6..c1aac3bf 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKCustoms/VerifyHKCustomsCertificateResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKCustoms/VerifyHKCustomsCertificateResponse.cs @@ -1,6 +1,4 @@ -using System; - -namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models { /// /// 表示 [POST] /customs/verify-certificate 接口的响应。 diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKMerchants/AddHKSubMerchantRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKMerchants/AddHKSubMerchantRequest.cs index a4eeb47e..0a83419b 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKMerchants/AddHKSubMerchantRequest.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKMerchants/AddHKSubMerchantRequest.cs @@ -47,7 +47,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models public string BusinessType { get; set; } = string.Empty; /// - /// 获取或设置商户类别编码。 + /// 获取或设置商户行业编码。 /// [Newtonsoft.Json.JsonProperty("mcc")] [System.Text.Json.Serialization.JsonPropertyName("mcc")] diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKMerchants/GetHKSubMerchantResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKMerchants/GetHKSubMerchantResponse.cs index 670a42e1..de06f70e 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKMerchants/GetHKSubMerchantResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKMerchants/GetHKSubMerchantResponse.cs @@ -44,7 +44,7 @@ public string BusinessType { get; set; } = default!; /// - /// 获取或设置商户类别编码。 + /// 获取或设置商户行业编码。 /// [Newtonsoft.Json.JsonProperty("mcc")] [System.Text.Json.Serialization.JsonPropertyName("mcc")] diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CloseHKPartnerTransactionRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CloseHKPartnerTransactionRequest.cs new file mode 100644 index 00000000..cc92bb44 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CloseHKPartnerTransactionRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/out-trade-no/{out_trade_no}/close 接口的请求。 + /// + public class CloseHKPartnerTransactionRequest : ClosePayPartnerTransactionRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CloseHKPartnerTransactionResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CloseHKPartnerTransactionResponse.cs new file mode 100644 index 00000000..61049edc --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CloseHKPartnerTransactionResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/out-trade-no/{out_trade_no}/close 接口的响应。 + /// + public class CloseHKPartnerTransactionResponse : ClosePayPartnerTransactionResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionAppRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionAppRequest.cs new file mode 100644 index 00000000..8483e977 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionAppRequest.cs @@ -0,0 +1,173 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/app 接口的请求。 + /// + public class CreateHKPartnerTransactionAppRequest : WechatTenpayRequest + { + public static class Types + { + public class Payer + { + /// + /// 获取或设置用户在机构商户下的唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("sp_openid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_openid")] + public string? OpenId { get; set; } + + /// + /// 获取或设置用户在子商户下的唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("sub_openid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_openid")] + public string? SubOpenId { get; set; } + } + + public class Amount : CreateHKTransactionAppRequest.Types.Amount + { + } + + public class Detail : CreateHKTransactionAppRequest.Types.Detail + { + } + + public class Scene : CreateHKTransactionAppRequest.Types.Scene + { + } + } + + /// + /// 获取或设置机构商户号。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("sp_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_mchid")] + public string? MerchantId { get; set; } + + /// + /// 获取或设置机构 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sp_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + + /// + /// 获取或设置商品描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = string.Empty; + + /// + /// 获取或设置交易类型。 + /// 默认值:APP + /// + [Newtonsoft.Json.JsonProperty("trade_type")] + [System.Text.Json.Serialization.JsonPropertyName("trade_type")] + public string TradeType { get; set; } = "APP"; + + /// + /// 获取或设置交易起始时间。 + /// + [Newtonsoft.Json.JsonProperty("time_start")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_start")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? StartTime { get; set; } + + /// + /// 获取或设置交易结束时间。 + /// + [Newtonsoft.Json.JsonProperty("time_expire")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_expire")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? ExpireTime { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string? NotifyUrl { get; set; } + + /// + /// 获取或设置订单优惠标记。 + /// + [Newtonsoft.Json.JsonProperty("goods_tag")] + [System.Text.Json.Serialization.JsonPropertyName("goods_tag")] + public string? GoodsTag { get; set; } + + /// + /// 获取或设置指定付款方式编码。 + /// + [Newtonsoft.Json.JsonProperty("limit_pay")] + [System.Text.Json.Serialization.JsonPropertyName("limit_pay")] + public string? LimitPayCode { get; set; } + + /// + /// 获取或设置支付者信息。 + /// + [Newtonsoft.Json.JsonProperty("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer Payer { get; set; } = new Types.Payer(); + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = new Types.Amount(); + + /// + /// 获取或设置商品信息。 + /// + [Newtonsoft.Json.JsonProperty("detail")] + [System.Text.Json.Serialization.JsonPropertyName("detail")] + public Types.Detail? Detail { get; set; } + + /// + /// 获取或设置场景信息。 + /// + [Newtonsoft.Json.JsonProperty("scene_info")] + [System.Text.Json.Serialization.JsonPropertyName("scene_info")] + public Types.Scene? Scene { get; set; } + + /// + /// 获取或设置商户行业编码。 + /// + [Newtonsoft.Json.JsonProperty("merchant_category_code")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_category_code")] + public string MerchantCategoryCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionAppResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionAppResponse.cs new file mode 100644 index 00000000..a4a12325 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionAppResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/app 接口的响应。 + /// + public class CreateHKPartnerTransactionAppResponse : CreateHKTransactionAppResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionJsapiRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionJsapiRequest.cs new file mode 100644 index 00000000..27e8e1d3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionJsapiRequest.cs @@ -0,0 +1,160 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/jsapi 接口的请求。 + /// + public class CreateHKPartnerTransactionJsapiRequest : WechatTenpayRequest + { + public static class Types + { + public class Payer : CreateHKPartnerTransactionAppRequest.Types.Payer + { + } + + public class Amount : CreateHKTransactionJsapiRequest.Types.Amount + { + } + + public class Detail : CreateHKTransactionJsapiRequest.Types.Detail + { + } + + public class Scene : CreateHKTransactionJsapiRequest.Types.Scene + { + } + } + + /// + /// 获取或设置机构商户号。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("sp_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_mchid")] + public string? MerchantId { get; set; } + + /// + /// 获取或设置机构 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sp_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + + /// + /// 获取或设置商品描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = string.Empty; + + /// + /// 获取或设置交易类型。 + /// 默认值:JSAPI + /// + [Newtonsoft.Json.JsonProperty("trade_type")] + [System.Text.Json.Serialization.JsonPropertyName("trade_type")] + public string TradeType { get; set; } = "JSAPI"; + + /// + /// 获取或设置交易起始时间。 + /// + [Newtonsoft.Json.JsonProperty("time_start")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_start")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? StartTime { get; set; } + + /// + /// 获取或设置交易结束时间。 + /// + [Newtonsoft.Json.JsonProperty("time_expire")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_expire")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? ExpireTime { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string? NotifyUrl { get; set; } + + /// + /// 获取或设置订单优惠标记。 + /// + [Newtonsoft.Json.JsonProperty("goods_tag")] + [System.Text.Json.Serialization.JsonPropertyName("goods_tag")] + public string? GoodsTag { get; set; } + + /// + /// 获取或设置指定付款方式编码。 + /// + [Newtonsoft.Json.JsonProperty("limit_pay")] + [System.Text.Json.Serialization.JsonPropertyName("limit_pay")] + public string? LimitPayCode { get; set; } + + /// + /// 获取或设置支付者信息。 + /// + [Newtonsoft.Json.JsonProperty("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer Payer { get; set; } = new Types.Payer(); + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = new Types.Amount(); + + /// + /// 获取或设置商品信息。 + /// + [Newtonsoft.Json.JsonProperty("detail")] + [System.Text.Json.Serialization.JsonPropertyName("detail")] + public Types.Detail? Detail { get; set; } + + /// + /// 获取或设置场景信息。 + /// + [Newtonsoft.Json.JsonProperty("scene_info")] + [System.Text.Json.Serialization.JsonPropertyName("scene_info")] + public Types.Scene? Scene { get; set; } + + /// + /// 获取或设置商户行业编码。 + /// + [Newtonsoft.Json.JsonProperty("merchant_category_code")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_category_code")] + public string MerchantCategoryCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionJsapiResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionJsapiResponse.cs new file mode 100644 index 00000000..2b321942 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionJsapiResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/jsapi 接口的响应。 + /// + public class CreateHKPartnerTransactionJsapiResponse : CreateHKTransactionJsapiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionMWebRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionMWebRequest.cs new file mode 100644 index 00000000..de1a0243 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionMWebRequest.cs @@ -0,0 +1,160 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/mweb 接口的请求。 + /// + public class CreateHKPartnerTransactionMWebRequest : WechatTenpayRequest + { + public static class Types + { + public class Payer : CreateHKPartnerTransactionAppRequest.Types.Payer + { + } + + public class Amount : CreateHKTransactionMWebRequest.Types.Amount + { + } + + public class Detail : CreateHKTransactionMWebRequest.Types.Detail + { + } + + public class Scene : CreateHKTransactionMWebRequest.Types.Scene + { + } + } + + /// + /// 获取或设置机构商户号。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("sp_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_mchid")] + public string? MerchantId { get; set; } + + /// + /// 获取或设置机构 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sp_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + + /// + /// 获取或设置商品描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = string.Empty; + + /// + /// 获取或设置交易类型。 + /// 默认值:MWEB + /// + [Newtonsoft.Json.JsonProperty("trade_type")] + [System.Text.Json.Serialization.JsonPropertyName("trade_type")] + public string TradeType { get; set; } = "MWEB"; + + /// + /// 获取或设置交易起始时间。 + /// + [Newtonsoft.Json.JsonProperty("time_start")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_start")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? StartTime { get; set; } + + /// + /// 获取或设置交易结束时间。 + /// + [Newtonsoft.Json.JsonProperty("time_expire")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_expire")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? ExpireTime { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string? NotifyUrl { get; set; } + + /// + /// 获取或设置订单优惠标记。 + /// + [Newtonsoft.Json.JsonProperty("goods_tag")] + [System.Text.Json.Serialization.JsonPropertyName("goods_tag")] + public string? GoodsTag { get; set; } + + /// + /// 获取或设置指定付款方式编码。 + /// + [Newtonsoft.Json.JsonProperty("limit_pay")] + [System.Text.Json.Serialization.JsonPropertyName("limit_pay")] + public string? LimitPayCode { get; set; } + + /// + /// 获取或设置支付者信息。 + /// + [Newtonsoft.Json.JsonProperty("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer Payer { get; set; } = new Types.Payer(); + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = new Types.Amount(); + + /// + /// 获取或设置商品信息。 + /// + [Newtonsoft.Json.JsonProperty("detail")] + [System.Text.Json.Serialization.JsonPropertyName("detail")] + public Types.Detail? Detail { get; set; } + + /// + /// 获取或设置场景信息。 + /// + [Newtonsoft.Json.JsonProperty("scene_info")] + [System.Text.Json.Serialization.JsonPropertyName("scene_info")] + public Types.Scene? Scene { get; set; } + + /// + /// 获取或设置商户行业编码。 + /// + [Newtonsoft.Json.JsonProperty("merchant_category_code")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_category_code")] + public string MerchantCategoryCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionMWebResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionMWebResponse.cs new file mode 100644 index 00000000..9078bc13 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionMWebResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/mweb 接口的响应。 + /// + public class CreateHKPartnerTransactionMWebResponse : CreateHKTransactionMWebResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionMicroPayRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionMicroPayRequest.cs new file mode 100644 index 00000000..bf5f2828 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionMicroPayRequest.cs @@ -0,0 +1,133 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/micropay 接口的请求。 + /// + public class CreateHKPartnerTransactionMicroPayRequest : WechatTenpayRequest + { + public static class Types + { + public class Payer : CreateHKTransactionMicroPayRequest.Types.Payer + { + } + + public class Amount : CreateHKTransactionMicroPayRequest.Types.Amount + { + } + + public class Detail : CreateHKTransactionMicroPayRequest.Types.Detail + { + } + + public class Scene : CreateHKTransactionMicroPayRequest.Types.Scene + { + } + } + + /// + /// 获取或设置机构商户号。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("sp_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_mchid")] + public string? MerchantId { get; set; } + + /// + /// 获取或设置机构 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sp_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_appid")] + public string? AppId { get; set; } + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + + /// + /// 获取或设置商品描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = string.Empty; + + /// + /// 获取或设置交易类型。 + /// 默认值:MICROPAY + /// + [Newtonsoft.Json.JsonProperty("trade_type")] + [System.Text.Json.Serialization.JsonPropertyName("trade_type")] + public string TradeType { get; set; } = "MICROPAY"; + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置订单优惠标记。 + /// + [Newtonsoft.Json.JsonProperty("goods_tag")] + [System.Text.Json.Serialization.JsonPropertyName("goods_tag")] + public string? GoodsTag { get; set; } + + /// + /// 获取或设置指定付款方式编码。 + /// + [Newtonsoft.Json.JsonProperty("limit_pay")] + [System.Text.Json.Serialization.JsonPropertyName("limit_pay")] + public string? LimitPayCode { get; set; } + + /// + /// 获取或设置支付者信息。 + /// + [Newtonsoft.Json.JsonProperty("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer Payer { get; set; } = new Types.Payer(); + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = new Types.Amount(); + + /// + /// 获取或设置商品信息。 + /// + [Newtonsoft.Json.JsonProperty("detail")] + [System.Text.Json.Serialization.JsonPropertyName("detail")] + public Types.Detail? Detail { get; set; } + + /// + /// 获取或设置场景信息。 + /// + [Newtonsoft.Json.JsonProperty("scene_info")] + [System.Text.Json.Serialization.JsonPropertyName("scene_info")] + public Types.Scene? Scene { get; set; } + + /// + /// 获取或设置商户行业编码。 + /// + [Newtonsoft.Json.JsonProperty("merchant_category_code")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_category_code")] + public string MerchantCategoryCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionMicroPayResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionMicroPayResponse.cs new file mode 100644 index 00000000..700f7ff0 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionMicroPayResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/micropay 接口的响应。 + /// + public class CreateHKPartnerTransactionMicroPayResponse : GetHKPartnerTransactionByOutTradeNumberResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionNativeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionNativeRequest.cs new file mode 100644 index 00000000..9f28c5eb --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionNativeRequest.cs @@ -0,0 +1,160 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/native 接口的请求。 + /// + public class CreateHKPartnerTransactionNativeRequest : WechatTenpayRequest + { + public static class Types + { + public class Payer : CreateHKPartnerTransactionAppRequest.Types.Payer + { + } + + public class Amount : CreateHKTransactionNativeRequest.Types.Amount + { + } + + public class Detail : CreateHKTransactionNativeRequest.Types.Detail + { + } + + public class Scene : CreateHKTransactionNativeRequest.Types.Scene + { + } + } + + /// + /// 获取或设置机构商户号。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("sp_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_mchid")] + public string? MerchantId { get; set; } + + /// + /// 获取或设置机构 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sp_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_appid")] + public string? AppId { get; set; } + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = string.Empty; + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + + /// + /// 获取或设置商品描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = string.Empty; + + /// + /// 获取或设置交易类型。 + /// 默认值:NATIVE + /// + [Newtonsoft.Json.JsonProperty("trade_type")] + [System.Text.Json.Serialization.JsonPropertyName("trade_type")] + public string TradeType { get; set; } = "NATIVE"; + + /// + /// 获取或设置交易起始时间。 + /// + [Newtonsoft.Json.JsonProperty("time_start")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_start")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? StartTime { get; set; } + + /// + /// 获取或设置交易结束时间。 + /// + [Newtonsoft.Json.JsonProperty("time_expire")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_expire")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? ExpireTime { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string? NotifyUrl { get; set; } + + /// + /// 获取或设置订单优惠标记。 + /// + [Newtonsoft.Json.JsonProperty("goods_tag")] + [System.Text.Json.Serialization.JsonPropertyName("goods_tag")] + public string? GoodsTag { get; set; } + + /// + /// 获取或设置指定付款方式编码。 + /// + [Newtonsoft.Json.JsonProperty("limit_pay")] + [System.Text.Json.Serialization.JsonPropertyName("limit_pay")] + public string? LimitPayCode { get; set; } + + /// + /// 获取或设置支付者信息。 + /// + [Newtonsoft.Json.JsonProperty("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer? Payer { get; set; } + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = new Types.Amount(); + + /// + /// 获取或设置商品信息。 + /// + [Newtonsoft.Json.JsonProperty("detail")] + [System.Text.Json.Serialization.JsonPropertyName("detail")] + public Types.Detail? Detail { get; set; } + + /// + /// 获取或设置场景信息。 + /// + [Newtonsoft.Json.JsonProperty("scene_info")] + [System.Text.Json.Serialization.JsonPropertyName("scene_info")] + public Types.Scene? Scene { get; set; } + + /// + /// 获取或设置商户行业编码。 + /// + [Newtonsoft.Json.JsonProperty("merchant_category_code")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_category_code")] + public string MerchantCategoryCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionNativeResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionNativeResponse.cs new file mode 100644 index 00000000..6479a84b --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/CreateHKPartnerTransactionNativeResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/native 接口的响应。 + /// + public class CreateHKPartnerTransactionNativeResponse : CreateHKTransactionNativeResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/GetHKPartnerTransactionByIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/GetHKPartnerTransactionByIdRequest.cs new file mode 100644 index 00000000..23753c2e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/GetHKPartnerTransactionByIdRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /transactions/id/{transaction_id} 接口的请求。 + /// + public class GetHKPartnerTransactionByIdRequest : GetPayPartnerTransactionByIdRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/GetHKPartnerTransactionByIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/GetHKPartnerTransactionByIdResponse.cs new file mode 100644 index 00000000..6ac56002 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/GetHKPartnerTransactionByIdResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /transactions/id/{transaction_id} 接口的响应。 + /// + public class GetHKPartnerTransactionByIdResponse : GetHKPartnerTransactionByOutTradeNumberResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/GetHKPartnerTransactionByOutTradeNumberRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/GetHKPartnerTransactionByOutTradeNumberRequest.cs new file mode 100644 index 00000000..769a0e86 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/GetHKPartnerTransactionByOutTradeNumberRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /transactions/out-trade-no/{out_trade_no} 接口的请求。 + /// + public class GetHKPartnerTransactionByOutTradeNumberRequest : GetPayPartnerTransactionByOutTradeNumberRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/GetHKPartnerTransactionByOutTradeNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/GetHKPartnerTransactionByOutTradeNumberResponse.cs new file mode 100644 index 00000000..08be8f74 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/GetHKPartnerTransactionByOutTradeNumberResponse.cs @@ -0,0 +1,145 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /transactions/out-trade-no/{out_trade_no} 接口的响应。 + /// + public class GetHKPartnerTransactionByOutTradeNumberResponse : WechatTenpayResponse + { + public static class Types + { + public class Payer + { + /// + /// 获取或设置用户在服务商下唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("sp_openid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_openid")] + public string? OpenId { get; set; } + + /// + /// 获取或设置用户在子商户下唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("sub_openid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_openid")] + public string? SubOpenId { get; set; } + } + + public class Amount : GetHKTransactionByOutTradeNumberResponse.Types.Amount + { + } + + public class Promotion : GetHKTransactionByOutTradeNumberResponse.Types.Promotion + { + } + } + + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("sp_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_mchid")] + public string MerchantId { get; set; } = default!; + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sp_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sp_appid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonProperty("sub_mchid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_mchid")] + public string SubMerchantId { get; set; } = default!; + + /// + /// 获取或设置子商户 AppId。 + /// + [Newtonsoft.Json.JsonProperty("sub_appid")] + [System.Text.Json.Serialization.JsonPropertyName("sub_appid")] + public string? SubAppId { get; set; } + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = default!; + + /// + /// 获取或设置微信支付订单号。 + /// + [Newtonsoft.Json.JsonProperty("id")] + [System.Text.Json.Serialization.JsonPropertyName("id")] + public string? TransactionId { get; set; } + + /// + /// 获取或设置交易类型。 + /// + [Newtonsoft.Json.JsonProperty("trade_type")] + [System.Text.Json.Serialization.JsonPropertyName("trade_type")] + public string TradeType { get; set; } = default!; + + /// + /// 获取或设置交易状态。 + /// + [Newtonsoft.Json.JsonProperty("trade_state")] + [System.Text.Json.Serialization.JsonPropertyName("trade_state")] + public string TradeState { get; set; } = default!; + + /// + /// 获取或设置交易状态描述。 + /// + [Newtonsoft.Json.JsonProperty("trade_state_desc")] + [System.Text.Json.Serialization.JsonPropertyName("trade_state_desc")] + public string TradeStateDescription { get; set; } = default!; + + /// + /// 获取或设置付款银行类型。 + /// + [Newtonsoft.Json.JsonProperty("bank_type")] + [System.Text.Json.Serialization.JsonPropertyName("bank_type")] + public string? BankType { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置支付完成时间。 + /// + [Newtonsoft.Json.JsonProperty("success_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("success_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? SuccessTime { get; set; } + + /// + /// 获取或设置支付者信息。 + /// + [Newtonsoft.Json.JsonProperty("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer? Payer { get; set; } + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = default!; + + /// + /// 获取或设置优惠信息。 + /// + [Newtonsoft.Json.JsonProperty("promotion_detail")] + [System.Text.Json.Serialization.JsonPropertyName("promotion_detail")] + public Types.Promotion[]? PromotionList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/ReverseHKPartnerTransactionRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/ReverseHKPartnerTransactionRequest.cs new file mode 100644 index 00000000..1d24b9b6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/ReverseHKPartnerTransactionRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/out-trade-no/{out_trade_no}/reverse 接口的请求。 + /// + public class ReverseHKPartnerTransactionRequest : CloseHKPartnerTransactionRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/ReverseHKPartnerTransactionResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/ReverseHKPartnerTransactionResponse.cs new file mode 100644 index 00000000..342e9cdd --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/ReverseHKPartnerTransactionResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/out-trade-no/{out_trade_no}/reverse 接口的响应。 + /// + public class ReverseHKPartnerTransactionResponse : CloseHKPartnerTransactionResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/Settlements/QueryHKSettlementsRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/Settlements/QueryHKSettlementsRequest.cs new file mode 100644 index 00000000..4325b5d7 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/Settlements/QueryHKSettlementsRequest.cs @@ -0,0 +1,52 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /settle/settlements 接口的请求。 + /// + public class QueryHKSettlementsRequest : WechatTenpayRequest + { + /// + /// 获取或设置结算状态。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string SettleState { get; set; } = string.Empty; + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? SubMerchantId { get; set; } + + /// + /// 获取或设置交易开始日期字符串(格式:yyyyMMdd)。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? StartDateString { get; set; } + + /// + /// 获取或设置交易结束日期字符串(格式:yyyyMMdd)。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? EndDateString { get; set; } + + /// + /// 获取或设置分页起始位置。 + /// 默认值:0 + /// + [Newtonsoft.Json.JsonProperty("offset")] + [System.Text.Json.Serialization.JsonPropertyName("offset")] + public int Offset { get; set; } = 0; + + /// + /// 获取或设置分页每页数量。 + /// 默认值:10 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int Limit { get; set; } = 10; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/Settlements/QueryHKSettlementsResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/Settlements/QueryHKSettlementsResponse.cs new file mode 100644 index 00000000..dfee2ab3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/Settlements/QueryHKSettlementsResponse.cs @@ -0,0 +1,139 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /settle/settlements 接口的响应。 + /// + public class QueryHKSettlementsResponse : WechatTenpayResponse + { + public static class Types + { + public class Settlement + { + public static class Types + { + public class Amount + { + /// + /// 获取或设置已划账金额(单位:指定货币的最小单位)。 + /// + [Newtonsoft.Json.JsonProperty("settled")] + [System.Text.Json.Serialization.JsonPropertyName("settled")] + public int SettledAmount { get; set; } + + /// + /// 获取或设置未划账金额(单位:指定货币的最小单位)。 + /// + [Newtonsoft.Json.JsonProperty("unsettle")] + [System.Text.Json.Serialization.JsonPropertyName("unsettle")] + public int UnsettledAmount { get; set; } + + /// + /// 获取或设置结算币种。 + /// + [Newtonsoft.Json.JsonProperty("currency")] + [System.Text.Json.Serialization.JsonPropertyName("currency")] + public string Currency { get; set; } = default!; + + /// + /// 获取或设置该结算周期内会发生结算的交易总金额(单位:指定货币的最小单位)。 + /// + [Newtonsoft.Json.JsonProperty("pay")] + [System.Text.Json.Serialization.JsonPropertyName("pay")] + public int PayAmount { get; set; } + + /// + /// 获取或设置该结算周期内退款总金额(单位:指定货币的最小单位)。 + /// + [Newtonsoft.Json.JsonProperty("refund")] + [System.Text.Json.Serialization.JsonPropertyName("refund")] + public int RefundAmount { get; set; } + + /// + /// 获取或设置该结算周期交易与退款总金额之差(单位:指定货币的最小单位)。 + /// + [Newtonsoft.Json.JsonProperty("net")] + [System.Text.Json.Serialization.JsonPropertyName("net")] + public int NetAmount { get; set; } + + /// + /// 获取或设置手续费金额(单位:指定货币的最小单位)。 + /// + [Newtonsoft.Json.JsonProperty("fee")] + [System.Text.Json.Serialization.JsonPropertyName("fee")] + public int Fee { get; set; } + } + } + + /// + /// 获取或设置付汇批次号。 + /// + [Newtonsoft.Json.JsonProperty("batch_id")] + [System.Text.Json.Serialization.JsonPropertyName("batch_id")] + public string BatchId { get; set; } = default!; + + /// + /// 获取或设置结算日期字符串(格式:yyyyMMdd)。 + /// + [Newtonsoft.Json.JsonProperty("settlement_date")] + [System.Text.Json.Serialization.JsonPropertyName("settlement_date")] + public string SettlementDateString { get; set; } = default!; + + /// + /// 获取或设置交易开始日期字符串(格式:yyyyMMdd)。 + /// + [Newtonsoft.Json.JsonProperty("trade_start_date")] + [System.Text.Json.Serialization.JsonPropertyName("trade_start_date")] + public string StartDateString { get; set; } = default!; + + /// + /// 获取或设置交易结束日期字符串(格式:yyyyMMdd)。 + /// + [Newtonsoft.Json.JsonProperty("trade_end_date")] + [System.Text.Json.Serialization.JsonPropertyName("trade_end_date")] + public string EndDateString { get; set; } = default!; + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = default!; + + /// + /// 获取或设置钱包主体类型。 + /// + [Newtonsoft.Json.JsonProperty("wallet_region")] + [System.Text.Json.Serialization.JsonPropertyName("wallet_region")] + public string? WalletRegionType { get; set; } + } + } + + /// + /// 获取或设置结算记录列表。 + /// + [Newtonsoft.Json.JsonProperty("data")] + [System.Text.Json.Serialization.JsonPropertyName("data")] + public Types.Settlement[]? SettlementList { get; set; } + + /// + /// 获取或设置分页大小。 + /// + [Newtonsoft.Json.JsonProperty("limit")] + [System.Text.Json.Serialization.JsonPropertyName("limit")] + public int Limit { get; set; } + + /// + /// 获取或设置分页开始位置。 + /// + [Newtonsoft.Json.JsonProperty("offset")] + [System.Text.Json.Serialization.JsonPropertyName("offset")] + public int Offset { get; set; } + + /// + /// 获取或设置结算记录总数。 + /// + [Newtonsoft.Json.JsonProperty("total_count")] + [System.Text.Json.Serialization.JsonPropertyName("total_count")] + public int TotalCount { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/Statements/DownloadHKStatementsRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/Statements/DownloadHKStatementsRequest.cs new file mode 100644 index 00000000..32db11a6 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/Statements/DownloadHKStatementsRequest.cs @@ -0,0 +1,22 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /statements 接口的请求。 + /// + public class DownloadHKStatementsRequest : WechatTenpayRequest + { + /// + /// 获取或设置账单日期字符串(格式:yyyyMMdd)。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string DateString { get; set; } = string.Empty; + + /// + /// 获取或设置子商户号。 + /// + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public string? SubMerchantId { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/Statements/DownloadHKStatementsResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/Statements/DownloadHKStatementsResponse.cs new file mode 100644 index 00000000..779798ac --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKPartnerTransactions/Statements/DownloadHKStatementsResponse.cs @@ -0,0 +1,13 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /statements 接口的响应。 + /// + public class DownloadHKStatementsResponse : WechatTenpayResponse + { + public override bool IsSuccessful() + { + return base.IsSuccessful() && RawBytes.Length > 0; + } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CloseHKTransactionRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CloseHKTransactionRequest.cs new file mode 100644 index 00000000..c3bc29a3 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CloseHKTransactionRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/out-trade-no/{out_trade_no}/close 接口的请求。 + /// + public class CloseHKTransactionRequest : ClosePayTransactionRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CloseHKTransactionResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CloseHKTransactionResponse.cs new file mode 100644 index 00000000..1db98d1a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CloseHKTransactionResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/out-trade-no/{out_trade_no}/close 接口的响应。 + /// + public class CloseHKTransactionResponse : ClosePayTransactionResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionAppRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionAppRequest.cs new file mode 100644 index 00000000..1bef4707 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionAppRequest.cs @@ -0,0 +1,269 @@ +using System; +using System.Collections.Generic; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/app 接口的请求。 + /// + public class CreateHKTransactionAppRequest : WechatTenpayRequest + { + public static class Types + { + public class Payer + { + /// + /// 获取或设置用户唯一标识。 + /// + [Newtonsoft.Json.JsonProperty("openid")] + [System.Text.Json.Serialization.JsonPropertyName("openid")] + public string? OpenId { get; set; } + } + + public class Amount + { + /// + /// 获取或设置总金额(单位:指定货币的最小单位)。 + /// + [Newtonsoft.Json.JsonProperty("total")] + [System.Text.Json.Serialization.JsonPropertyName("total")] + public int Total { get; set; } + + /// + /// 获取或设置币种。 + /// 默认值:HKD + /// + [Newtonsoft.Json.JsonProperty("currency")] + [System.Text.Json.Serialization.JsonPropertyName("currency")] + public string Currency { get; set; } = "HKD"; + } + + public class Detail + { + public static class Types + { + public class GoodsDetail + { + /// + /// 获取或设置商户侧商品编码。 + /// + [Newtonsoft.Json.JsonProperty("goods_id")] + [System.Text.Json.Serialization.JsonPropertyName("goods_id")] + public string MerchantGoodsId { get; set; } = string.Empty; + + /// + /// 获取或设置微信侧商品编码。 + /// + [Newtonsoft.Json.JsonProperty("wxpay_goods_id")] + [System.Text.Json.Serialization.JsonPropertyName("wxpay_goods_id")] + public string? WechatpayGoodsId { get; set; } + + /// + /// 获取或设置商品名称。 + /// + [Newtonsoft.Json.JsonProperty("goods_name")] + [System.Text.Json.Serialization.JsonPropertyName("goods_name")] + public string? GoodsName { get; set; } + + /// + /// 获取或设置商品数量。 + /// + [Newtonsoft.Json.JsonProperty("quantity")] + [System.Text.Json.Serialization.JsonPropertyName("quantity")] + public int Quantity { get; set; } + + /// + /// 获取或设置商品单价(单位:指定货币的最小单位)。 + /// + [Newtonsoft.Json.JsonProperty("price")] + [System.Text.Json.Serialization.JsonPropertyName("price")] + public int UnitPrice { get; set; } + } + } + + /// + /// 获取或设置订单原价(单位:指定货币的最小单位)。 + /// + [Newtonsoft.Json.JsonProperty("cost_price")] + [System.Text.Json.Serialization.JsonPropertyName("cost_price")] + public int? CostPrice { get; set; } + + /// + /// 获取或设置商品小票 ID。 + /// + [Newtonsoft.Json.JsonProperty("receipt_id")] + [System.Text.Json.Serialization.JsonPropertyName("receipt_id")] + public string? ReceiptId { get; set; } + + /// + /// 获取或设置单品列表。 + /// + [Newtonsoft.Json.JsonProperty("goods_detail")] + [System.Text.Json.Serialization.JsonPropertyName("goods_detail")] + public List? GoodsList { get; set; } + } + + public class Scene + { + public static class Types + { + public class Store : CreatePayTransactionAppRequest.Types.Scene.Types.Store + { + } + } + + /// + /// 获取或设置用户终端 IP。 + /// + [Newtonsoft.Json.JsonProperty("payer_client_ip")] + [System.Text.Json.Serialization.JsonPropertyName("payer_client_ip")] + public string ClientIp { get; set; } = string.Empty; + + /// + /// 获取或设置商户端设备号。 + /// + [Newtonsoft.Json.JsonProperty("device_id")] + [System.Text.Json.Serialization.JsonPropertyName("device_id")] + public string? DeviceId { get; set; } + + /// + /// 获取或设置商户端设备 IP。 + /// + [Newtonsoft.Json.JsonProperty("device_ip")] + [System.Text.Json.Serialization.JsonPropertyName("device_ip")] + public string? DeviceIp { get; set; } + + /// + /// 获取或设置操作员 ID。 + /// + [Newtonsoft.Json.JsonProperty("operator_id")] + [System.Text.Json.Serialization.JsonPropertyName("operator_id")] + public string? OperatorId { get; set; } + + /// + /// 获取或设置商户门店信息。 + /// + [Newtonsoft.Json.JsonProperty("store_info")] + [System.Text.Json.Serialization.JsonPropertyName("store_info")] + public Types.Store? Store { get; set; } + } + } + + /// + /// 获取或设置微信商户号。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string? MerchantId { get; set; } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置商品描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = string.Empty; + + /// + /// 获取或设置交易类型。 + /// 默认值:APP + /// + [Newtonsoft.Json.JsonProperty("trade_type")] + [System.Text.Json.Serialization.JsonPropertyName("trade_type")] + public string TradeType { get; set; } = "APP"; + + /// + /// 获取或设置交易起始时间。 + /// + [Newtonsoft.Json.JsonProperty("time_start")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_start")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? StartTime { get; set; } + + /// + /// 获取或设置交易结束时间。 + /// + [Newtonsoft.Json.JsonProperty("time_expire")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_expire")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? ExpireTime { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string? NotifyUrl { get; set; } + + /// + /// 获取或设置订单优惠标记。 + /// + [Newtonsoft.Json.JsonProperty("goods_tag")] + [System.Text.Json.Serialization.JsonPropertyName("goods_tag")] + public string? GoodsTag { get; set; } + + /// + /// 获取或设置指定付款方式编码。 + /// + [Newtonsoft.Json.JsonProperty("limit_pay")] + [System.Text.Json.Serialization.JsonPropertyName("limit_pay")] + public string? LimitPayCode { get; set; } + + /// + /// 获取或设置支付者信息。 + /// + [Newtonsoft.Json.JsonProperty("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer Payer { get; set; } = new Types.Payer(); + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = new Types.Amount(); + + /// + /// 获取或设置商品信息。 + /// + [Newtonsoft.Json.JsonProperty("detail")] + [System.Text.Json.Serialization.JsonPropertyName("detail")] + public Types.Detail? Detail { get; set; } + + /// + /// 获取或设置场景信息。 + /// + [Newtonsoft.Json.JsonProperty("scene_info")] + [System.Text.Json.Serialization.JsonPropertyName("scene_info")] + public Types.Scene? Scene { get; set; } + + /// + /// 获取或设置商户行业编码。 + /// + [Newtonsoft.Json.JsonProperty("merchant_category_code")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_category_code")] + public string MerchantCategoryCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionAppResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionAppResponse.cs new file mode 100644 index 00000000..a8eb178f --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionAppResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/app 接口的响应。 + /// + public class CreateHKTransactionAppResponse : CreatePayTransactionAppResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionJsapiRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionJsapiRequest.cs new file mode 100644 index 00000000..ead38bfb --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionJsapiRequest.cs @@ -0,0 +1,158 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/jsapi 接口的请求。 + /// + public class CreateHKTransactionJsapiRequest : WechatTenpayRequest + { + public static class Types + { + public class Payer : CreateHKTransactionAppRequest.Types.Payer + { + } + + public class Amount : CreateHKTransactionAppRequest.Types.Amount + { + } + + public class Detail : CreateHKTransactionAppRequest.Types.Detail + { + public new static class Types + { + public class GoodsDetail : CreateHKTransactionAppRequest.Types.Detail.Types.GoodsDetail + { + } + } + } + + public class Scene : CreateHKTransactionAppRequest.Types.Scene + { + public new static class Types + { + public class Store : CreateHKTransactionAppRequest.Types.Scene.Types.Store + { + } + } + } + } + + /// + /// 获取或设置微信商户号。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string? MerchantId { get; set; } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置商品描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = string.Empty; + + /// + /// 获取或设置交易类型。 + /// 默认值:JSAPI + /// + [Newtonsoft.Json.JsonProperty("trade_type")] + [System.Text.Json.Serialization.JsonPropertyName("trade_type")] + public string TradeType { get; set; } = "JSAPI"; + + /// + /// 获取或设置交易起始时间。 + /// + [Newtonsoft.Json.JsonProperty("time_start")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_start")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? StartTime { get; set; } + + /// + /// 获取或设置交易结束时间。 + /// + [Newtonsoft.Json.JsonProperty("time_expire")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_expire")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? ExpireTime { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string? NotifyUrl { get; set; } + + /// + /// 获取或设置订单优惠标记。 + /// + [Newtonsoft.Json.JsonProperty("goods_tag")] + [System.Text.Json.Serialization.JsonPropertyName("goods_tag")] + public string? GoodsTag { get; set; } + + /// + /// 获取或设置指定付款方式编码。 + /// + [Newtonsoft.Json.JsonProperty("limit_pay")] + [System.Text.Json.Serialization.JsonPropertyName("limit_pay")] + public string? LimitPayCode { get; set; } + + /// + /// 获取或设置支付者信息。 + /// + [Newtonsoft.Json.JsonProperty("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer Payer { get; set; } = new Types.Payer(); + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = new Types.Amount(); + + /// + /// 获取或设置商品信息。 + /// + [Newtonsoft.Json.JsonProperty("detail")] + [System.Text.Json.Serialization.JsonPropertyName("detail")] + public Types.Detail? Detail { get; set; } + + /// + /// 获取或设置场景信息。 + /// + [Newtonsoft.Json.JsonProperty("scene_info")] + [System.Text.Json.Serialization.JsonPropertyName("scene_info")] + public Types.Scene? Scene { get; set; } + + /// + /// 获取或设置商户行业编码。 + /// + [Newtonsoft.Json.JsonProperty("merchant_category_code")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_category_code")] + public string MerchantCategoryCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionJsapiResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionJsapiResponse.cs new file mode 100644 index 00000000..c244831a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionJsapiResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/jsapi 接口的响应。 + /// + public class CreateHKTransactionJsapiResponse : CreatePayTransactionJsapiResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionMWebRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionMWebRequest.cs new file mode 100644 index 00000000..97c0c484 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionMWebRequest.cs @@ -0,0 +1,158 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/mweb 接口的请求。 + /// + public class CreateHKTransactionMWebRequest : WechatTenpayRequest + { + public static class Types + { + public class Payer : CreateHKTransactionAppRequest.Types.Payer + { + } + + public class Amount : CreateHKTransactionAppRequest.Types.Amount + { + } + + public class Detail : CreateHKTransactionAppRequest.Types.Detail + { + public new static class Types + { + public class GoodsDetail : CreateHKTransactionAppRequest.Types.Detail.Types.GoodsDetail + { + } + } + } + + public class Scene : CreateHKTransactionAppRequest.Types.Scene + { + public new static class Types + { + public class Store : CreateHKTransactionAppRequest.Types.Scene.Types.Store + { + } + } + } + } + + /// + /// 获取或设置微信商户号。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string? MerchantId { get; set; } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = string.Empty; + + /// + /// 获取或设置商品描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = string.Empty; + + /// + /// 获取或设置交易类型。 + /// 默认值:MWEB + /// + [Newtonsoft.Json.JsonProperty("trade_type")] + [System.Text.Json.Serialization.JsonPropertyName("trade_type")] + public string TradeType { get; set; } = "MWEB"; + + /// + /// 获取或设置交易起始时间。 + /// + [Newtonsoft.Json.JsonProperty("time_start")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_start")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? StartTime { get; set; } + + /// + /// 获取或设置交易结束时间。 + /// + [Newtonsoft.Json.JsonProperty("time_expire")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_expire")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? ExpireTime { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string? NotifyUrl { get; set; } + + /// + /// 获取或设置订单优惠标记。 + /// + [Newtonsoft.Json.JsonProperty("goods_tag")] + [System.Text.Json.Serialization.JsonPropertyName("goods_tag")] + public string? GoodsTag { get; set; } + + /// + /// 获取或设置指定付款方式编码。 + /// + [Newtonsoft.Json.JsonProperty("limit_pay")] + [System.Text.Json.Serialization.JsonPropertyName("limit_pay")] + public string? LimitPayCode { get; set; } + + /// + /// 获取或设置支付者信息。 + /// + [Newtonsoft.Json.JsonProperty("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer? Payer { get; set; } + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = new Types.Amount(); + + /// + /// 获取或设置商品信息。 + /// + [Newtonsoft.Json.JsonProperty("detail")] + [System.Text.Json.Serialization.JsonPropertyName("detail")] + public Types.Detail? Detail { get; set; } + + /// + /// 获取或设置场景信息。 + /// + [Newtonsoft.Json.JsonProperty("scene_info")] + [System.Text.Json.Serialization.JsonPropertyName("scene_info")] + public Types.Scene? Scene { get; set; } + + /// + /// 获取或设置商户行业编码。 + /// + [Newtonsoft.Json.JsonProperty("merchant_category_code")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_category_code")] + public string MerchantCategoryCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionMWebResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionMWebResponse.cs new file mode 100644 index 00000000..7d049f66 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionMWebResponse.cs @@ -0,0 +1,15 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/mweb 接口的响应。 + /// + public class CreateHKTransactionMWebResponse : WechatTenpayResponse + { + /// + /// 获取或设置支付跳转链接。 + /// + [Newtonsoft.Json.JsonProperty("mweb_url")] + [System.Text.Json.Serialization.JsonPropertyName("mweb_url")] + public string MWebUrl { get; set; } = default!; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionMicroPayRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionMicroPayRequest.cs new file mode 100644 index 00000000..46084b4d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionMicroPayRequest.cs @@ -0,0 +1,137 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/micropay 接口的请求。 + /// + public class CreateHKTransactionMicroPayRequest : WechatTenpayRequest + { + public static class Types + { + public class Payer + { + /// + /// 获取或设置授权码。 + /// + [Newtonsoft.Json.JsonProperty("auth_code")] + [System.Text.Json.Serialization.JsonPropertyName("auth_code")] + public string AuthCode { get; set; } = string.Empty; + } + + public class Amount : CreateHKTransactionAppRequest.Types.Amount + { + } + + public class Detail : CreateHKTransactionAppRequest.Types.Detail + { + public new static class Types + { + public class GoodsDetail : CreateHKTransactionAppRequest.Types.Detail.Types.GoodsDetail + { + } + } + } + + public class Scene : CreateHKTransactionAppRequest.Types.Scene + { + public new static class Types + { + public class Store : CreateHKTransactionAppRequest.Types.Scene.Types.Store + { + } + } + } + } + + /// + /// 获取或设置微信商户号。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string? MerchantId { get; set; } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string? AppId { get; set; } + + /// + /// 获取或设置商品描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = string.Empty; + + /// + /// 获取或设置交易类型。 + /// 默认值:MICROPAY + /// + [Newtonsoft.Json.JsonProperty("trade_type")] + [System.Text.Json.Serialization.JsonPropertyName("trade_type")] + public string TradeType { get; set; } = "MICROPAY"; + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置订单优惠标记。 + /// + [Newtonsoft.Json.JsonProperty("goods_tag")] + [System.Text.Json.Serialization.JsonPropertyName("goods_tag")] + public string? GoodsTag { get; set; } + + /// + /// 获取或设置指定付款方式编码。 + /// + [Newtonsoft.Json.JsonProperty("limit_pay")] + [System.Text.Json.Serialization.JsonPropertyName("limit_pay")] + public string? LimitPayCode { get; set; } + + /// + /// 获取或设置支付者信息。 + /// + [Newtonsoft.Json.JsonProperty("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer Payer { get; set; } = new Types.Payer(); + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = new Types.Amount(); + + /// + /// 获取或设置商品信息。 + /// + [Newtonsoft.Json.JsonProperty("detail")] + [System.Text.Json.Serialization.JsonPropertyName("detail")] + public Types.Detail? Detail { get; set; } + + /// + /// 获取或设置场景信息。 + /// + [Newtonsoft.Json.JsonProperty("scene_info")] + [System.Text.Json.Serialization.JsonPropertyName("scene_info")] + public Types.Scene? Scene { get; set; } + + /// + /// 获取或设置商户行业编码。 + /// + [Newtonsoft.Json.JsonProperty("merchant_category_code")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_category_code")] + public string MerchantCategoryCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionMicroPayResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionMicroPayResponse.cs new file mode 100644 index 00000000..28a831d2 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionMicroPayResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/micropay 接口的响应。 + /// + public class CreateHKTransactionMicroPayResponse : GetHKTransactionByOutTradeNumberResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionNativeRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionNativeRequest.cs new file mode 100644 index 00000000..5a862bcb --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionNativeRequest.cs @@ -0,0 +1,158 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/native 接口的请求。 + /// + public class CreateHKTransactionNativeRequest : WechatTenpayRequest + { + public static class Types + { + public class Payer : CreateHKTransactionAppRequest.Types.Payer + { + } + + public class Amount : CreateHKTransactionAppRequest.Types.Amount + { + } + + public class Detail : CreateHKTransactionAppRequest.Types.Detail + { + public new static class Types + { + public class GoodsDetail : CreateHKTransactionAppRequest.Types.Detail.Types.GoodsDetail + { + } + } + } + + public class Scene : CreateHKTransactionAppRequest.Types.Scene + { + public new static class Types + { + public class Store : CreateHKTransactionAppRequest.Types.Scene.Types.Store + { + } + } + } + } + + /// + /// 获取或设置微信商户号。如果不指定将使用构造 时的 参数。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string? MerchantId { get; set; } + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string? AppId { get; set; } + + /// + /// 获取或设置商品描述。 + /// + [Newtonsoft.Json.JsonProperty("description")] + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } = string.Empty; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = string.Empty; + + /// + /// 获取或设置交易类型。 + /// 默认值:NATIVE + /// + [Newtonsoft.Json.JsonProperty("trade_type")] + [System.Text.Json.Serialization.JsonPropertyName("trade_type")] + public string TradeType { get; set; } = "NATIVE"; + + /// + /// 获取或设置交易起始时间。 + /// + [Newtonsoft.Json.JsonProperty("time_start")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_start")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? StartTime { get; set; } + + /// + /// 获取或设置交易结束时间。 + /// + [Newtonsoft.Json.JsonProperty("time_expire")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("time_expire")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? ExpireTime { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置回调通知地址。 + /// + [Newtonsoft.Json.JsonProperty("notify_url")] + [System.Text.Json.Serialization.JsonPropertyName("notify_url")] + public string? NotifyUrl { get; set; } + + /// + /// 获取或设置订单优惠标记。 + /// + [Newtonsoft.Json.JsonProperty("goods_tag")] + [System.Text.Json.Serialization.JsonPropertyName("goods_tag")] + public string? GoodsTag { get; set; } + + /// + /// 获取或设置指定付款方式编码。 + /// + [Newtonsoft.Json.JsonProperty("limit_pay")] + [System.Text.Json.Serialization.JsonPropertyName("limit_pay")] + public string? LimitPayCode { get; set; } + + /// + /// 获取或设置支付者信息。 + /// + [Newtonsoft.Json.JsonProperty("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer? Payer { get; set; } + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = new Types.Amount(); + + /// + /// 获取或设置商品信息。 + /// + [Newtonsoft.Json.JsonProperty("detail")] + [System.Text.Json.Serialization.JsonPropertyName("detail")] + public Types.Detail? Detail { get; set; } + + /// + /// 获取或设置场景信息。 + /// + [Newtonsoft.Json.JsonProperty("scene_info")] + [System.Text.Json.Serialization.JsonPropertyName("scene_info")] + public Types.Scene? Scene { get; set; } + + /// + /// 获取或设置商户行业编码。 + /// + [Newtonsoft.Json.JsonProperty("merchant_category_code")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_category_code")] + public string MerchantCategoryCode { get; set; } = string.Empty; + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionNativeResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionNativeResponse.cs new file mode 100644 index 00000000..0ed0e7f4 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/CreateHKTransactionNativeResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/native 接口的响应。 + /// + public class CreateHKTransactionNativeResponse : CreatePayTransactionNativeResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/GetHKTransactionByIdRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/GetHKTransactionByIdRequest.cs new file mode 100644 index 00000000..13cf868e --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/GetHKTransactionByIdRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /transactions/id/{transaction_id} 接口的请求。 + /// + public class GetHKTransactionByIdRequest : GetPayTransactionByIdRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/GetHKTransactionByIdResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/GetHKTransactionByIdResponse.cs new file mode 100644 index 00000000..2407e6af --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/GetHKTransactionByIdResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /transactions/id/{transaction_id} 接口的响应。 + /// + public class GetHKTransactionByIdResponse : GetHKTransactionByOutTradeNumberResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/GetHKTransactionByOutTradeNumberRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/GetHKTransactionByOutTradeNumberRequest.cs new file mode 100644 index 00000000..129e0d81 --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/GetHKTransactionByOutTradeNumberRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /transactions/out-trade-no/{out_trade_no} 接口的请求。 + /// + public class GetHKTransactionByOutTradeNumberRequest : GetPayTransactionByOutTradeNumberRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/GetHKTransactionByOutTradeNumberResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/GetHKTransactionByOutTradeNumberResponse.cs new file mode 100644 index 00000000..13b75f7a --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/GetHKTransactionByOutTradeNumberResponse.cs @@ -0,0 +1,262 @@ +using System; + +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [GET] /transactions/out-trade-no/{out_trade_no} 接口的响应。 + /// + public class GetHKTransactionByOutTradeNumberResponse : WechatTenpayResponse + { + public static class Types + { + public class Payer : GetPayTransactionByOutTradeNumberResponse.Types.Payer + { + } + + public class Amount : GetPayTransactionByOutTradeNumberResponse.Types.Amount + { + public static class Types + { + public class ExchangeRate + { + /// + /// 获取或设置结算方式。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string Type { get; set; } = default!; + + /// + /// 获取或设置汇率(格式:外币兑换人民币的比例乘以 10 的 8 次方)。 + /// + [Newtonsoft.Json.JsonProperty("rate")] + [System.Text.Json.Serialization.JsonPropertyName("rate")] + [System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)] + public long Value { get; set; } + } + } + + /// + /// 获取或设置汇率信息。 + /// + [Newtonsoft.Json.JsonProperty("exchange_rate")] + [System.Text.Json.Serialization.JsonPropertyName("exchange_rate")] + public Types.ExchangeRate? ExchangeRate { get; set; } + } + + public class Promotion + { + public static class Types + { + public class GoodsDetail + { + /// + /// 获取或设置商品编码。 + /// + [Newtonsoft.Json.JsonProperty("goods_id")] + [System.Text.Json.Serialization.JsonPropertyName("goods_id")] + public string GoodsId { get; set; } = default!; + + /// + /// 获取或设置商品数量。 + /// + [Newtonsoft.Json.JsonProperty("quantity")] + [System.Text.Json.Serialization.JsonPropertyName("quantity")] + public int Quantity { get; set; } + + /// + /// 获取或设置商品单价(单位:指定货币的最小单位)。 + /// + [Newtonsoft.Json.JsonProperty("price")] + [System.Text.Json.Serialization.JsonPropertyName("price")] + public int UnitPrice { get; set; } + + /// + /// 获取或设置商品优惠金额(单位:指定货币的最小单位)。 + /// + [Newtonsoft.Json.JsonProperty("discount_amount")] + [System.Text.Json.Serialization.JsonPropertyName("discount_amount")] + public int DiscountAmount { get; set; } + + /// + /// 获取或设置商品备注。 + /// + [Newtonsoft.Json.JsonProperty("goods_remark")] + [System.Text.Json.Serialization.JsonPropertyName("goods_remark")] + public string? GoodsRemark { get; set; } + } + } + + /// + /// 获取或设置券 ID。 + /// + [Newtonsoft.Json.JsonProperty("promotion_id")] + [System.Text.Json.Serialization.JsonPropertyName("promotion_id")] + public string PromotionId { get; set; } = default!; + + /// + /// 获取或设置优惠名称。 + /// + [Newtonsoft.Json.JsonProperty("name")] + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string? Name { get; set; } + + /// + /// 获取或设置优惠范围。 + /// + [Newtonsoft.Json.JsonProperty("scope")] + [System.Text.Json.Serialization.JsonPropertyName("scope")] + public string? Scope { get; set; } + + /// + /// 获取或设置优惠类型。 + /// + [Newtonsoft.Json.JsonProperty("type")] + [System.Text.Json.Serialization.JsonPropertyName("type")] + public string? Type { get; set; } + + /// + /// 获取或设置优惠券面额(单位:指定货币的最小单位)。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public int Amount { get; set; } + + /// + /// 获取或设置活动 ID。 + /// + [Newtonsoft.Json.JsonProperty("activity_id")] + [System.Text.Json.Serialization.JsonPropertyName("activity_id")] + public string? ActivityId { get; set; } + + /// + /// 获取或设置微信出资(单位:指定货币的最小单位)。 + /// + [Newtonsoft.Json.JsonProperty("wechatpay_contribute_amount")] + [System.Text.Json.Serialization.JsonPropertyName("wechatpay_contribute_amount")] + public int? WechatpayContribute { get; set; } + + /// + /// 获取或设置商户出资(单位:指定货币的最小单位)。 + /// + [Newtonsoft.Json.JsonProperty("merchant_contribute_amount")] + [System.Text.Json.Serialization.JsonPropertyName("merchant_contribute_amount")] + public int? MerchantContribute { get; set; } + + /// + /// 获取或设置其他出资(单位:指定货币的最小单位)。 + /// + [Newtonsoft.Json.JsonProperty("other_contribute_amount")] + [System.Text.Json.Serialization.JsonPropertyName("other_contribute_amount")] + public int? OtherContribute { get; set; } + + /// + /// 获取或设置优惠币种。 + /// + [Newtonsoft.Json.JsonProperty("currency")] + [System.Text.Json.Serialization.JsonPropertyName("currency")] + public string? Currency { get; set; } + + /// + /// 获取或设置单品列表。 + /// + [Newtonsoft.Json.JsonProperty("goods_detail")] + [System.Text.Json.Serialization.JsonPropertyName("goods_detail")] + public Types.GoodsDetail[]? GoodsList { get; set; } + } + } + + /// + /// 获取或设置微信商户号。 + /// + [Newtonsoft.Json.JsonProperty("mchid")] + [System.Text.Json.Serialization.JsonPropertyName("mchid")] + public string MerchantId { get; set; } = default!; + + /// + /// 获取或设置微信 AppId。 + /// + [Newtonsoft.Json.JsonProperty("appid")] + [System.Text.Json.Serialization.JsonPropertyName("appid")] + public string AppId { get; set; } = default!; + + /// + /// 获取或设置商户订单号。 + /// + [Newtonsoft.Json.JsonProperty("out_trade_no")] + [System.Text.Json.Serialization.JsonPropertyName("out_trade_no")] + public string OutTradeNumber { get; set; } = default!; + + /// + /// 获取或设置微信支付订单号。 + /// + [Newtonsoft.Json.JsonProperty("id")] + [System.Text.Json.Serialization.JsonPropertyName("id")] + public string? TransactionId { get; set; } + + /// + /// 获取或设置交易类型。 + /// + [Newtonsoft.Json.JsonProperty("trade_type")] + [System.Text.Json.Serialization.JsonPropertyName("trade_type")] + public string TradeType { get; set; } = default!; + + /// + /// 获取或设置交易状态。 + /// + [Newtonsoft.Json.JsonProperty("trade_state")] + [System.Text.Json.Serialization.JsonPropertyName("trade_state")] + public string TradeState { get; set; } = default!; + + /// + /// 获取或设置交易状态描述。 + /// + [Newtonsoft.Json.JsonProperty("trade_state_desc")] + [System.Text.Json.Serialization.JsonPropertyName("trade_state_desc")] + public string TradeStateDescription { get; set; } = default!; + + /// + /// 获取或设置付款银行类型。 + /// + [Newtonsoft.Json.JsonProperty("bank_type")] + [System.Text.Json.Serialization.JsonPropertyName("bank_type")] + public string? BankType { get; set; } + + /// + /// 获取或设置附加数据。 + /// + [Newtonsoft.Json.JsonProperty("attach")] + [System.Text.Json.Serialization.JsonPropertyName("attach")] + public string? Attachment { get; set; } + + /// + /// 获取或设置支付完成时间。 + /// + [Newtonsoft.Json.JsonProperty("success_time")] + [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + [System.Text.Json.Serialization.JsonPropertyName("success_time")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Converters.RFC3339NullableDateTimeOffsetConverter))] + public DateTimeOffset? SuccessTime { get; set; } + + /// + /// 获取或设置支付者信息。 + /// + [Newtonsoft.Json.JsonProperty("payer")] + [System.Text.Json.Serialization.JsonPropertyName("payer")] + public Types.Payer? Payer { get; set; } + + /// + /// 获取或设置金额信息。 + /// + [Newtonsoft.Json.JsonProperty("amount")] + [System.Text.Json.Serialization.JsonPropertyName("amount")] + public Types.Amount Amount { get; set; } = default!; + + /// + /// 获取或设置优惠信息。 + /// + [Newtonsoft.Json.JsonProperty("promotion_detail")] + [System.Text.Json.Serialization.JsonPropertyName("promotion_detail")] + public Types.Promotion[]? PromotionList { get; set; } + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/ReverseHKTransactionRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/ReverseHKTransactionRequest.cs new file mode 100644 index 00000000..2e69f9cb --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/ReverseHKTransactionRequest.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/out-trade-no/{out_trade_no}/reverse 接口的请求。 + /// + public class ReverseHKTransactionRequest : CloseHKTransactionRequest + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/ReverseHKTransactionResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/ReverseHKTransactionResponse.cs new file mode 100644 index 00000000..b08a400d --- /dev/null +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/HKTransactions/ReverseHKTransactionResponse.cs @@ -0,0 +1,9 @@ +namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models +{ + /// + /// 表示 [POST] /transactions/out-trade-no/{out_trade_no}/reverse 接口的响应。 + /// + public class ReverseHKTransactionResponse : CloseHKTransactionResponse + { + } +} diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MerchantFundIncomeRecords/QueryMerchantFundMerchantIncomeRecordsResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MerchantFundIncomeRecords/QueryMerchantFundMerchantIncomeRecordsResponse.cs index e6ade575..73bf5bbb 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MerchantFundIncomeRecords/QueryMerchantFundMerchantIncomeRecordsResponse.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV3/Models/MerchantFundIncomeRecords/QueryMerchantFundMerchantIncomeRecordsResponse.cs @@ -105,6 +105,5 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.Models [Newtonsoft.Json.JsonProperty("total_count")] [System.Text.Json.Serialization.JsonPropertyName("total_count")] public int TotalCount { get; set; } - } } diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/HKPartnerTransactions/HKPartnerTransactionResource.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/HKPartnerTransactions/HKPartnerTransactionResource.json new file mode 100644 index 00000000..e38b7256 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/HKPartnerTransactions/HKPartnerTransactionResource.json @@ -0,0 +1,48 @@ +{ + "id": "1008450740201411110005820873", + "sp_appid": "wx2421b1c4370ec43b", + "sp_mchid": "10000100", + "sub_mchid": "20000100", + "out_trade_no": "20150806125346", + "payer": { + "sp_openid": "oUpF8uN95-Ptaags6E_roPHg7AG0" + }, + "amount": { + "total": 528800, + "currency": "HKD", + "payer_total": 518799, + "payer_currency": "CNY", + "exchange_rate": { + "type": "SETTLEMENT_RATE", + "rate": 8000000 + } + }, + "trade_type": "MICROPAY", + "trade_state": "SUCCESS", + "trade_state_desc": "支付成功", + "bank_type": "CCB_DEBIT", + "attach": "支付测试", + "success_time": "2018-06-08T10:34:56+08:00", + "promotion_detail": [ + { + "promotion_id": "109519", + "name": "单品惠-6", + "scope": "SINGLE", + "type": "DISCOUNT", + "amount": 1, + "currency": "HKD", + "activity_id": "931386", + "wechatpay_contribute_amount": 1, + "merchant_contribute_amount": 0, + "other_contribute_amount": 0, + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "goods_remark": "商品备注", + "quantity": 1, + "price": 528800 + } + ] + } + ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/HKTransactions/HKTransactionResource.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/HKTransactions/HKTransactionResource.json new file mode 100644 index 00000000..5bf60ccb --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/HKTransactions/HKTransactionResource.json @@ -0,0 +1,47 @@ +{ + "id": "1008450740201411110005820873", + "appid": "wx2421b1c4370ec43b", + "mchid": "10000100", + "out_trade_no": "20150806125346", + "payer": { + "openid": "oUpF8uN95-Ptaags6E_roPHg7AG0" + }, + "amount": { + "total": 528800, + "currency": "HKD", + "payer_total": 518799, + "payer_currency": "CNY", + "exchange_rate": { + "type": "SETTLEMENT_RATE", + "rate": 8000000 + } + }, + "trade_type": "MICROPAY", + "trade_state": "SUCCESS", + "trade_state_desc": "支付成功", + "bank_type": "CCB_DEBIT", + "attach": "支付测试", + "success_time": "2018-06-08T10:34:56+08:00", + "promotion_detail": [ + { + "promotion_id": "109519", + "name": "单品惠-6", + "scope": "SINGLE", + "type": "DISCOUNT", + "amount": 1, + "currency": "HKD", + "activity_id": "931386", + "wechatpay_contribute_amount": 1, + "merchant_contribute_amount": 0, + "other_contribute_amount": 0, + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "goods_remark": "商品备注", + "quantity": 1, + "price": 528800 + } + ] + } + ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/PayPartnerTransactions/PartnerRefundResource.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/PartnerRefund/PartnerRefundResource.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/PayPartnerTransactions/PartnerRefundResource.json rename to test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/PartnerRefund/PartnerRefundResource.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/PayPartnerTransactions/PartnerTransactionResource.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/PartnerTransactions/PartnerTransactionResource.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/PayPartnerTransactions/PartnerTransactionResource.json rename to test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/PartnerTransactions/PartnerTransactionResource.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/PayTransactions/TransactionResource.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/Transactions/TransactionResource.json similarity index 100% rename from test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/PayTransactions/TransactionResource.json rename to test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/EventSamples/Transactions/TransactionResource.json diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionAppRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionAppRequest.json new file mode 100644 index 00000000..c406247e --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionAppRequest.json @@ -0,0 +1,42 @@ +{ + "sp_appid": "wx2421b1c4370ec43b", + "sp_mchid": "10000100", + "sub_mchid": "20000100", + "sub_appid": "wx352671b037b437ec", + "out_trade_no": "20150806125346", + "merchant_category_code": "1011", + "payer": { + "sp_openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o" + }, + "notify_url": "https://wxpay.wxutil.com/pub_v2/pay/notify.v2.php", + "trade_type": "APP", + "amount": { + "total": 10000, + "currency": "HKD" + }, + "attach": "Payment test", + "description": "In-APP Pay test", + "goods_tag": "", + "detail": { + "cost_price": 10000, + "receipt_id": "1234", + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "wxpay_goods_id": "1001", + "goods_name": "iPhone6s 16G", + "quantity": 1, + "price": 528800 + } + ] + }, + "scene_info": { + "payer_client_ip": "14.23.150.211", + "device_ip": "59.37.125.32", + "device_id": "013467007045764", + "operator_id": "P001", + "store_info": { + "id": "SZTX001" + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionAppResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionAppResponse.json new file mode 100644 index 00000000..0193a379 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionAppResponse.json @@ -0,0 +1,3 @@ +{ + "prepay_id": "wx201411101639507cbf6ffd8b0779950874" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionJsapiRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionJsapiRequest.json new file mode 100644 index 00000000..e4c1470f --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionJsapiRequest.json @@ -0,0 +1,41 @@ +{ + "sp_appid": "wx2421b1c4370ec43b", + "sp_mchid": "10000100", + "sub_mchid": "20000100", + "sub_appid": "wx352671b037b437ec", + "out_trade_no": "20150806125346", + "merchant_category_code": "1011", + "payer": { + "sub_openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o" + }, + "notify_url": "https://wxpay.wxutil.com/pub_v2/pay/notify.v2.php", + "trade_type": "JSAPI", + "amount": { + "total": 10000, + "currency": "HKD" + }, + "attach": "Payment test", + "description": "Miniprogramm Pay test", + "detail": { + "cost_price": 10000, + "receipt_id": "1234", + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "wxpay_goods_id": "1001", + "goods_name": "iPhone6s 16G", + "quantity": 1, + "price": 528800 + } + ] + }, + "scene_info": { + "payer_client_ip": "14.23.150.211", + "device_ip": "59.37.125.32", + "device_id": "013467007045764", + "operator_id": "P001", + "store_info": { + "id": "SZTX001" + } + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionJsapiResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionJsapiResponse.json new file mode 100644 index 00000000..0193a379 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionJsapiResponse.json @@ -0,0 +1,3 @@ +{ + "prepay_id": "wx201411101639507cbf6ffd8b0779950874" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionMWebRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionMWebRequest.json new file mode 100644 index 00000000..1c57a223 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionMWebRequest.json @@ -0,0 +1,41 @@ +{ + "sp_appid": "wx2421b1c4370ec43b", + "sp_mchid": "10000100", + "sub_mchid": "20000100", + "out_trade_no": "20150806125346", + "merchant_category_code": "1011", + "payer": { + "sp_openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o" + }, + "notify_url": "https://wxpay.wxutil.com/pub_v2/pay/notify.v2.php", + "trade_type": "APP", + "amount": { + "total": 10000, + "currency": "HKD" + }, + "attach": "支付测试", + "description": "APP支付测试", + "goods_tag": "", + "detail": { + "cost_price": 10000, + "receipt_id": "1234", + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "wxpay_goods_id": "1001", + "goods_name": "iPhone6s 16G", + "quantity": 1, + "price": 528800 + } + ] + }, + "scene_info": { + "payer_client_ip": "14.23.150.211", + "device_ip": "59.37.125.32", + "device_id": "013467007045764", + "operator_id": "P001", + "store_info": { + "id": "SZTX001" + } + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionMWebResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionMWebResponse.json new file mode 100644 index 00000000..d331b37a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionMWebResponse.json @@ -0,0 +1,3 @@ +{ + "mweb_url": " https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx2016121516420242444321ca0631331346&package=1405458241" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionMicroPayRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionMicroPayRequest.json new file mode 100644 index 00000000..c3d31630 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionMicroPayRequest.json @@ -0,0 +1,43 @@ +{ + "sp_appid": "wxdace645e0bc2c424", + "sp_mchid": "10000100", + "sub_mchid": "20000100", + "out_trade_no": "20150806125346", + "merchant_category_code": "4111", + "payer": { + "auth_code": "134650720866361395" + }, + "trade_type": "MICROPAY", + "amount": { + "total": 1, + "currency": "HKD" + }, + "attach": "Payment Test", + "description": "Image Store - Tencent Building in Shenzhen - QQ Doll", + "goods_tag": "1234", + "limit_pay": "no_credit", + "detail": { + "cost_price": 1, + "receipt_id": "1234", + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "wxpay_goods_id": "3405", + "goods_name": "iPhone6s 16G", + "quantity": 1, + "price": 1 + } + ] + }, + "scene_info": { + "payer_client_ip": "14.23.150.211", + "device_ip": "59.37.125.32", + "device_id": "013467007045764", + "operator_id": "P001", + "store_info": { + "id": "SZTX001", + "name": "Tencent Building Branch", + "address": "Nanshan District, Shenzhen, Guangdong" + } + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionMicroPayResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionMicroPayResponse.json new file mode 100644 index 00000000..58bc55c4 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionMicroPayResponse.json @@ -0,0 +1,48 @@ +{ + "id": "1008450740201411110005820873", + "sp_appid": "wx2421b1c4370ec43b", + "sub_appid": "", + "sp_mchid": "10000100", + "sub_mchid": "20000100", + "out_trade_no": "20171014125314", + "payer": { + "sp_openid": "oUpF8uN95-Ptaags6E_roPHg7AG0", + "sub_openid": "" + }, + "amount": { + "total": 528800, + "currency": "HKD", + "payer_total": 518799, + "payer_currency": "CNY", + "exchange_rate": { + "type": "SETTLEMENT_RATE", + "rate": 80000000 + } + }, + "trade_type": "MICROPAY", + "trade_state": "SUCCESS", + "trade_state_desc": "Payment successful", + "bank_type": "CCB_DEBIT", + "attach": "Payment test", + "success_time": "2018-06-08T10:34:56+08:00", + "detail": { + "promotion_id": "109519", + "name": "Single-item discount-6", + "scope": "SINGLE", + "type": "DISCOUNT", + "amount": 1, + "currency": "CNY", + "activity_id": "931386", + "wechatpay_contribute_amount": 1, + "merchant_contribute_amount": 0, + "other_contribute_amount": 0, + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "goods_remark": "Product remarks", + "quantity": 1, + "price": 528800 + } + ] + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionNativeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionNativeRequest.json new file mode 100644 index 00000000..73e256bf --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionNativeRequest.json @@ -0,0 +1,38 @@ +{ + "sp_appid": "wxdace645e0bc2c424", + "sp_mchid": "10000100", + "sub_mchid": "20000100", + "out_trade_no": "YX201710140020Z", + "merchant_category_code": "4111", + "notify_url": "https://wxpay.wxutil.com/pub_v2/pay/notify.v2.php", + "trade_type": "NATIVE", + "amount": { + "total": 10, + "currency": "HKD" + }, + "attach": "QR code test", + "description": "QR code test", + "goods_tag": "001", + "detail": { + "cost_price": 10000, + "receipt_id": "1234", + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "wxpay_goods_id": "1001", + "goods_name": "iPhone6s 16G", + "quantity": 1, + "price": 10 + } + ] + }, + "scene_info": { + "payer_client_ip": "14.23.150.211", + "device_ip": "59.37.125.32", + "device_id": "013467007045764", + "operator_id": "P001", + "store_info": { + "id": "SZTX001" + } + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionNativeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionNativeResponse.json new file mode 100644 index 00000000..b946bce9 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/CreateHKPartnerTransactionNativeResponse.json @@ -0,0 +1,3 @@ +{ + "code_url": "weixin://wxpay/s/An4baqw" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/GetHKPartnerTransactionByIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/GetHKPartnerTransactionByIdResponse.json new file mode 100644 index 00000000..5af04150 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/GetHKPartnerTransactionByIdResponse.json @@ -0,0 +1,48 @@ +{ + "id": "4200000000002104083200000488", + "sp_appid": "wx2421b1c4370ec43b", + "sp_mchid": "10000100", + "sub_mchid": "20000100", + "out_trade_no": "20150806125346", + "payer": { + "sp_openid": "oUpF8uN95-Ptaags6E_roPHg7AG0" + }, + "amount": { + "total": 528800, + "currency": "HKD", + "payer_total": 518799, + "payer_currency": "CNY", + "exchange_rate": { + "type": "SETTLEMENT_RATE", + "rate": 8000000 + } + }, + "trade_type": "APP", + "trade_state": "SUCCESS", + "trade_state_desc": "支付成功", + "bank_type": "CCB_DEBIT", + "attach": "支付测试", + "success_time": "2018-06-08T10:34:56+08:00", + "promotion_detail": [ + { + "promotion_id": "109519", + "name": "单品惠-6", + "scope": "SINGLE", + "type": "DISCOUNT", + "amount": 1, + "currency": "HKD", + "activity_id": "931386", + "wechatpay_contribute_amount": 1, + "merchant_contribute_amount": 0, + "other_contribute_amount": 0, + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "goods_remark": "商品备注", + "quantity": 1, + "price": 528800 + } + ] + } + ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/GetHKPartnerTransactionByOutTradeNumberResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/GetHKPartnerTransactionByOutTradeNumberResponse.json new file mode 100644 index 00000000..5af04150 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/GetHKPartnerTransactionByOutTradeNumberResponse.json @@ -0,0 +1,48 @@ +{ + "id": "4200000000002104083200000488", + "sp_appid": "wx2421b1c4370ec43b", + "sp_mchid": "10000100", + "sub_mchid": "20000100", + "out_trade_no": "20150806125346", + "payer": { + "sp_openid": "oUpF8uN95-Ptaags6E_roPHg7AG0" + }, + "amount": { + "total": 528800, + "currency": "HKD", + "payer_total": 518799, + "payer_currency": "CNY", + "exchange_rate": { + "type": "SETTLEMENT_RATE", + "rate": 8000000 + } + }, + "trade_type": "APP", + "trade_state": "SUCCESS", + "trade_state_desc": "支付成功", + "bank_type": "CCB_DEBIT", + "attach": "支付测试", + "success_time": "2018-06-08T10:34:56+08:00", + "promotion_detail": [ + { + "promotion_id": "109519", + "name": "单品惠-6", + "scope": "SINGLE", + "type": "DISCOUNT", + "amount": 1, + "currency": "HKD", + "activity_id": "931386", + "wechatpay_contribute_amount": 1, + "merchant_contribute_amount": 0, + "other_contribute_amount": 0, + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "goods_remark": "商品备注", + "quantity": 1, + "price": 528800 + } + ] + } + ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/Settlements/QueryHKSettlementsResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/Settlements/QueryHKSettlementsResponse.json new file mode 100644 index 00000000..a2dcfb75 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKPartnerTransactions/Settlements/QueryHKSettlementsResponse.json @@ -0,0 +1,39 @@ +{ + "data": [ + { + "amount": { + "settled": 123, + "fee": 123, + "pay": 123, + "currency": "HKD", + "net": 123, + "unsettle": 123, + "refund": 123 + }, + "settlement_date": "20091225", + "batch_id": "20091225003", + "wallet_region": "CHINA_HONGKONG", + "trade_start_date": "20091225", + "trade_end_date": "20091225" + }, + { + "amount": { + "settled": 123, + "fee": 123, + "pay": 123, + "currency": "HKD", + "net": 123, + "unsettle": 123, + "refund": 123 + }, + "settlement_date": "20091225", + "batch_id": "20091225003", + "wallet_region": "CHINA_HONGKONG", + "trade_start_date": "20091225", + "trade_end_date": "20091225" + } + ], + "offset": 1, + "total_count": 1234, + "limit": 20 +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionAppRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionAppRequest.json new file mode 100644 index 00000000..99ad99ee --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionAppRequest.json @@ -0,0 +1,40 @@ +{ + "appid": "wx2421b1c4370ec43b", + "mchid": "10000100", + "out_trade_no": "20150806125346", + "merchant_category_code": "1011", + "payer": { + "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o" + }, + "notify_url": "https://wxpay.wxutil.com/pub_v2/pay/notify.v2.php", + "trade_type": "APP", + "amount": { + "total": 10000, + "currency": "HKD" + }, + "attach": "Payment test", + "description": "In-APP Pay test", + "goods_tag": "", + "detail": { + "cost_price": 10000, + "receipt_id": "1234", + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "wxpay_goods_id": "1001", + "goods_name": "iPhone6s 16G", + "quantity": 1, + "price": 528800 + } + ] + }, + "scene_info": { + "payer_client_ip": "14.23.150.211", + "device_ip": "59.37.125.32", + "device_id": "013467007045764", + "operator_id": "P001", + "store_info": { + "id": "SZTX001" + } + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionAppResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionAppResponse.json new file mode 100644 index 00000000..0193a379 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionAppResponse.json @@ -0,0 +1,3 @@ +{ + "prepay_id": "wx201411101639507cbf6ffd8b0779950874" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionJsapiRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionJsapiRequest.json new file mode 100644 index 00000000..4c6aaa1b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionJsapiRequest.json @@ -0,0 +1,39 @@ +{ + "appid": "wx2421b1c4370ec43b", + "mchid": "10000100", + "out_trade_no": "20150806125346", + "merchant_category_code": "1011", + "payer": { + "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o" + }, + "notify_url": "https://wxpay.wxutil.com/pub_v2/pay/notify.v2.php", + "trade_type": "JSAPI", + "amount": { + "total": 10000, + "currency": "HKD" + }, + "attach": "Payment test", + "description": "Miniprogramm Pay test", + "detail": { + "cost_price": 10000, + "receipt_id": "1234", + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "wxpay_goods_id": "1001", + "goods_name": "iPhone6s 16G", + "quantity": 1, + "price": 528800 + } + ] + }, + "scene_info": { + "payer_client_ip": "14.23.150.211", + "device_ip": "59.37.125.32", + "device_id": "013467007045764", + "operator_id": "P001", + "store_info": { + "id": "SZTX001" + } + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionJsapiResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionJsapiResponse.json new file mode 100644 index 00000000..0193a379 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionJsapiResponse.json @@ -0,0 +1,3 @@ +{ + "prepay_id": "wx201411101639507cbf6ffd8b0779950874" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionMWebRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionMWebRequest.json new file mode 100644 index 00000000..56660265 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionMWebRequest.json @@ -0,0 +1,40 @@ +{ + "appid": "wx2421b1c4370ec43b", + "mchid": "10000100", + "out_trade_no": "20150806125346", + "merchant_category_code": "1011", + "payer": { + "openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o" + }, + "notify_url": "https://wxpay.wxutil.com/pub_v2/pay/notify.v2.php", + "trade_type": "APP", + "amount": { + "total": 10000, + "currency": "HKD" + }, + "attach": "支付测试", + "description": "APP支付测试", + "goods_tag": "", + "detail": { + "cost_price": 10000, + "receipt_id": "1234", + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "wxpay_goods_id": "1001", + "goods_name": "iPhone6s 16G", + "quantity": 1, + "price": 528800 + } + ] + }, + "scene_info": { + "payer_client_ip": "14.23.150.211", + "device_ip": "59.37.125.32", + "device_id": "013467007045764", + "operator_id": "P001", + "store_info": { + "id": "SZTX001" + } + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionMWebResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionMWebResponse.json new file mode 100644 index 00000000..d331b37a --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionMWebResponse.json @@ -0,0 +1,3 @@ +{ + "mweb_url": " https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx2016121516420242444321ca0631331346&package=1405458241" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionMicroPayRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionMicroPayRequest.json new file mode 100644 index 00000000..cb7f9045 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionMicroPayRequest.json @@ -0,0 +1,42 @@ +{ + "appid": "wxdace645e0bc2c424", + "mchid": "10000100", + "out_trade_no": "20150806125346", + "merchant_category_code": "4111", + "payer": { + "auth_code": "134650720866361395" + }, + "trade_type": "MICROPAY", + "amount": { + "total": 1, + "currency": "HKD" + }, + "attach": "Payment Test", + "description": "Image Store - Tencent Building in Shenzhen - QQ Doll", + "goods_tag": "1234", + "limit_pay": "no_credit", + "detail": { + "cost_price": 1, + "receipt_id": "1234", + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "wxpay_goods_id": "3405", + "goods_name": "iPhone6s 16G", + "quantity": 1, + "price": 1 + } + ] + }, + "scene_info": { + "payer_client_ip": "14.23.150.211", + "device_ip": "59.37.125.32", + "device_id": "013467007045764", + "operator_id": "P001", + "store_info": { + "id": "SZTX001", + "name": "Tencent Building Branch", + "address": "Nanshan District, Shenzhen, Guangdong" + } + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionMicroPayResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionMicroPayResponse.json new file mode 100644 index 00000000..7b27e87b --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionMicroPayResponse.json @@ -0,0 +1,45 @@ +{ + "id": "1008450740201411110005820873", + "appid": "wx2421b1c4370ec43b", + "mchid": "10000100", + "out_trade_no": "20171014125314", + "payer": { + "openid": "oUpF8uN95-Ptaags6E_roPHg7AG0" + }, + "amount": { + "total": 528800, + "currency": "HKD", + "payer_total": 518799, + "payer_currency": "CNY", + "exchange_rate": { + "type": "SETTLEMENT_RATE", + "rate": 80000000 + } + }, + "trade_type": "MICROPAY", + "trade_state": "SUCCESS", + "trade_state_desc": "Payment successful", + "bank_type": "CCB_DEBIT", + "attach": "Payment test", + "success_time": "2018-06-08T10:34:56+08:00", + "detail": { + "promotion_id": "109519", + "name": "Single-item discount-6", + "scope": "SINGLE", + "type": "DISCOUNT", + "amount": 1, + "currency": "CNY", + "activity_id": "931386", + "wechatpay_contribute_amount": 1, + "merchant_contribute_amount": 0, + "other_contribute_amount": 0, + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "goods_remark": "Product remarks", + "quantity": 1, + "price": 528800 + } + ] + } +} diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionNativeRequest.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionNativeRequest.json new file mode 100644 index 00000000..ecfe2d89 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionNativeRequest.json @@ -0,0 +1,37 @@ +{ + "appid": "wx2421b1c4370ec43b", + "mchid": "10000100", + "out_trade_no": "YX202111100020Z", + "merchant_category_code": "4111", + "notify_url": "https://wxpay.wxutil.com/pub_v2/pay/notify.v2.php", + "trade_type": "NATIVE", + "amount": { + "total": 10, + "currency": "HKD" + }, + "attach": "QR code test", + "description": "QR code test", + "goods_tag": "001", + "detail": { + "cost_price": 10000, + "receipt_id": "1234", + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "wxpay_goods_id": "1001", + "goods_name": "iPhone6s 16G", + "quantity": 1, + "price": 10 + } + ] + }, + "scene_info": { + "payer_client_ip": "14.23.150.211", + "device_ip": "59.37.125.32", + "device_id": "013467007045764", + "operator_id": "P001", + "store_info": { + "id": "SZTX001" + } + } +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionNativeResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionNativeResponse.json new file mode 100644 index 00000000..b946bce9 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/CreateHKTransactionNativeResponse.json @@ -0,0 +1,3 @@ +{ + "code_url": "weixin://wxpay/s/An4baqw" +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/GetHKTransactionByIdResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/GetHKTransactionByIdResponse.json new file mode 100644 index 00000000..84a59cc7 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/GetHKTransactionByIdResponse.json @@ -0,0 +1,47 @@ +{ + "id": "4200000000002104083200000488", + "appid": "wx2421b1c4370ec43b", + "mchid": "10000100", + "out_trade_no": "20150806125346", + "payer": { + "openid": "oUpF8uN95-Ptaags6E_roPHg7AG0" + }, + "amount": { + "total": 528800, + "currency": "HKD", + "payer_total": 518799, + "payer_currency": "CNY", + "exchange_rate": { + "type": "SETTLEMENT_RATE", + "rate": 8000000 + } + }, + "trade_type": "APP", + "trade_state": "SUCCESS", + "trade_state_desc": "支付成功", + "bank_type": "CCB_DEBIT", + "attach": "支付测试", + "success_time": "2018-06-08T10:34:56+08:00", + "promotion_detail": [ + { + "promotion_id": "109519", + "name": "单品惠-6", + "scope": "SINGLE", + "type": "DISCOUNT", + "amount": 1, + "currency": "HKD", + "activity_id": "931386", + "wechatpay_contribute_amount": 1, + "merchant_contribute_amount": 0, + "other_contribute_amount": 0, + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "goods_remark": "商品备注", + "quantity": 1, + "price": 528800 + } + ] + } + ] +} \ No newline at end of file diff --git a/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/GetHKTransactionByOutTradeNumberResponse.json b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/GetHKTransactionByOutTradeNumberResponse.json new file mode 100644 index 00000000..84a59cc7 --- /dev/null +++ b/test/SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests/ModelSamples/HKTransactions/GetHKTransactionByOutTradeNumberResponse.json @@ -0,0 +1,47 @@ +{ + "id": "4200000000002104083200000488", + "appid": "wx2421b1c4370ec43b", + "mchid": "10000100", + "out_trade_no": "20150806125346", + "payer": { + "openid": "oUpF8uN95-Ptaags6E_roPHg7AG0" + }, + "amount": { + "total": 528800, + "currency": "HKD", + "payer_total": 518799, + "payer_currency": "CNY", + "exchange_rate": { + "type": "SETTLEMENT_RATE", + "rate": 8000000 + } + }, + "trade_type": "APP", + "trade_state": "SUCCESS", + "trade_state_desc": "支付成功", + "bank_type": "CCB_DEBIT", + "attach": "支付测试", + "success_time": "2018-06-08T10:34:56+08:00", + "promotion_detail": [ + { + "promotion_id": "109519", + "name": "单品惠-6", + "scope": "SINGLE", + "type": "DISCOUNT", + "amount": 1, + "currency": "HKD", + "activity_id": "931386", + "wechatpay_contribute_amount": 1, + "merchant_contribute_amount": 0, + "other_contribute_amount": 0, + "goods_detail": [ + { + "goods_id": "iphone6s_16G", + "goods_remark": "商品备注", + "quantity": 1, + "price": 528800 + } + ] + } + ] +} \ No newline at end of file