Browse Source

[WeChatPay.V3] 新增 账单 - 申请二级商户资金账单

Roc 4 years ago
parent
commit
09ce9f3a0d

+ 71 - 0
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/DownloadBill.cs

@@ -0,0 +1,71 @@
+using System.Text.Json.Serialization;
+
+namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
+{
+    /// <summary>
+    /// 下载信息明细
+    /// </summary>
+    public class DownloadBill : WeChatPayObject
+    {
+        /// <summary>
+        /// 账单文件序号
+        /// </summary>
+        /// <remarks>
+        /// 商户将多个文件按账单文件序号的顺序合并为完整的资金账单文件,起始值为1
+        /// 示例值:1
+        /// </remarks>
+        [JsonPropertyName("bill_sequence")]
+        public int BillSequence { get; set; }
+
+        /// <summary>
+        /// 哈希类型
+        /// </summary>
+        /// <remarks>
+        /// 枚举值:
+        /// SHA1:SHA1值
+        /// 示例值:SHA1
+        /// </remarks>
+        [JsonPropertyName("hash_type")]
+        public string HashType { get; set; }
+
+        /// <summary>
+        /// 哈希值
+        /// </summary>
+        /// <remarks>
+        /// 原始账单(gzip需要解压缩)的摘要值,用于校验文件的完整性
+        /// 示例值:79bb0f45fc4c42234a918000b2668d689e2bde04
+        /// </remarks>
+        [JsonPropertyName("hash_value")]
+        public string HashValue { get; set; }
+
+        /// <summary>
+        /// 账单下载地址
+        /// </summary>
+        /// <remarks>
+        /// 供下一步请求账单文件的下载地址,该地址5min内有效。
+        /// 示例值:https://api.mch.weixin.qq.com/v3/bill/downloadurl?token=xxx
+        /// </remarks>
+        [JsonPropertyName("download_url")]
+        public string DownloadUrl { get; set; }
+
+        /// <summary>
+        /// 加密密钥
+        /// </summary>
+        /// <remarks>
+        /// 加密账单文件使用的加密密钥。密钥用商户证书的公钥进行加密,然后进行Base64编码
+        /// 示例值:YpkbxSne+mDwyXq//xYPmtr9eQ5LsH7zLMZSs+GSEcY4wjhlsfioS4n9X6q1ZBL0wM1v5qd7KhWuj0rFJ4N1FidP7Q8KDy25QDTt46wiKnsPKSCAXWRFNw1D2JmJBqZsc9y5g0DupONWKYB2GfRigRDEBVszj67uOIILPdxOKX1w3N4jvu0U9IFanJa7ldm70KVvYrMWVgQFDPbgjh1gVDbuTAjmPN88AobLdkiegnBUS2woDZW+PfhPo13kweOiR3h1gXIKRlnKnN3Jkkwpna/AFFijXrFphO3voSuiV0CfptfzTtcae4X3DYG3RSroKqmpa+5tuy2aU2VJUSIuFQ==
+        /// </remarks>
+        [JsonPropertyName("encrypt_key")]
+        public string EncryptKey { get; set; }
+
+        /// <summary>
+        /// 随机字符串
+        /// </summary>
+        /// <remarks>
+        /// 加密账单文件使用的随机字符串
+        /// 示例值:a8607ef79034c49c
+        /// </remarks>
+        [JsonPropertyName("nonce")]
+        public string Nonce { get; set; }
+    }
+}

+ 57 - 0
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Domain/WeChatPayEcommerceBillFundflowBillQueryModel.cs

@@ -0,0 +1,57 @@
+using System.Text.Json.Serialization;
+
+namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain
+{
+    /// <summary>
+    /// 账单 - 申请二级商户资金账单 - 请求URL参数
+    /// </summary>
+    /// <remarks>
+    /// <para><a href="https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/bill/chapter3_5.shtml">账单 - 申请二级商户资金账单API</a> - 最新更新时间:2020.08.10</para>
+    /// </remarks>
+    public class WeChatPayEcommerceBillFundflowBillQueryModel : WeChatPayObject
+    {
+        /// <summary>
+        /// 账单日期
+        /// </summary>
+        /// <remarks>
+        /// 格式YYYY-MM-DD
+        /// 仅支持三个月内的账单下载申请。
+        /// 示例值:2019-06-11
+        /// </remarks>
+        [JsonPropertyName("bill_date")]
+        public string BillDate { get; set; }
+
+        /// <summary>
+        /// 资金账户类型
+        /// </summary>
+        /// <remarks>
+        /// 枚举值:
+        /// ALL:所有账户
+        /// 示例值:ALL
+        /// </remarks>
+        [JsonPropertyName("account_type")]
+        public string AccountType { get; set; }
+
+        /// <summary>
+        /// 压缩类型
+        /// </summary>
+        /// <remarks>
+        /// 不填则以不压缩的方式返回数据流,枚举值:
+        /// GZIP:GZIP格式压缩
+        /// 示例值:GZIP
+        /// </remarks>
+        [JsonPropertyName("tar_type")]
+        public string TarType { get; set; }
+
+        /// <summary>
+        /// 加密算法
+        /// </summary>
+        /// <remarks>
+        /// 枚举值:
+        /// AEAD_AES_256_GCM:AEAD_AES_256_GCM加密算法
+        /// 示例值:AEAD_AES_256_GCM
+        /// </remarks>
+        [JsonPropertyName("algorithm")]
+        public string Algorithm { get; set; }
+    }
+}

+ 30 - 0
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Request/WeChatPayEcommerceBillFundflowBillRequest.cs

@@ -0,0 +1,30 @@
+using Essensoft.AspNetCore.Payment.WeChatPay.V3.Response;
+
+namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Request
+{
+    /// <summary>
+    /// 账单 - 申请二级商户资金账单 - 请求URL参数
+    /// </summary>
+    /// <remarks>
+    /// <para><a href="https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/bill/chapter3_5.shtml">账单 - 申请二级商户资金账单API</a> - 最新更新时间:2020.08.10</para>
+    /// </remarks>
+    public class WeChatPayEcommerceBillFundflowBillRequest : IWeChatPayGetRequest<WeChatPayEcommerceBillFundflowBillResponse>
+    {
+        private WeChatPayObject queryModel;
+
+        public string GetRequestUrl()
+        {
+            return "https://api.mch.weixin.qq.com/v3/ecommerce/bill/fundflowbill";
+        }
+
+        public WeChatPayObject GetQueryModel()
+        {
+            return queryModel;
+        }
+
+        public void SetQueryModel(WeChatPayObject queryModel)
+        {
+            this.queryModel = queryModel;
+        }
+    }
+}

+ 34 - 0
src/Essensoft.AspNetCore.Payment.WeChatPay/V3/Response/WeChatPayEcommerceBillFundflowBillResponse.cs

@@ -0,0 +1,34 @@
+using System.Collections.Generic;
+using System.Text.Json.Serialization;
+using Essensoft.AspNetCore.Payment.WeChatPay.V3.Domain;
+
+namespace Essensoft.AspNetCore.Payment.WeChatPay.V3.Response
+{
+    /// <summary>
+    /// 账单 - 申请二级商户资金账单 - 返回参数
+    /// </summary>
+    /// <remarks>
+    /// <para><a href="https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/bill/chapter3_5.shtml">账单 - 申请二级商户资金账单API</a> - 最新更新时间:2020.08.10</para>
+    /// </remarks>
+    public class WeChatPayEcommerceBillFundflowBillResponse : WeChatPayResponse
+    {
+        /// <summary>
+        /// 下载信息总数
+        /// </summary>
+        /// <remarks>
+        /// 下载信息总数
+        /// 示例值:1
+        /// </remarks>
+        [JsonPropertyName("download_bill_count")]
+        public int DownloadBillCount { get; set; }
+
+        /// <summary>
+        /// 下载信息明细
+        /// </summary>
+        /// <remarks>
+        /// 下载信息明细
+        /// </remarks>
+        [JsonPropertyName("download_bill_list")]
+        public List<DownloadBill> DownloadBillList { get; set; }
+    }
+}