支付宝支付接口对接的总结

        本周工作最大的困难还是支付宝支付接口的对接。

       

         遇到主要的问题是两个:1. 发送订单给支付宝接口,接口验证签名失败。 2.支付宝付款结束后,发送信息给网站接收方进行二次验签,还是签名过不了。验签的方式是RSA非对称加密的验证方式。


         遇到的两个问题都是一个原因:网站的数据编码和支付宝的支付接口的编码对不上。网站的编码是GBK编码,按理来说支付宝给出了编码的配置项,也的确配置成了GBK编码,结果数据发送过去签名过不了。这个问题绊了很久,我舅舅一眼看出来这是发送过去的数据到了支付宝接口的url里有少量乱码,推测出来是编码的问题。于是就在发送请求的时候,修改了编码,第一次验签通过了。

   

          后来我想清楚了问题出在了哪里:咱们的网站是gb2312的编码,不是gbk的编码。gb2312是gbk的一个子集。支付宝只支持UTF-8 和  GBK的 编码,不支持gb2312。所以在发送请求的时候把编码改成GBK就签名通过了。


          这个gb2312属于中国比较老的一种编码,可能是咱们的这一套网站源程序比较老的原因,编码就使用了gb2312.现在想换编码风险也比较大。 比较新的项目大多都是采用utf-8的编码格式,接口平台,服务器,网站都默认采用utf-8编码就不用担心这个编码的问题。


          这个编码的问题还是我第一次遇到,可以说是为以后的工作涨姿势了。


          第二次验签不过我也想清楚了原因:同样是编码问题。接口返回的数据是gbk编码,网站是gb2312编码,编码问题让这个二次验签通过不了。最后是主管乾哥帮我解决了这个问题:抛弃支付宝的GBK编码接口,使用utf-8的接口。 一次验签和二次验签都进行顺利。


         本周的经验可以总结成以下几条:


         1.对接第三方接口的时候一定要确认好编码,以及数据和类型等 是否正确。最好还是使用utf-8的编码。


         2. 当从头开始一个新项目的时候, 编码最好还是选择utf-8这种主流的编码格式。服务器,数据库,web项目,第三方接口都使用默认的utf-8编码,中间的卡壳问题就会减少。虽然utf-8的请求数据包会稍大一些,但现在的网络带宽也不是十年前的网络带宽了。


         3.遇到问题多沟通多交流, 感谢主管,我的舅舅还有以前的同事给我在这个问题上的帮助。



关于编码的问题可以戳资料:http://www.cnblogs.com/ahulovey/archive/2010/08/20/1804327.html

你可能感兴趣的:(第三方接口)