最近项目中由我负责支付这块的功能,本人经验不多,其实我是拒绝的,但是么有办法,早就听说微信支付的坑很多,其实开始都没有在意,但是真正做的过程中,感觉真是想问候微信编写文档的大哥,话不多说,希望我的这篇分享能给大家实现微信支付功能的小伙伴们带来帮助,少走弯路,不再入坑。
1.首先比较简单的,根据文档中首先快速集成,这里再啰嗦一下步骤;
(1)首先申请你的appid;
(2)下载微信终端开发工具包,把libammsdk.jar包放入你的项目中;
(3)再AndroidManifest.xml中添加相应权限和activity;
(4)在工程主入口处初始化
(5)这一点比较坑了,要认真阅读文档,在工程src下放入包和类;放置位置必须是这样,如下图
(6)在WXPayEntryActivity中修改一些东西,demo中绑定了一个试图,如果你不需要可以删除或者自定义你的试图,又几个方法是必须要的,如图:
OK,到这里集成微信的东西基本上完成了,下面就是好多坑在等着你了,好吧,看了官方文档你是不是还是不知道该怎么集成未付功能,仅仅给你了接口地址和一些参数什么的,当时我看到这也比较懵B。其实不用怕,我们也就值需要它,其他的都无所谓,把demo中相关的方法我做成了一个utils类,之后我会上传一个文件,就是微信所用到的方法,要调取微信支付界面大概有如下几个步骤,如果看不懂,把我封装的工具类拷入代码中,一切解决,只需要修改工具类中的方法参数就可以了。
1.整个过程中,需要发送两次请求,首先通过如图方法把需要的参数传入,这边我是通过服务器请求的数据传入的,demo中应该是订单号,金额等参数,这里根据你需要的传入参数就可以了;这里有个很大的坑,我踩了很久,如果你的body参数,就是标题需要传入汉字,那么下面的字符编码就需要改为iso-8859-1,这里一定要注意。
这个方法中还有几个简单的方法,都比较简单,直接上图吧
在上面那些参数的尾部拼接上秘钥,生成一串字符串
ok,到这里就能开始第一次请求了,还是上图吧
开了一个线程调用官方文档上的接口,带入你设置的参数进行请求,如果参数没什么问题的话,应该返回你成功,如果返回你签名失败的话,首先考虑appid之类的有没有错,确认无错的话,要想起字符编码的问题了,我就是这样,一直签名失败,别的问题我还没遇到过。如果成功了,恭喜你,马上就要成功了,成功之后回直接
进行第二次请求的,接口返回在WXPayEntryAvtivity这个类中处理。
返回的结果,需要处理就在这个方法中编写就OK了,这里我发送了一个消息。
至此,就可以调出微信支付界面了,图就不上了。
文采不好,也不知道你们能不能真正看懂,看不懂请下载我上传的文件,一看你就明白了,本人分数也不多,写这篇文章也不容易,请适当给下分吧。