/// <summary> /// 后台会员登录验证 /// </summary> /// <param name="sAccount"></param> /// <param name="sPassword"></param> /// <returns></returns> public Admin checkLogin(string sAccount, string sPassword) { using (var db = new Entities()) { sPassword = C_Security.MD5(sPassword); var admin = db.Admin.Where(m => m.Password == sPassword && m.UserName == sAccount).FirstOrDefault(); return(admin); } }
/// <summary> /// 获取随机字符串 /// </summary> /// <returns></returns> public static string nonce_str() { // 生成随机数算法 //微信支付API接口协议中包含字段nonce_str,主要保证签名不可预测。 //我们推荐生成随机数算法如下:调用随机数函数生成,将得到的值转换为字符串。 Random Ran = new Random(); string nonce_str = Ran.Next(11111111, 99999999).ToString() + "CNMB"; return(C_Security.MD5(nonce_str)); }
/*******************微信支付的请求和接收数据均需要校验签名,详细方法请参考安全规范-签名算法********************/ /* * 签名算法 * 签名生成的通用步骤如下: * 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序), * 使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 * 特别注意以下重要规则: * ◆ 参数名ASCII码从小到大排序(字典序); * ◆ 如果参数的值为空不参与签名; * ◆ 参数名区分大小写; * ◆ 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。 * ◆ 微信接口可能增加字段,验证签名时必须支持增加的扩展字段 * 第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。 * key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置 */ /// <summary> /// 创建签名 /// </summary> /// <param name="Parameters"></param> /// <returns></returns> public static string CreateSign(Dictionary <string, string> Parameters) { StringBuilder Sign = new StringBuilder(); var Keys = new ArrayList(Parameters.Keys); Keys.Sort();//字典排序 foreach (string key in Keys) { if (!string.IsNullOrEmpty(Parameters[key])) {//拼接成键值对字符串 Sign.Append(key + "=" + Parameters[key] + "&"); } } Sign.Append("key=" + TenPayConfig.key); string sign = C_Security.MD5(Sign.ToString()).ToUpper(); return(sign); }