微信支付v3.3.6 签名错误

根据微信支付v3.3.6的开发问题,在调用“统一支付”接口,获取预支付ID的时候,如果参数里面有中文总是提示“签名错误”,如果没有中文可以签名成功,有没有谁也遇到过这种情况?
ps:使用的是js+C#,官方文档只有php的demo,求帮助。

阅读 23k
6 个回答

检查下你的参数是否正确....生成prepay_id 是几个支付参数进行 Ksort 排序 然后MD5加密 之后发送验证的~可以参考一下微信支付

我以前也遇到这个情况,我的问题原因是:参数不要System.Web.HttpUtility.UrlEncode编码。

http://www.cnblogs.com/zhangs1986/p/4043987.html


/// <summary>
/// 请求签名。
/// </summary>
/// <param name="parameters">所有字符型的非secret请求参数</param>
/// <param name="secret">签名密钥</param>
/// <returns>签名</returns>
public static string SignRequest(IDictionary<string, string> parameters, string secret)
{
    string string1 = string.Join("&", parameters
        .Where(t => !string.IsNullOrEmpty(t.Key) && !string.IsNullOrEmpty(t.Value))
        .OrderBy(t => t.Key)
        .Select(t => t.Key + "=" + t.Value));

    string1 += "&key=" + secret;

    MD5 md5 = MD5.Create();
    byte[] bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(string1));

    StringBuilder result = new StringBuilder();
    for (int i = 0; i < bytes.Length; i++)
    {
        result.Append(bytes[i].ToString("X2"));
    }

    return result.ToString();
}

http://blog.csdn.net/qiwenmingshiwo/article/details/41902551

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进