Commit 1bc98960 by 陶然

优化

parent 7d84f33a
......@@ -27,13 +27,13 @@ namespace Com.Bocom.OpenApi
client.IgnoreSslHostnameVerifier();
var bizKvid = settlement.Kvid.ToString();
var bizId = settlement.BizId;
var request = new AddContractOrderRequestV2();
request.SetServiceUrl(Configs.APIGW_URL_ADDRESS + Configs.AddContractOrderRequestV2);
var bizContent = new AddContractOrderRequestV2.AddContractOrderRequestV2Biz();
bizContent.org_id = Configs.ORG_ID;
bizContent.bat_id = bizKvid;
bizContent.bat_id = bizId;
bizContent.cont_order_list = new List<ContOrder>();
var contorder = new ContOrder();
contorder.cont_id = bizKvid;
......
......@@ -35,17 +35,14 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>Sdk\Dll\BouncyCastle.Crypto.dll</HintPath>
</Reference>
<Reference Include="Kivii.Common.V4.5, Version=5.6.2023.4000, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\k5-njzj\packages\Kivii.Common.5.6.2023.4000\lib\net45\Kivii.Common.V4.5.dll</HintPath>
<Private>False</Private>
<Reference Include="Kivii.Common.V4.5, Version=5.6.2023.6000, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\local-njzj\packages\Kivii.Common.5.6.2023.6000\lib\net45\Kivii.Common.V4.5.dll</HintPath>
</Reference>
<Reference Include="Kivii.Core.V4.5, Version=5.6.2023.4140, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\k5-njzj\packages\Kivii.Core.5.6.2023.4140\lib\net45\Kivii.Core.V4.5.dll</HintPath>
<Private>False</Private>
<Reference Include="Kivii.Core.V4.5, Version=5.6.2023.6000, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\local-njzj\packages\Kivii.Core.5.6.2023.6000\lib\net45\Kivii.Core.V4.5.dll</HintPath>
</Reference>
<Reference Include="Kivii.Linq.V4.5, Version=5.6.2023.4200, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\k5-njzj\packages\Kivii.Linq.5.6.2023.4200\lib\net45\Kivii.Linq.V4.5.dll</HintPath>
<Private>False</Private>
<HintPath>..\local-njzj\packages\Kivii.Linq.5.6.2023.4200\lib\net45\Kivii.Linq.V4.5.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
......
......@@ -600,9 +600,30 @@ namespace Com.Bocom.OpenApi
}
}
public class WriteOffBizContentObj
{
public string biz_content { get; set; }
public string msg_id { get; set; }
public string timestamp { get; set; }
public string encrypt_key { get; set; }
}
[Alias("BCOM_WriteOffResultNotifys")]
public class WriteOffResultNotify:EntityWithMetadata
{
public string BillId { get; set; }
[DefaultEmptyGuid]
public Guid BizKvid { get; set; }
[ApiMember(Description = "业务流水号")]
[StringLength(200)]
public string BizId { get; set; }
[ApiMember(Description = "业务类型")]
[StringLength(100)]
public string BizType { get; set; }
public WriteOffBizContent biz_content { get; set; }
[StringLength(2000)]
public string encrypt_key { get; set; }
......@@ -618,50 +639,141 @@ namespace Com.Bocom.OpenApi
public class WriteOffBizContent
{
public string transcode { get; set; }
/// <summary>
///
/// appid@http://notify.com
/// </summary>
public string communication_url { get; set; }
/// <summary>
/// 机构编号
/// </summary>
public string org_id { get; set; }
/// <summary>
/// 账单编号
/// </summary>
public string bill_id { get; set; }
/// <summary>
/// 应付款人
/// </summary>
public string term_trans_time { get; set; }
public string ori_payer { get; set; }
/// <summary>
///
/// 实际应付金额
/// </summary>
public string requester_type { get; set; }
public string ori_act_amt { get; set; }
/// <summary>
///
/// 此次账单核销总金额
/// </summary>
public string trace_no { get; set; }
public string bill_write_off_amt { get; set; }
/// <summary>
///
/// 合同号
/// </summary>
public string version { get; set; }
public string cont_id { get; set; }
/// <summary>
///
/// 费项名称
/// </summary>
public string mer_ptc_id { get; set; }
public string ori_itm_nme { get; set; }
/// <summary>
///
/// 账期
/// </summary>
public string mobile_no { get; set; }
public string payment_period { get; set; }
/// <summary>
///
/// 账单已核销金额
/// </summary>
public string cert_type { get; set; }
public string write_off_amt { get; set; }
/// <summary>
///
/// 账单核销状态 01-未核销; 02-部分核销; 03-全额核销; 04-失效
/// </summary>
public string cert_no { get; set; }
public string bill_wo_state { get; set; }
/// <summary>
///
/// 核销编号
/// </summary>
public string cus_name { get; set; }
public string write_off_no { get; set; }
/// <summary>
///
/// 核销日期
/// </summary>
public string reserved { get; set; }
public string write_off_dte { get; set; }
/// <summary>
///
/// 核销状态 01-已核销;02-核销待确认
/// </summary>
public string communication_url { get; set; }
public string write_off_state { get; set; }
/// <summary>
/// 备注
/// </summary>
public string remark { get; set; }
/// <summary>
/// 流水列表
/// </summary>
public List<PayDetail> pay_detail_list { get; set; }
}
public class PayDetail
{
/// <summary>
/// 会计传票号
/// </summary>
public string vch_no { get; set; }
/// <summary>
/// 对方户名
/// </summary>
public string opp_ac_nme { get; set; }
/// <summary>
/// 交易金额
/// </summary>
public string txn_amt { get; set; }
/// <summary>
/// 交易时间
/// </summary>
public string tr_time { get; set; }
/// <summary>
/// 交易渠道
/// </summary>
public string chnl { get; set; }
/// <summary>
/// 流水核销金额
/// </summary>
public string jnl_write_off_amt { get; set; }
/// <summary>
/// 流水已核销金额
/// </summary>
public string write_off_amt { get; set; }
/// <summary>
/// 流水核销状态 01-未核销; 02-部分核销; 03-全额核销; 04-失效
/// </summary>
public string jnl_wo_state { get; set; }
/// <summary>
/// 备注
/// </summary>
public string remark { get; set; }
}
}
......@@ -4,6 +4,8 @@ using System.IO;
using System.Runtime.Serialization.Json;
using Com.Bocom.OpenApi.Security.Sign;
using System.Collections.Generic;
using System.Linq;
using Org.BouncyCastle.Asn1.Crmf;
namespace Com.Bocom.OpenApi
{
......@@ -46,7 +48,7 @@ namespace Com.Bocom.OpenApi
using (MemoryStream ms = new MemoryStream(Encoding.GetEncoding(charset).GetBytes(bizContentStr)))
{
DataContractJsonSerializer deseralizer = new DataContractJsonSerializer(T);
response = (BocomResponse) deseralizer.ReadObject(ms) as BocomResponse;
response = (BocomResponse)deseralizer.ReadObject(ms) as BocomResponse;
}
return response;
......@@ -59,13 +61,13 @@ namespace Com.Bocom.OpenApi
}
}
public static Object ParseCommunicationJsonWithBocomSign(string respStr, string charset, string MY_PRIVATE_KEY, string APIGW_PUBLIC_KEY)
public static WriteOffResultNotify ParseCommunicationJsonWithBocomSign(string respStr, string charset, string MY_PRIVATE_KEY, string APIGW_PUBLIC_KEY)
{
string bizContentStr;
string sign;
try
{
//int indexOfRootStart = respStr.IndexOf(BocomConstants.BIZ_CONTENT) + BocomConstants.BIZ_CONTENT.Length + 2;
int indexOfRootStart = respStr.IndexOf(BocomConstants.BIZ_CONTENT) + BocomConstants.BIZ_CONTENT.Length + 2;
int indexOfRootEnd = respStr.LastIndexOf(",");
int indexOfSignStart = respStr.LastIndexOf(BocomConstants.SIGN + "\"") + BocomConstants.SIGN.Length + 3;
int indexOfSignEnd = respStr.LastIndexOf("\"");
......@@ -90,16 +92,87 @@ namespace Com.Bocom.OpenApi
var reqBizContentEncrypt = jsonDic["biz_content"];
var encryptKey = BocomEncrypt.AsymmetricalDecrypt(encryptKeyEncrypt, BocomConstants.ENCRYPT_TYPE_RSA_AND_AES, MY_PRIVATE_KEY, charset);
var reqBizContent = BocomEncrypt.SymmetricalDecrypt(reqBizContentEncrypt, BocomConstants.ENCRYPT_TYPE_RSA_AND_AES, encryptKey, charset);
jsonDic["encrypt_key"] = encryptKey;
jsonDic["biz_content"] = reqBizContent;
//var rtns=Kivii.Text.JsonSerializer.SerializeToString(jsonDic);
return jsonDic;
var rtns = new WriteOffResultNotify();
rtns.encrypt_key = encryptKey;
rtns.msg_id = jsonDic["msg_id"];
rtns.timestamp = jsonDic["timestamp"];
rtns.sign = sign;
rtns.biz_content = Kivii.Text.JsonSerializer.DeserializeFromString<WriteOffBizContent>(reqBizContent);
rtns["encrypt_key"] = encryptKey;
rtns["biz_content"] = reqBizContent;
rtns["msg_id"] = jsonDic["msg_id"];
rtns["timestamp"] = jsonDic["timestamp"];
rtns["sign"] = sign;
return rtns;
}
catch (Exception e)
{
throw new Exception("Bocom decrypt not success.", e);
}
}
public static WriteOffResultNotify ParseCommunicationJsonWithBocomSign(Dictionary<string, string> respStr, string charset, string MY_PRIVATE_KEY, string APIGW_PUBLIC_KEY)
{
string biz_content = respStr["biz_content"];
string msg_id = respStr["msg_id"];
string timestamp = respStr["timestamp"];
string encrypt_key = respStr["encrypt_key"];
string sign = respStr["sign"];
var notify = new WriteOffBizContentObj();
notify.biz_content = biz_content;
notify.msg_id = msg_id;
notify.timestamp = timestamp;
notify.encrypt_key = encrypt_key;
var biz_contentStr = Kivii.Text.JsonSerializer.SerializeToString(notify);
biz_contentStr = biz_contentStr.Replace("{", "");
biz_contentStr = biz_contentStr.Replace("}", "");
Boolean passed = BocomSignature.Verify(BocomConstants.ENCRYPT_TYPE_RSA_AND_AES, biz_contentStr, APIGW_PUBLIC_KEY, charset, sign);
if (!passed)
{
throw new Exception("Bocom sign verify not passed.");
}
try
{
//var jsonDic = Kivii.Text.JsonSerializer.DeserializeFromString<Dictionary<string, string>>(respStr);
var encryptKeyEncrypt = encrypt_key;
var reqBizContentEncrypt = biz_content;
var encryptKey = BocomEncrypt.AsymmetricalDecrypt(encryptKeyEncrypt, BocomConstants.ENCRYPT_TYPE_RSA_AND_AES, MY_PRIVATE_KEY, charset);
var reqBizContent = BocomEncrypt.SymmetricalDecrypt(reqBizContentEncrypt, BocomConstants.ENCRYPT_TYPE_RSA_AND_AES, encryptKey, charset);
var rtns = new WriteOffResultNotify();
rtns.encrypt_key = encryptKey;
rtns.msg_id = msg_id;
rtns.timestamp = timestamp;
rtns.sign = sign;
rtns.biz_content = Kivii.Text.JsonSerializer.DeserializeFromString<WriteOffBizContent>(reqBizContent);
rtns["encrypt_key"] = encryptKey;
rtns["biz_content"] = reqBizContent;
rtns["msg_id"] = msg_id;
rtns["timestamp"] = timestamp;
rtns["sign"] = sign;
return rtns;
}
catch (Exception e)
{
throw new Exception("Bocom decrypt not success.", e);
}
}
public static object SignRspBizContent(string rspBizContent, string encrypt_key, string mY_PRIVATE_KEY)
{
var rspContent = BocomEncrypt.SymmetricalEncrypt(rspBizContent, BocomConstants.ENCRYPT_TYPE_RSA_AND_AES, encrypt_key, "UTF-8");
string signContent;
try
{
signContent = BocomSignature.Sign(BocomConstants.ENCRYPT_TYPE_RSA_AND_AES, rspContent, mY_PRIVATE_KEY, "UTF-8");
}
catch (Exception ex)
{
throw new BocomApiException($"Bocom sign not success.{ex.Message}");
}
string newBody = "{\"rsp_biz_content\":\"" + rspContent + "\",\"sign\":\"" + signContent + "\"}";
return newBody;
}
}
}
}
\ No newline at end of file
......@@ -95,6 +95,7 @@ namespace Njzj.Bocoms.Openapis.Transforms
public class AddContractOrderResponseV2Test : RestfulExecution<AddContractOrderResponseV2>
{
public string BizId { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
DefaultBocomClient client = new DefaultBocomClient(Configs.APP_ID, Configs.MY_PRIVATE_KEY, Configs.APIGW_PUBLIC_KEY, BocomConstants.ENCRYPT_TYPE_RSA_AND_AES);
......@@ -109,7 +110,7 @@ namespace Njzj.Bocoms.Openapis.Transforms
var bizId = Guid.NewGuid().ToString();
var bizContent = new AddContractOrderRequestV2.AddContractOrderRequestV2Biz();
bizContent.org_id = Configs.ORG_ID;
bizContent.bat_id = bizId;
bizContent.bat_id = BizId;
bizContent.cont_order_list = new List<ContOrder>();
var contorder = new ContOrder();
contorder.cont_id = bizId;
......@@ -415,78 +416,94 @@ namespace Njzj.Bocoms.Openapis.Transforms
public string sign { get; set; }
public override object OnExecution(IRequest req, IResponse res)
{
//var ori = "{\"biz_content\":\"j9nVLg7i45oHvnMC4l4JUoK0gERudB+iwD5r77jBlHiDQuIsch3jnl2K8Xhx19ugcpPrMwLcVTxsZLGjM1ueGeE+WpxDtXIvcAEpwPyNrSgOLChdq5iWcpXBNCahPPOu3zp9cjZse29g20cMmpexSMZgodT5D+66DU9LTi0CsbpsZg0HhEM2tLnDUhs+GnS8SoLbqUXFgyhZ8hdEirmJR6g+3OhN9GuZj2+Yy8U4cicBT8T1swWtSvvMnfBaCit8PgJsELy+NhvXOibSt8sB3rubIdB+8/MCzbxnwWLMn7xspx0trQmfviwiUKktdlkNwjqRYGNha8Z2544xdvhTHGEQGe/nr2bFgnVJdh8CmtpuuzaJBB8PCbjRlAhwCVJFNsCq4R+/SFGPU5TuaEDJy6Oqa7ALvywWekTEnDL+LmMZtxj07om3CRFER0FWBLjd\",\"msg_id\":\"c37170fb8e5b4d7b9374fae6b16334f9\",\"timestamp\":\"2020-10-26 15:11:54\",\"encrypt_key\":\"UgjDtW1VUP9pz4hMu9r7/dJ8ciQ3mEMRvdMpMlVLOWC9eF+otpUh2aN9nRQMn0KxXDnM7+ZTXmTDOwgsBsARqWt6R1i3xkFq5Hz8XvZAPpqMniR9AgNLzgWEscsAChjgAuhkmN6XVO3AKeqxGLo82NoDh5gGJ0yzVg2uS3hQRSLhiWkmY5f1nT5M4Hp3h1hPXL9e1bUBY/Zhs1IzWL2r7p5BAaQjUsCgt+CggKl8oa6zXfKiaTG9Z+l7tDa1lLqn5Hbkl83TMLEdebmzjv38X+lJCHO3lwvxKdaHr091nQUxXLH7p5hyoRBEieoyd5jpcwabB/ChTsKvHWiixjf1hw==\",\"sign\":\"EWqfUedqP2LdPFH7ekT6klCu5VqVEyWMIrOUyRLXhRIqC856qSVrq1LPNKIjpip53cT1J7V5GBCTv77HwXA7jcoYWIUK0GDIAYIDk5LcLOtXcVQKJ9aIqoUOS8NHIYSlx3wt41GoSsVZgWg8o4c5+qh2BxO1QkG/LrvsXSv5hBDssAztfWvwu2bcitSRPBFAuAyBs5ETLjcfSYFP7fPN9g1FG93McuvzPqJVHWEnKW4EfaLXDeI0FUNAgmH9xCcjYw7pbbxZTl3QdNrhSTOrBHnI0XZFNp9woF9YpyaSfKVCmtaL27M2RnLxyOnjffS9qSJP64xzpI9DRrsw0/EQAA==\"}";
//var MY_PRIVATE_KEY = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCER3xnjjYb4na9yf49wJIE/ykXuk9q4QKYJk/+LQuVUmf3HYUmVvngB2jwrMWr0x+Asg3XFyoctmZBDci3mgElQW6u1jNBUEUqbU+9oHT496D1g7KRVZZOWqaSZmFkPYf6Kr+uZgUtQEHeKiTuG3wIR2COSzuEsBvW8Q0RobHiCXXVmKpfpkB2cktwHzfu4sgTNrnvru5EDRFUMk72sMa5M9gasmY8XIVF711LWFreqVTKZPTuMTTIbZuVUd+vADWB7Y48IIEEsdIbbH8qwnTrEIvvWEJkhRYMpPvioLzqlepXZ8xNPD3Hu/SxHRRS+rQHiQvIpkqUK0JxOG+JpD8NAgMBAAECggEAczzrzjOARA6or3K3wQhwrVW1cOxon43i+rX13lNT0gR2ejwHcX04Nsl9zJ5XnvdQbIexsv6FO3pT3rypbfoGoXQ9fqcxA+dwOiP84hBVl0fzu6+98wsC5MPodYYntnI8cd6oGsDaJa/jMi64+Y6MIZI9NfmoolHiDwD1B7U8CNRAZR4XSTd22kmaF222cipgjpxrJozsJWSlwXsaw6ZEYsSraP76ZU1GiKZPKayLxQtTmHmqL/1SgVb2gBnW2FpTTdeanxjhnvE1Ikg28bfZPpA8c0jItjNpFvmyaf/3C2pKJBYKkAuyQSjMexS6anBX4G4LRfcDzrJzY12eHWrb6QKBgQC5iOg9JqxOmDCBN4I7hd3ax9bFPKQe7NO1Hs2cgyOCp3Ph/yK8/OIlGSBDHVlXPOpq80OwmOGU5AXJTBRpgDLC7gF9gphd9l+sIkHtQ5+mWld+jr7qFlW95y+H51PDk0nSg2GIkyID3t3G0NBooDM/XaXyndljBOQwMVpVBdqAWwKBgQC2hKwRCb2C6ZAssw8Cq5LWR2psFONbqAmA6aO9GgFKF0mBsyq0sstz/nE/XBURc+zOnYr72WFMMaoVkNPTxwqXNcHu4vbyepfBSWBDSJxndlMKXcld5+GZCyl9nUFLHGjYbNUsMgahaR5l9eNiMbHzKHdRNw7Trf2gLnvWlH/atwKBgHaP3pj1VbcD2js41ahj61obyktQbTC19rQPcyVJSC/+AjexaumKUJmUbOF2p9jvvH2L5v27NKyI6omwbHreyZF3tswV4HhrMMg3PBn61NLheHgPkEDW9QPd8KnQUd7xCIPWIUW9gEco7GBYoFW7ygP8PEfGR1zXi1qgrzEWBINxAoGBAIe3h6rzrzOVMVvLmbHGmt0zJXNQ5O7WuJpfIR4QJD1Pq50B+RN8j8Skwtj2Q8RCiyfoBdzX+32IwIxgsOKc8scVdiuIIVCU0Bst0KK3b3WPipf+vSlSr3H51tRNBqwvZ9bmtmyyljOX0r7GZFoz0bqZsH93jVLh4eImLneU3K1pAoGAMUCNCHIpMSd+d5ewR9VxXY1DjGHvIC98EdsjL0S7QcVrWb9mh6Br5G6zvlIJcMhIaQm3C1ETLaHG+K9XRrA+HcJo1ApeMT7MgBmIC+cG1aepZREDruNI3G8r4bDS6pHSDKk+Iu8shpEUurxZCzjBX2n5OeMJx+xDgYUq5H4Bn5I=";
//var APIGW_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxSJrF8T/5rKB4NnwMjIxUer+ELf1PQXO2GSdZ/fvuQCclOR9tBlNWL4jFOftebeL+bvMVOJ+JHm/aSes1AN8YNIDGiFUpF6aDkSCaLynDdjK/mQTWhSNa2fO0GGO+ywOBTdYUjVjVtzJ48bbyG3NSylf1EdnBWnMpFa8qpXJXR4ELpVpMkPDC+93HBAlxEgUjhcIJlP5VdKIiudsmhE2T07qtpIQSuE5hntXP6X6GKJReCk+yek2QJITvIBq3cHPw8KDsHHCs7MaR81KI3onJRWyqFtTfVYTiKsd9EcYSxv+Gx5MOF8B/P4iJCD8uzx0FrqoB3k5OYGcz4tXs+h+9wIDAQAB";
//Console.WriteLine("---------------------------------------------------------------------------------------------------------------------------------------------");
//Console.WriteLine("---------------------------------------------------------------------------------------------------------------------------------------------");
var rtns = new RestfulExecutionResponse<WriteOffResultNotify>();
rtns.Results = new List<WriteOffResultNotify>();
if (biz_content.IsNullOrEmpty()) return rtns;
if (msg_id.IsNullOrEmpty()) return rtns;
if (timestamp.IsNullOrEmpty()) return rtns;
if (encrypt_key.IsNullOrEmpty()) return rtns;
if (sign.IsNullOrEmpty()) return rtns;
var dic=new Dictionary<string, string>();
var dic = new Dictionary<string, string>();
dic.Add("biz_content", biz_content);
dic.Add("msg_id", msg_id);
dic.Add("timestamp", timestamp);
dic.Add("encrypt_key", encrypt_key);
dic.Add("sign", sign);
var json = Kivii.Text.JsonSerializer.SerializeToString(dic);
Console.WriteLine("-----------------------------------------------------------------------------------------------------");
Console.WriteLine("-----------------------------------------------------------------------------------------------------");
Console.WriteLine("------------------------------------WriteOffResultNotifyCallBack-----------------------------------------");
Console.WriteLine("------------------------------------Start-----------------------------------------");
try
{
var result = ApiUtils.ParseCommunicationJsonWithBocomSign(dic, "utf-8", Configs.MY_PRIVATE_KEY, Configs.APIGW_PUBLIC_KEY);
var conn = KiviiContext.GetOpenedDbConnection<WriteOffResultNotify>();
conn.InitEntityType<EntityLog<WriteOffResultNotify>>();
var log = new EntityLog<WriteOffResultNotify>();
//log.OwnerKvid = item.PolicyKvid;
//log.BizId = item.TargetName;
//log.BizKvid = item.Kvid;
//log.BizType = typeof(PolicyDetail).FullName;
log.Type = "WriteOffResultNotify";
log.Title = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
log.Metadata = new Dictionary<string, string>();
log.Metadata.Add("biz_content", biz_content);
log.Metadata.Add("msg_id", msg_id);
log.Metadata.Add("timestamp", timestamp);
log.Metadata.Add("encrypt_key", encrypt_key);
log.Metadata.Add("sign", sign);
conn.Insert(log);
//var ori = "{\"biz_content\":\"j9nVLg7i45oHvnMC4l4JUoK0gERudB+iwD5r77jBlHiDQuIsch3jnl2K8Xhx19ugcpPrMwLcVTxsZLGjM1ueGeE+WpxDtXIvcAEpwPyNrSgOLChdq5iWcpXBNCahPPOu3zp9cjZse29g20cMmpexSMZgodT5D+66DU9LTi0CsbpsZg0HhEM2tLnDUhs+GnS8SoLbqUXFgyhZ8hdEirmJR6g+3OhN9GuZj2+Yy8U4cicBT8T1swWtSvvMnfBaCit8PgJsELy+NhvXOibSt8sB3rubIdB+8/MCzbxnwWLMn7xspx0trQmfviwiUKktdlkNwjqRYGNha8Z2544xdvhTHGEQGe/nr2bFgnVJdh8CmtpuuzaJBB8PCbjRlAhwCVJFNsCq4R+/SFGPU5TuaEDJy6Oqa7ALvywWekTEnDL+LmMZtxj07om3CRFER0FWBLjd\",\"msg_id\":\"c37170fb8e5b4d7b9374fae6b16334f9\",\"timestamp\":\"2020-10-26 15:11:54\",\"encrypt_key\":\"UgjDtW1VUP9pz4hMu9r7/dJ8ciQ3mEMRvdMpMlVLOWC9eF+otpUh2aN9nRQMn0KxXDnM7+ZTXmTDOwgsBsARqWt6R1i3xkFq5Hz8XvZAPpqMniR9AgNLzgWEscsAChjgAuhkmN6XVO3AKeqxGLo82NoDh5gGJ0yzVg2uS3hQRSLhiWkmY5f1nT5M4Hp3h1hPXL9e1bUBY/Zhs1IzWL2r7p5BAaQjUsCgt+CggKl8oa6zXfKiaTG9Z+l7tDa1lLqn5Hbkl83TMLEdebmzjv38X+lJCHO3lwvxKdaHr091nQUxXLH7p5hyoRBEieoyd5jpcwabB/ChTsKvHWiixjf1hw==\",\"sign\":\"EWqfUedqP2LdPFH7ekT6klCu5VqVEyWMIrOUyRLXhRIqC856qSVrq1LPNKIjpip53cT1J7V5GBCTv77HwXA7jcoYWIUK0GDIAYIDk5LcLOtXcVQKJ9aIqoUOS8NHIYSlx3wt41GoSsVZgWg8o4c5+qh2BxO1QkG/LrvsXSv5hBDssAztfWvwu2bcitSRPBFAuAyBs5ETLjcfSYFP7fPN9g1FG93McuvzPqJVHWEnKW4EfaLXDeI0FUNAgmH9xCcjYw7pbbxZTl3QdNrhSTOrBHnI0XZFNp9woF9YpyaSfKVCmtaL27M2RnLxyOnjffS9qSJP64xzpI9DRrsw0/EQAA==\"}";
var MY_PRIVATE_KEY = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCER3xnjjYb4na9yf49wJIE/ykXuk9q4QKYJk/+LQuVUmf3HYUmVvngB2jwrMWr0x+Asg3XFyoctmZBDci3mgElQW6u1jNBUEUqbU+9oHT496D1g7KRVZZOWqaSZmFkPYf6Kr+uZgUtQEHeKiTuG3wIR2COSzuEsBvW8Q0RobHiCXXVmKpfpkB2cktwHzfu4sgTNrnvru5EDRFUMk72sMa5M9gasmY8XIVF711LWFreqVTKZPTuMTTIbZuVUd+vADWB7Y48IIEEsdIbbH8qwnTrEIvvWEJkhRYMpPvioLzqlepXZ8xNPD3Hu/SxHRRS+rQHiQvIpkqUK0JxOG+JpD8NAgMBAAECggEAczzrzjOARA6or3K3wQhwrVW1cOxon43i+rX13lNT0gR2ejwHcX04Nsl9zJ5XnvdQbIexsv6FO3pT3rypbfoGoXQ9fqcxA+dwOiP84hBVl0fzu6+98wsC5MPodYYntnI8cd6oGsDaJa/jMi64+Y6MIZI9NfmoolHiDwD1B7U8CNRAZR4XSTd22kmaF222cipgjpxrJozsJWSlwXsaw6ZEYsSraP76ZU1GiKZPKayLxQtTmHmqL/1SgVb2gBnW2FpTTdeanxjhnvE1Ikg28bfZPpA8c0jItjNpFvmyaf/3C2pKJBYKkAuyQSjMexS6anBX4G4LRfcDzrJzY12eHWrb6QKBgQC5iOg9JqxOmDCBN4I7hd3ax9bFPKQe7NO1Hs2cgyOCp3Ph/yK8/OIlGSBDHVlXPOpq80OwmOGU5AXJTBRpgDLC7gF9gphd9l+sIkHtQ5+mWld+jr7qFlW95y+H51PDk0nSg2GIkyID3t3G0NBooDM/XaXyndljBOQwMVpVBdqAWwKBgQC2hKwRCb2C6ZAssw8Cq5LWR2psFONbqAmA6aO9GgFKF0mBsyq0sstz/nE/XBURc+zOnYr72WFMMaoVkNPTxwqXNcHu4vbyepfBSWBDSJxndlMKXcld5+GZCyl9nUFLHGjYbNUsMgahaR5l9eNiMbHzKHdRNw7Trf2gLnvWlH/atwKBgHaP3pj1VbcD2js41ahj61obyktQbTC19rQPcyVJSC/+AjexaumKUJmUbOF2p9jvvH2L5v27NKyI6omwbHreyZF3tswV4HhrMMg3PBn61NLheHgPkEDW9QPd8KnQUd7xCIPWIUW9gEco7GBYoFW7ygP8PEfGR1zXi1qgrzEWBINxAoGBAIe3h6rzrzOVMVvLmbHGmt0zJXNQ5O7WuJpfIR4QJD1Pq50B+RN8j8Skwtj2Q8RCiyfoBdzX+32IwIxgsOKc8scVdiuIIVCU0Bst0KK3b3WPipf+vSlSr3H51tRNBqwvZ9bmtmyyljOX0r7GZFoz0bqZsH93jVLh4eImLneU3K1pAoGAMUCNCHIpMSd+d5ewR9VxXY1DjGHvIC98EdsjL0S7QcVrWb9mh6Br5G6zvlIJcMhIaQm3C1ETLaHG+K9XRrA+HcJo1ApeMT7MgBmIC+cG1aepZREDruNI3G8r4bDS6pHSDKk+Iu8shpEUurxZCzjBX2n5OeMJx+xDgYUq5H4Bn5I=";
var APIGW_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxSJrF8T/5rKB4NnwMjIxUer+ELf1PQXO2GSdZ/fvuQCclOR9tBlNWL4jFOftebeL+bvMVOJ+JHm/aSes1AN8YNIDGiFUpF6aDkSCaLynDdjK/mQTWhSNa2fO0GGO+ywOBTdYUjVjVtzJ48bbyG3NSylf1EdnBWnMpFa8qpXJXR4ELpVpMkPDC+93HBAlxEgUjhcIJlP5VdKIiudsmhE2T07qtpIQSuE5hntXP6X6GKJReCk+yek2QJITvIBq3cHPw8KDsHHCs7MaR81KI3onJRWyqFtTfVYTiKsd9EcYSxv+Gx5MOF8B/P4iJCD8uzx0FrqoB3k5OYGcz4tXs+h+9wIDAQAB";
var reqMap = ApiUtils.ParseCommunicationJsonWithBocomSign(json, "utf-8", MY_PRIVATE_KEY, APIGW_PUBLIC_KEY);
var results = reqMap as Dictionary<string, string>;
var rtn = new WriteOffResultNotify();
rtn.Metadata = new Dictionary<string, string>();
var cultureeInfo = Thread.CurrentThread.CurrentCulture;
var textInfo = cultureeInfo.TextInfo;
foreach (var item in results)
{
if (item.Key == "biz_content")
{
var value = Kivii.Text.JsonSerializer.DeserializeFromString<WriteOffBizContent>(item.Value);
rtn.GetType().GetProperty(item.Key).SetValue(rtn, value);
}
else
{
try
{
var key = textInfo.ToTitleCase(item.Key);
var property = rtn.GetType().GetProperty(item.Key);
if (property != null) property.SetValue(rtn, item.Value);
else rtn.Metadata[item.Key] = item.Value;
}
catch (Exception ex)
{
continue;
}
}
}
rtns.Results.Add(rtn);
return rtns;
//var log = conn.Single<EntityLog<WriteOffResultNotify>>(o => true);
//if (log == null) return rtns;
result.BillId = result.biz_content.bill_id;
result.BizKvid= Guid.Parse(result.biz_content.cont_id);
conn.Insert(result);
var resp = "{\"rsp_code\":\"0\",\"biz_state\":\"S\",\"rsp_msg\":\"核销处理成功\"}";
//var rspBizContent = "{\"rsp_head\":{\"response_msg\":\"非白名单客户\",\"response_code\":\"CIPP0004MT0017\"},\"rsp_body\":{\"context_no\":\"P21201026566300000019\",\"account_exist_flag\":\"EF00\"}";
var rsp = ApiUtils.SignRspBizContent(resp, result.encrypt_key, Configs.MY_PRIVATE_KEY);
rtns.Results.Add(result);
return rsp;
}
catch (Exception ex)
{
throw ex;
}
finally
{
Console.WriteLine("------------------------------------WriteOffResultNotifyCallBack-----------------------------------------");
Console.WriteLine("------------------------------------End-----------------------------------------");
Console.WriteLine("-----------------------------------------------------------------------------------------------------");
Console.WriteLine("-----------------------------------------------------------------------------------------------------");
}
}
}
public class WriteOffResultNotifyCallBack2 : RestfulExecution<WriteOffResultNotify>
{
public override object OnExecution(IRequest req, IResponse res)
{
//Console.WriteLine("---------------------------------------------------------------------------------------------------------------------------------------------");
//Console.WriteLine("---------------------------------------------------------------------------------------------------------------------------------------------");
var rtns = new RestfulExecutionResponse<WriteOffResultNotify>();
rtns.Results = new List<WriteOffResultNotify>();
var conn = KiviiContext.GetOpenedDbConnection<WriteOffResultNotify>();
conn.InitEntityType<EntityLog<WriteOffResultNotify>>();
var log = conn.Single<EntityLog<WriteOffResultNotify>>(o => true);
if (log == null) return rtns;
Console.WriteLine("------------------------------------WriteOffResultNotifyCallBack-----------------------------------------");
Console.WriteLine("------------------------------------Start-----------------------------------------");
try
{
var result = ApiUtils.ParseCommunicationJsonWithBocomSign(log.Metadata, "utf-8", Configs.MY_PRIVATE_KEY, Configs.APIGW_PUBLIC_KEY);
;
result.BillId = result.biz_content.bill_id;
result.BizKvid = Guid.Parse(result.biz_content.cont_id);
conn.Insert(result);
//var rspBizContent = "{\"rsp_head\":{\"response_msg\":\"非白名单客户\",\"response_code\":\"CIPP0004MT0017\"},\"rsp_body\":{\"context_no\":\"P21201026566300000019\",\"account_exist_flag\":\"EF00\"}";
var resp = "{\"rsp_code\":\"0\",\"biz_state\":\"S\",\"rsp_msg\":\"核销处理成功\"}";
var rsp = ApiUtils.SignRspBizContent(resp, result.encrypt_key, Configs.MY_PRIVATE_KEY);
rtns.Results.Add(result);
return rsp;
}
catch (Exception ex)
{
......
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Kivii.Common" version="5.6.2023.4000" targetFramework="net45" />
<package id="Kivii.Core" version="5.6.2023.4140" targetFramework="net45" />
<package id="Kivii.Common" version="5.6.2023.6000" targetFramework="net45" />
<package id="Kivii.Core" version="5.6.2023.6000" targetFramework="net45" />
<package id="Kivii.Linq" version="5.6.2023.4200" targetFramework="net45" />
</packages>
\ No newline at end of file
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