一.前言
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是不一致的
三.結束
文檔主要參考網絡和自己的使用過程,有什么錯誤的地方歡迎指正