公司最近要上线微信支付功能模块了.Android版本的支付部分就研究了一下。由于申请公司账号较为麻烦,所以只能使用微信官方的测试版。关于微信支付的这个测试版,有些小坑的地方。写下了供大家参考,以免走些弯路。
官方的demo中,其提供了一个可以生成预订单的接口:http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php?plat=android请求这个接口,就会获得一个预支付订单,这个订单的商品名称,商品描述,价格都是默认的,无法自定义。之所以无法定制是因为微信支付官方提供的这个测试appid的密钥没有提供,只提供了apid。
1、首先下载官方的demo
官方的demo,是eclipse版本的,下下来就可以直接跑。这一点比较赞。但是我的微信号不知怎么地了,测试了一次之后就再也测试不了了。这一点比较坑。重点来了:如果您也遇到了这种情况,并且错误返回码为-1,这是你可以尝试换一个微信号试试。这是第一种解决办法。第二种解决办法是你卸载掉微信,之后再安装。我就是这样解决的。这个bug难以复现,就不探究为什么会产生这个问题了。
2、关于向Android Studio迁移的问题
我把官方的demo简化后迁移到了studio,但是就是无法调用微信支付。我反思了一下,首先明确这么几点:
- 微信官方用于微信支付第三方应用验证的原理是:应用的包名+应用的MD5签名。
- 我使用的是微信官方提供的demo,因此如果想用他的借口就得把包名替换为官方demo的包名
- 关于MD5的产生,依照我的理解,这个MD5产生的依据,应该是包名和keystore
- 因此将as上的demo的包名替换为 net.sourceforge.simcpux,关于debug.keystore可以在那个官方demo中找到
明确了问题的原因,就去解决吧!包名容易替换,关于keystore的替换,在Android Studio中有两种方式(来源于stackoverflow):
- 在你的迁移到的应用的moudle的build.gradle文件中添加
android {
signingConfigs {
debug {
storeFile file("your.keystore") //替换为全路径
}
}
} 2.引导式添加:File->Project Structure
Add a keystore at "Signing" Tab:先选中你的moudle,然后点击Singing
Select it for your debug/release "Build types". 在点击那个"+",然后起个名字debug
Make sure the alias name matchs with your keystore (keytool -list -v shows your alias name):然后在store file那儿按照引导添加官方的debug.keystore就可以了
就写到这里吧!等到公司appid申请完毕,有什么新问题在写。小伙伴们遇到这方面的困难,可以私信我.
附加内容:
关于应用签名的生成,除了使用微信支付官方提供的apk以外;
还可以使用Androidstudio自带工具keytool;