上面的错误,如果可以确认签名之类的都没有问题了。
那么,请按下面步骤检查下。

再看一下,appid是不是根本就传的空值或者错了,可用微信调试工具看到你传的参数和返回结果。

二、请检查“支付授权目录”与 实际支付发生目录是否一致。比如:实际发生目录:http://www.baidu.com/pay/paynow/payorder?id=32323
则支付授权目录必须是:http://www.baidu.com/pay/paynow/
框架中,往往把url进行改写http://www.baidu.com/pay/paynow/payorder/id/32323
此时的授权目录则应该为 http://www.baidu.com/pay/paynow/payorder/id/
但要注意,如果这样的话,你的目录可能太深了。
微信说明的很清楚
3、头部要包含http或https,须细化到二级或三级目录,以左斜杠“/”结尾。

但经测试表明,即使是上面的四、五级目录。即表授权目录修改为:http://www.baidu.com/pay/paynow/payorder/id/
微信支付仍然是支持的。

三、请检测是否使用了框架内部的跳转机制。
在thinkphp开发中,由于使用了redirect()函数,在处理完订单数据后进行了直接跳转,导致了上述问题的发生。
如果你的运气也这么差,那么请自己重写跳转函数。
示例:
function redirect_url($url)
{
    echo "
}

上面为在微信支付生产环境开发中遇到的问题,如果上述方法没有帮到你,而恰恰你找到的其它问题,欢迎留言。