Android微信支付:如何跑通微信支付官方Demo

来源:互联网 发布:怪物猎人x 网络联机 编辑:程序博客网 时间:2024/05/21 08:35

        

        微信支付是一个坑,很久之前就听说了,现在我算是领教了,在这刚刚脱坑之际,有了今天这篇博客,至少能够帮助大家跑通官方demo。


        跑通微信支付官方demo必备条件:

        1.支付账号申请,在微信申请有支付权限的公众号信息,需要获得appid、app_secret、mch_id、pay_key。

           注意:具有支付权限这个很关键,如果没有支付权限,那么微信返回-1都不知道是什么鬼。

        2.支付账号的设置时,app支付的设置包名需要和项目的包名一致,同时需要设置打包签名发布app时的keystore,

        3.接下来需要下载微信支付官方的demo:https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=11_1(截至发博客时,微信支付最新版本是v3.0)

        4.在Eclipse或者AS中导入官方demo,然后修改几个地方:(1)把demo包名改成之前设置的包名,(2)把微信提供的默认appid等信息改成自己申请的数据信息(3)一定不要图省事,不要Runas运行,一定要export,并且用上传认证后的keystore签名打包,【坑啊,这个官方文档里面没说,demo里面没说,申请账号又不是我申请的,所以都不知道有上传keystore这回事】,可能部分人幸运的第一次Runas直接运行可以弹出支付界面,但是第二次或者以后都不行了,那可能是因为微信来不及检测你的keystore,所以算你幸运。要想百试百灵,还是要签名打包再测。

      5.运行打包后的app,点击支付,一定要确保至少运行环境安装有微信.....................(哎,用模拟器的孩子伤不起)

     关于微信支付demo,在官方说明里面真的是惜字如金,多说两句话都没有,像包名设置和打包发布后运行,之前根本不知道,瞎折腾费半天劲,哎。

     网上有很多的关于微信支付的文章介绍,因为年代原因,有很多的介绍并不都是V3.0版本的,所以大家下载demo的时候最好去官方下载,然后看文章介绍时最好认清是否是最新版本,在旧版本的文章上面花费时间已经不值得了。


2015年10月9日17:21:46更新:

刚踩了一个坑:微信客户端登录状态过期(被其他终端登录挤下线)而又没有重新登录过,那么这个时候调用微信支付接口,会硬生生的返回一个-1,坑啊。后面想了想,同一个app,没改过什么,账号也一切正常,为什么这回又不行了? 我清理个缓存看看,哈哈,果然,调用后要求重新登录微信,一切又恢复了。后面试着重现这个问题的时候,想起来,我的微信账号在模拟器登录过,在手机也登录过,这下把模拟器的登录状态挤下线了,然后在模拟器里面调用支付接口,返回了-1,重新运行微信登录下就ok了。

(这个bug,作为一个调用者,还真心不能解决,微信你个坑货)

2015年10月21日15:51:33更新:

如果你的项目里面需要微信分享,使用了友盟分享的SDK,同时又需要微信支付,使用的微信支付SDK,在编译运行的时候,提示包名重复的错误,无法运行,那么可以告诉你,其实友盟分享SDK里面已经集成了微信支付需要的所有类,只保留友盟分享SDK,去除微信支付SDK即可,你尽可大胆的直接从友盟SDK中调用微信支付的相关API(前提是友盟SDK是最新版本的)。

0 0
原创粉丝点击