微信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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值