微信APP支付第一次成功,其他无法调起
微信支付 第一次成功,其他無法調起,返回-1(Android eclipse 微信支付之大坑 簽名工具問題)_ws1836300的博客-CSDN博客_微信支付提示包名不對參考鏈接:http://blog.csdn.net/xinluqishi123/article/details/52234002微信支付第一次成功,其它支付不成功,可能的原因有:1:訂單號重復,這個重新生成一個訂單號就可以了。2:項目包名不對(包名必須與微信開發者平臺上的一致,詳情見參考鏈接)。3:APP的應用簽名不對,這個著重講一下哈(在這里我被坑了一個大跟頭,請大家盡量避免https://blog.csdn.net/ws1836300/article/details/53893102
問題:第一次調用非常OK,看到了微信支付界面,有自己生成的訂單號還有金額,但是放棄支付后再進入,就連微信客戶端都調用不起來了,換個訂單也是這樣,換個手機也是第一單可以調用微信客戶端,展示訂單號,金額,但是第二單說什么也不行了,定格在自己APP的支付界面,不報錯,任何反應也沒有。
解決方案見
申請以后你看到的就是圖片上的應用簽名,這個簽名是如何生成的在這里有介紹:?
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5
問題是這個Key的生成是跟正式發布時打包做簽名有關的,我們把Android應用公開release的時候會將這個Key加進去作為應用的key防止被惡意覆蓋等等,我們在申請注冊微信應用的時候必然要提供正式生成的這個應用的Key給微信官網。?
因此這件事就被忽略了,以至于在開發的過程中,我們在自己的本地運行打包,訪問微信服務器調起支付的時候,微信第一次拿到了我們的應用發來的請求,仿佛建立了連接開始了心跳,這時微信會異步地根據留存的應用包名和應用Key與你現在發送的包名和應用Key進行驗證,我相信即使你第一次進行付款,也是很有可能不成功的,但是這塊我就沒有驗證了,因為這個時候已經有驗證結果回調回來了。
所以跟運維人員拿了Release時把Key打到APK安裝包里的命令,進行包含正式Key的打包,命令如下:
cordova ?build ? --release ?android jarsigner ? -verbose ? -sigalg ?SHA256withRSA ? -digestalg ?SHA1 ? -keystore ?E:\android-release-key.keystore ? E:\項目名稱\platforms\android\build\outputs\apk\android-release-unsigned.apk ? android-release-key.keystore //運行完這條命令需要輸入密碼 zipalign -v 4 E:\項目名稱\platforms\android\build\outputs\apk\android-release-unsigned.apk ? a.apk?
問題就解決了。每次訪問都能順利地調用微信支付了。?
不得不感慨下,微信用這一手也嚴格控制了在他那里注冊的應用,注冊一個Key用一個,再想用,那么重新走流程吧。
————————————————
?
微信支付第一次成功,其它支付不成功,可能的原因有:
1:訂單號重復,這個重新生成一個訂單號就可以了。
2:項目包名不對(包名必須與微信開發者平臺上的一致,詳情見參考鏈接)。
3:APP的應用簽名不對,這個著重講一下哈(在這里我被坑了一個大跟頭,請大家盡量避免)。
(注:APK簽名步驟分為兩步,首先通過keytool生成用來簽名的 xxx.keystore,再用jarsigner簽名apk文件)
微信支付僅能成功調用一次的問題_聽從內心的召喚-CSDN博客本人使用Android開發有一段時間了,但是本身沒有系統學,而且多年專注服務端開發,總覺得因為項目需要接觸Android移動端開發只是暫時的,所以沒有太上心,結果碰到一個大難題折騰了一天,最后被有經驗的小伙伴提示了一下才迎刃而解,感覺無地自容的同時,又非常竊喜,畢竟跨過一個一個的坎,就成長了,在這里丟人等換個地方就成牛了也未可知,哈哈。閑言就絮叨到這里,趕緊分享:微信支付調用接口整體的流程有必要簡述https://blog.csdn.net/xinluqishi123/article/details/52234002
Android簽名用keytool和jarsigner制作apk文件https://www.cnblogs.com/linn/p/3784363.html
Android簽名用keytool和jarsigner制作apk文件
生成證書 keytool -genkey -alias aeo_android.keystore -keyalg RSA -validity 20000 -keystore aeo_android.keystore簽名 jarsigner.exe -verbose -keystore aeo_android.keystore -signedjar soccer-release.apk soccer-release-unsigned.apk aeo_android.keystore驗證簽名 jarsigner.exe -verify soccer-release.apk 備注?同樣的程序發布過程,在同事的機器上(JDK 1.6)簽名后可以正常安裝,但是在我機器上(JDK 1.7)簽名后安裝說簽名錯誤無法安裝。找到了解決的辦法,需要在簽名程序 jarsigner 增加如下參數-digestalg SHA1 -sigalg MD5withRSA?https://github.com/mobileresearch/weibo_android_sdk/blob/master/app_signatures.apk另外微博和微信的app校驗簽名工具,實際對比的是程序簽名和包名,包名在AndroidManifest.xml:package=""??
jarsigner -verbose -keystore feelyou.keystore -storepass feelyou.info -signedjar signed.apk -digestalg SHA1 -sigalg MD5withRSA unsigned.apk feelyou解釋:
1、-keystore feelyou.keystore:指定需要使用的簽名文件,直接寫文件名說明在當前目錄下,否則請自行指定具體路徑
2、-storepass feelyou.info:自動輸入密碼,keystore的密碼和alias的密碼都是我用的都是feelyou.info
3、-signedjar signed.apk:指定簽名后的文件存儲路徑,這里是說以signed.apk的文件名存在當前路徑下
4、-digestalg SHA1 -sigalg MD5withRSA:這就是必須加上的參數,如果你是jdk 1.6也不受影響
5、unsigned.apk:未簽名的apk路徑,這里是當前路徑下的unsigned.apk文件
6、feelyou:最后這個是alias
總結
以上是生活随笔為你收集整理的微信APP支付第一次成功,其他无法调起的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何设置学生上计算机课玩游戏,如何在电脑
- 下一篇: GAMS-运行过程中关于0的问题