国家医保移动支付、处方流转SM2签名 SM44加密C#

在去年的时候做了湖南的国家医保移动支付,现在已经有官方渠道验收通过的

直接上代码

// 签名加密部分
            string appId = "渠道ID";
            string appSecret = "数字密钥";
            string privateKey = "渠道秘钥";
            string publicKey = "平台公钥";
            JObject requestData = new JObject();
            requestData.Add("appId", appId);
            requestData.Add("encType", "SM4");
            requestData.Add("signType", "SM2");
            requestData.Add("timestamp", (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds);
            JObject data = new JObject();
            data = JObject.Parse("入参JSON字符串");
            String encData = SMUtil.encrypt(JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.None), appId, appSecret);
            JObject signDto = (JObject)JObject.Parse(JsonConvert.SerializeObject(requestData, Newtonsoft.Json.Formatting.None));
            signDto.Add("data", data);
            String signData = SMUtil.sign(signDto, appSecret, privateKey);
            requestData.Add("encData", encData);
            requestData.Add("signData", signData);
            //最终入参
            String inputRJSON = JsonConvert.SerializeObject(requestData, Newtonsoft.Json.Formatting.None);

        

            //解密验签部分
            string str_out = "";
            int code = Convert.ToInt32(GetJsonValues("原出参JSON", "code"));
            string message = GetJsonValues("原出参JSON", "message");
            if (code != 0)
            {
                //状态错误
            }
            else
            {
                String decEncData = SMUtil.decrypt(GetJsonValues("原出参JSON", "encData"), appId, appSecret);
                //出参解密
                str_out = jsonChangeValueToJson("原出参JSON", "encData", decEncData);
            }

(21条消息) 国家医保移动支付SM2签名SM4加密demo源码资源-CSDN文库

你可能感兴趣的:(c#,java)