本文由CSDN 迁移至此
原文
一.前言
1. 微信支付和支付宝支付是现在APP常用的支付方式,但是真正接入过两种支付方式的猿友会很明显的感觉到微信支付真心比支付宝麻烦很多,会出现很多莫名其妙的错误,但是官方的文档却很难给出较好的解决方案.
2.前几天公司的APP需要支付功能然后也需要这个-1问题,简直感觉微信支付丧心病狂,这里总结下自己出现的问题和一些其他网友出现的问题做个总结,最后,欢迎补充.谢谢
二.错误的统计
***官方的描述: ** -1 错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
1.签名错误:
(1).签名的参数集合没有按照参数名ASCII码从小到大排序(字典序).
(2).签名的是时候漏了使用key,(key的由来可以看下面第三条的分析)
(3).签名的KEY错误. 这里用来签名的key是申请支付功能以后,微信给你的一个商户账号里面设置的.具体key设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置
(4).签名后的key没有进行转化成大写或者其他例如前面的签名参数先排好序最后才加上key(key字段不参与ASCII码的大小排序,而是直接放到最后)
(5),还有一些其他的格式错误请参看官方文档的详细说明 微信官方的签名说明,请认真对比.
(6),签名问题的终极大招-----使用官方的签名认证工具一一对比.注:最好在连接生成的key和最终MD5之后的结果 在log下打印出来,可以方便查看出错的位置 接口调试工具
2.APPID错误
(1)APPID是在open.weixin.qq.com上创建的应用,可以通过 点击管理中心-->应用详情 来查看APPID
(2)创建APP时候上传的证书与现在使用的不一致.商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。设置界面在【开放平台】中的栏目【 管理中心 --> 修改应用 --> 修改开发信息】里面
应用包名:是在APP项目配置文件AndroidManifest.xml中声明的package值,例如DEMO中的package="com.nmm.paydemo"。
应用签名:根据项目的应用包名和编译使用的keystore,可由签名工具生成一个32位的md5串,在调试的手机上安装签名工具后,运行可生成应用签名串,如图8.9所示,绿色串即应用签名。签名工具下载地址
对比查看应用签名是否一致,特别注意,一般上传都是使用release版本的key所以在测试的时候就需要使用签名版的apk,普通的debug版本key是不一致的
三.结束
文档主要参考网络和自己的使用过程,有什么错误的地方欢迎指正