/// <summary> /// 对响应验签 /// 调用方向:掌上生活 --> 商户 /// </summary> /// <param name="response">响应报文</param> /// <param name="verifyKey">验签所使用的Key,为掌上生活公钥</param> /// <param name="verifyAlgorithm">验签算法(SHA1WithRSA 或 SHA256WithRSA)</param> /// <returns>true为验签成功,false为验签失败</returns> public static bool VerifyForResponse(String response, String verifyKey, String verifyAlgorithm) { Dictionary <string, object> verifySignParams = JsonUtils.JsonStrToDic(response); string sign = verifySignParams["sign"].ToString(); if (string.IsNullOrEmpty(sign)) { throw new ArgumentException("返回报文参数中sign字段为空!"); } verifySignParams.Remove("sign"); Console.WriteLine(URLUtils.AssembleUrl("", verifySignParams, false)); return(Verify(URLUtils.AssembleUrl("", verifySignParams, false), sign, verifyKey, verifyAlgorithm)); }
/// <summary> /// 生成请求报文体 /// </summary> /// <param name="dicParams">参数</param> /// <returns>请求报文体,如: key1=value1&key2=value2...</returns> public static string GenRequestBody(Dictionary <string, object> dicParams) { return(URLUtils.AssembleUrl(null, dicParams, true)); }
/// <summary> /// 对请求签名 /// 调用方向:商户 --> 掌上生活 /// </summary> /// <param name="prefix">前缀,如interface.json</param> /// <param name="paramsDic">待签名数据</param> /// <param name="xmlPrivateKey">签名使用的key,为商户私钥</param> /// <param name="signAlgorithm">签名算法(SHA1WithRSA 或 SHA256WithRSA)</param> /// <returns>签名</returns> public static string SignForRequest(string prefix, Dictionary <string, object> paramsDic, string xmlPrivateKey, string signAlgorithm) { string url = URLUtils.AssembleUrl(prefix, paramsDic, false); return(Sign(url, xmlPrivateKey, signAlgorithm)); }