wx.error(function (res) {
if(res.errMsg.indexOf("invalid signature") > 0 )
{
alert("无效的签名,需要更新");
}
else{alert(res.errMsg);}
});
在支付页面弹出错误提示:无效的签名,需要更新,求大神告知错误原因
这个 你这部分代码就是 弹出的框的内容,你得看看监听的接口的问题,不应该找这里的问题。
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3
看看你的签名对不对
/// <summary>
/// 获取微信支付JS包
/// </summary>
/// <param name="repayId">预支付ID</param>
/// <returns></returns>
public wxHandleModel.wxPayconfig GetwxPay(string repayId)
{
wxHandleModel.wxPayconfig wxpayconfig = new wxHandleModel.wxPayconfig();
string package = string.Format("prepay_id={0}", repayId);
wxpayconfig.package = package;
wxpayconfig.timestamp = ConvertDateTimeInt(DateTime.Now);
string nostr = GenerateCheckCode(16);
wxpayconfig.nonceStr = nostr;
wxpayconfig.signType = "MD5";
string stringA = string.Format(@"appid={0}&nonceStr={1}&package={2}&signType={3}&timeStamp={4}&key={5}"
, appid, wxpayconfig.nonceStr, wxpayconfig.package, wxpayconfig.signType, wxpayconfig.timestamp, appkey);
wxpayconfig.paySign = MD5(stringA).ToUpper();
return wxpayconfig;
}
这个是获取支付签名的
/// <summary>
/// 获取签名
/// </summary>
/// <returns>sin签名</returns>
public string getSin(Hashtable ParametersTosin,string appkey)
{
StringBuilder sb = new StringBuilder();
ArrayList akeys = new ArrayList(ParametersTosin.Keys);
akeys.Sort();
foreach (string k in akeys)
{
string v = (string)ParametersTosin[k];
if (null != v && "".CompareTo(v) != 0 && "sign".CompareTo(k) != 0 && "key".CompareTo(k) != 0)
{
sb.Append(k + "=" + v + "&");
}
}
sb.Append("key=" + appkey);
string sign = MD5(sb.ToString()).ToUpper();
return sign;
}