这几天一直在做接口封装的工作,然而合作公司给的APi文档主要是对接C#,没有对接过php,所以在签名方面可能有所不同,主要是先将请求的参数通过字典排序后,拼接成字符串,然后再使用RSA私钥进行签名,签名生成后再用utf8编码,编码之后再用base64编码,最后使用http传送时,再用url编码。。。。根据文档的要求,最终形成的签名在测试时,一直提示签名错误,试了好多遍,还是如此。。。
最后在网上搜了好多类似的问题,都没能解决这个问题,
最后最后的问题是这样被解决了:
1.在原有的基础上(就是参数已经按照字典排序,并且已经拼接成字符串)
通过file_get_contents()函数来获得RSA私钥的内容
再通过$pi_key=openssl_pkey_get_private();获得私钥
生成的签名与其他参数进行拼接
最后使用CURL函数进行调用
由于返回的是XML格式的数据,由于我们需要json格式的数据,需要先将xml格式转化成对像,然后再将对象转化成json格式,代码如下:
在将数据返回给前端时,json格式中的中文字体被自动编码了,此时只要加上
就可以完美解决了