深度理解微信签名
我们在访问微信接口的时候是需要进行签名验证的,为什么会这样呢?因为微信方不想要让所有的人都去访问它的接口,这样如果别人胡乱访问怎么办?微信方就需要一直处理这些不合理的请求,这会增加微信方服务器的负担。
因此微信方在接收用户发过来的网络请求之后,会按照它传递过来的相关参数生成一个签名,同时用户也会把它的签名存到请求头里面,微信方会验证一下用户传递过来的签名和微信根据规则生成的签名两者是否相同,如果相同微信允许它访问,返回给用户响应结果。但是如果不相同的话,证明用户身份不正确,它可能是黑客访问的,所以微信不允许它访问。
微信构造签名的时候,主要需要两大部分参数,一部分参数是用户传递来的body请求体参数,另外一部分参数是商户相关的的参数包括商户号,私钥,证书序列号,md5key密钥等信息。还有一部分是请求方法是Get还是Post,还有你的请求地址url后缀这个也影响微信构造签名。
因此我们用户方构造签名的方式,必须要和微信方生成签名的构造方式相同,这样我们才能生成和微信完全相同的签名,我们的验证才会通过。