在去年的时候做了湖南的国家医保移动支付,现在已经有官方渠道验收通过的
直接上代码
// 签名加密部分
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);
}