安卓微信支付踩坑,对刚接触安卓开发的小白绝对有帮助

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yu19931202/article/details/69367765

刚接触安卓开发,就遇到了项目需要接入微信支付以及退款功能,根据自己iOS开发的经验,确定如下几个步骤,一步一步的来,有不对的地方多担待。

1.配置微信支付的环境,下载微信官方提供demo,把里面需要配置的包拖进你的当前工程,这里说一下,微信官方的demo就是屎,很多的东西,需要使用者自己慢慢的爬坑,官方demo传送地址
微信安卓demo下载

需要把下面两个包拖进你的工程里,第一个有用,第二个目前还不知道有什么用处。
这里写图片描述
这里写图片描述

2.配置完环境后就可以进行微信支付的代码操作了,因为我们公司后台没有写接口,配置微信支付必要的参数,这个工作就需要在客户端来完成了,只能在网上百度各种集成好的demo示例,一点点的去验证,诶,有一个好的后台写接口,会省去你大半的功夫,好了,先上示例代码的下载链接, 微信支付客户端代码示例
下载下来运行下就能支付了么,大错特错,因为这个工程示例是用eclipse来写的 而不是用AS来写的,运行编译肯定有错误,下面我就要来说下配置他的坑,首先你需要把请求的两个jar文件导入你的工程里面 如下图 这里写图片描述

然后找到工程里面的四个文件,你可以在自己的项目中创建一个文件夹,把里面的代码全都复制粘贴过去就可以了。
这里写图片描述

上图就是下载项目中的四个文件,下图就是我自己创建的文件夹下的文件

这里写图片描述
这样创建好之后,你就需要引入必要的东西,然后编译项目,你会发现报错了,具体的错误内容我忘了,但是大体的意思就是有重复的资源之类的,直接上代码,下面代码解决了上述的问题。

packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'
    }

这些代码需要在 bubuild.gradle 里面去配置,你在编译一下,就不会报错了,下面你就可以生成预支付订单,然后进行支付了,现在在这里指出几个大坑。

2.1. 微信支付回调的问题,首先你需要创建一个packname文件夹,文件夹的名字必须是你的包名 + .wxapi 然后在这个文件夹下面,创建一个 WXPayEntryActivity 类,来接收微信支付回调的结果,这里就不沾出具体的代码了,上面提供下载链接里有,直接复制就能用了,因为是小白,当时对这样创建根本就不明白什么意思,浪费了很多的时间,最后搞懂了具体的意思,下面附上一张图,希望可以帮刚接触安卓开发的跳过这个坑 或许是我的理解能力不够强,
这里写图片描述
因为自己的包名是 activity.app.chielec.chargingpile 然后在后面加一个 .wxapi就可以收到回调了 ,当然,别忘了在AndroidManifest.xml进行注册,下面贴上代码

<activity android:name=".wxapi.WXPayEntryActivity"
            android:exported="true"
            android:launchMode="singleTop"/>

这样就可以收到回调了。

2.1.2 微信支付只成功一次,以后就在也调不起微信支付了,以及支付的时候支付结果老是1的问题,原因有三个,
第一,你的应用签名和你在微信开放平台上填写的应用签名不相符。
第二,你在测试微信支付的时候一直是在模拟器,或者是直接把程序运行到你的手机上进行测试,这样是不对的,卡了我好久,直到在论坛上看到别人的评论说,微信支付测试,必须打包apk才能进行测试。
第三,你的其它配置参数有问题,我相信出问题基本都是前两个原因。

下面的解决方法是 配置好必要的那些参数,打包好APK,生成APK后,会生成.jks文件,这时你就需要知道.jks文件的32位 md5 的值

keytool -list -v -keystore ~ /Desktop/agency.jks -alias 别名 -storepass 密码 -keypass 密码

加粗部分是.jks文件的路径,其它的就是打包apk时自己设置的东西。这样在AS的Terminal中输出一下就可以获取到32位的md5值了 然后在修改微信开放平台上的应用签名,确定修改后,在安装APK 测试微信支付,应该就可以顺利的支付,不会在出现上面所述的问题。后面我会整理一个单独的微信客户端支付demo出来,然后这篇文章写的有点不太好,有些细节没注意到的也请谅解。

有任何疑问,可以加我Q 382010738 共同进步。

展开阅读全文

没有更多推荐了,返回首页