Commit 2903b95e by Neo Turing

增加小微企业验证对接

parent 3270b751
......@@ -14,7 +14,16 @@ namespace Kivii.Finances.Addons
public const string RouteAllPath = "/Kivii/Finances/Template/{Path*}";
public const string AesKey = "";
public const string AesIv = "";
#region PolicyVerify
public const string UrlVerify = "https://scjg.jszwfw.gov.cn:20081";
public const string RouteVerify = "/ecipplatform/minTypeCorpServlet.json?minTypeCorpInfo=true";
public const string AesKey = "hj7x89H$yuBI0456";
public const string AesIv = "NIfb&95GUY86Gfgh";
public const string APP_MARK = "QYZXDJYJS";
public const string APP_WORK = "jgta3mkGOgkY";
#endregion
}
}
......@@ -58,6 +58,7 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RequestService.cs" />
<Compile Include="Requests\PolicyVerify.Request.cs" />
<Compile Include="RestfulPolicyVerify.cs" />
<Compile Include="RestfulReadExcel.cs" />
<Compile Include="TemplateRequest.cs" />
</ItemGroup>
......
using System;
using Kivii.Text;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
......@@ -6,9 +7,15 @@ using System.Threading.Tasks;
namespace Kivii.Finances.Addons.Requests
{
#region Request.Response
[Route(Configs.RouteVerify)]
public class PolicyVerifyRequest : IReturn<PolicyVerifyResponse>
{
/// <summary>
/// 应用标识
/// </summary>
public string appMark { get; set; }
/// <summary>
/// 时间戳,即当前时间 格式为:年月日时分秒 实例: 2019年05月10日 12时12分12秒 格式应写为20190510121212
/// </summary>
public string time { get; set; }
......@@ -17,7 +24,7 @@ namespace Kivii.Finances.Addons.Requests
/// <summary>
/// 业务参数,json格式。数据固定格式如下,详情可见接口入参字段(节点里面全部内容进行SM2加密处理,非单个字段值){"corpName":"企业名称","uniscid": "统一社会信用代码"}
/// </summary>
public string @params { get; set; }
public string qyInfo { get; set; }
}
......@@ -90,5 +97,68 @@ namespace Kivii.Finances.Addons.Requests
/// 注册资本
/// </summary>
public string regCapi { get; set; }
/// <summary>
/// 时间
/// </summary>
public string time { get; set; }
/// <summary>
/// 是否是小微企业
/// </summary>
public string isMinCorp { get; set; }
}
#endregion
public class RestfulPolicyVerifyResponse: RestfulQueryResponse<PolicyVerifyResponseData>
{
public string Message { get; set; }
}
public static class PolicyVerifyExtension
{
public static RestfulPolicyVerifyResponse GetPolicyVerify(this JsonServiceClient client, PolicyVerifyRequestParams verifyParam)
{
if (client == null || verifyParam == null) throw new ArgumentNullException("client or verifyParam");
if (verifyParam.corpName.IsNullOrEmpty()) throw new ArgumentNullException("verifyParam.corpName");
AesEncryptor encryptor = new AesEncryptor(Configs.AesKey, Configs.AesIv);
var time = DateTime.Now.ToString("yyyyMMddHHmmss");
var signStr = $"{time}{Configs.APP_MARK}{Configs.APP_WORK}";
var sign = encryptor.Encrypt(signStr);
var paramJson = Kivii.Text.JsonSerializer.SerializeToString(verifyParam);
var param = encryptor.Encrypt(paramJson);
//var requestVerify = new PolicyVerifyRequest();
//requestVerify.appMark = Configs.APP_MARK;
//requestVerify.time = time;
//requestVerify.sign = sign;
//requestVerify.qyInfo = param;
var url = $"{Configs.RouteVerify}&appMark={Configs.APP_MARK}&time={time}&sign={sign}&qyInfo={param}";
var responseVerify = client.Get<PolicyVerifyResponse>(url);
if (responseVerify == null) throw new Exception("验证未响应");
var rtns = new RestfulPolicyVerifyResponse();
rtns.Results = new List<PolicyVerifyResponseData>();
if (responseVerify.code != "0")
{
rtns.Message = responseVerify.message;
return rtns;
}
try
{
var dataJson = encryptor.Decrypt(responseVerify.data);
var record = JsonSerializer.DeserializeFromString<PolicyVerifyResponseData>(dataJson);
rtns.Results.Add(record);
}
catch (Exception ex)
{
throw ex;
}
return rtns;
}
}
}
using Kivii.Finances.Addons.Requests;
using Kivii.Finances.Entities;
using Kivii.Linq;
using Kivii.Text;
using Kivii.Web;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Kivii.Finances.Addons
{
[Api(Description = "政策验证")]
[RequiresAnyRole(SystemRoles.Everyone)]
public class PolicyVerifying : RestfulExecution<Policy>
{
public string TargetName { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
if (TargetName.IsNullOrEmpty()) throw new Exception("请传入付款单位信息!");
var conn = KiviiContext.GetOpenedDbConnection<InvoiceTitle>();
var query = conn.From<InvoiceTitle>();
query.Where(o => o.CompanyName == TargetName);
query.Select(o => new { corpName = o.CompanyName, uniscid = o.TaxNumber });
var verifyParam = conn.Single<PolicyVerifyRequestParams>(query);
if (verifyParam == null)
{
verifyParam = new PolicyVerifyRequestParams();
verifyParam.corpName = TargetName;
verifyParam.uniscid = "";
}
var rtns = new RestfulPolicyVerifyResponse();
var client = new JsonServiceClient(Configs.UrlVerify);
rtns = client.GetPolicyVerify(verifyParam);
rtns.Total = rtns.Results.Count;
return rtns;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment