Unity3d使用微信支付是属于APP内发起支付调用的情况,其本质上是在安卓项目上使用微信SDK,安卓项目开发完成后再导入到Unity中作为Unity插件使用,即Unity中C#调用安卓(Java)代码的流程。

微信官方给出的支付Demo在这里,但是使用过程中遇到很多坑,网上类似的文章很多,但大多年代久远,不清楚其他人做安卓微信支付是否也是踩着这些坑过来的,总之记录下来方便以后再遇到。


首先,该Demo居然是个远古时代的Eclipse(基于ADT插件)的安卓项目!你可以选择下载Eclipse和ADT,在Eclipse中接着开发/学习,也可以选择把Eclipse项目导入到Android Studio中并改用Gradle管理。

如果选择使用Eclipse,资源下载和使用细节参考这里。如果选择使用Android Studio,导入Eclipse项目可参考基础教程进阶教程。为了顺应时代潮流,我这里选择用AS。

由于官方Demo自带各种Bug,建议基于该项目来学习和开发。该Eclipse项目中只有一个工程,导入AS后该工程会变为一个自动命名为app的模块(Module),最好是导入到一个空文件夹中(等同于新建一个AS项目)。


导入AS后,接下来就是下载各种安卓平台版本的问题,因为下载的别人的项目,大家使用的SDK版本和编译工具版本可能都不一样。

我这边根据个人IDE情况,在项目根路径\app\build.gradle文件中,修改编译工具和安卓平台版本如下:

Gradle也根据已安装的版本,改用了gradle-4.4-all版本。AS的设置中,Gradle设置默认的目录路径是C:\Users\用户名\.gradle\wrapper\dists\ ,根据你已安装的Gradle版本来修改,重新编译后AS会自动下载。但由于国内蛋疼的GFW,通常很难下载下来,手动配置Gradle参考这里,自行用迅雷下载下来后放到Gradle默认目录下,不需要解压缩!AS在使用时会自动解压。


解决Gradle和工具版本问题后,下一个碰到的问题是编译项目(菜单项Build/Make Project)后会遇到万恶的aapt2错误。该错误貌似是Android Studio3.X版本自带的Bug。

Caused by: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

很容易搜到解决办法是在gradle.properties中添加一行代码禁用Aapt2。

android.enableAapt2=false

注意看清楚,是在gradle.properties文件中,而不是在gradle-wrapper.properties文件中!写在gradle-wrapper.properties重新编译依然会碰到这个报错!

由于该项目默认是没有gradle.properties文件的,需要自行创建。创建时不要在AS中(因为使用的视图可能是Project或Android),要在系统文件管理器中,在项目根路径新增该文件,并写上android.enableAapt2=false。

之后点击Asyn Now让Gradle重新编译就行了。


解决导入工程的各种环境问题后,下一个问题是官方Demo自带的Bug!编译项目,在AS中会遇到一个这样的Bug:

libpng error not a png file

项目中自带的一些图片资源虽然是png后缀的,但其实却是个jpg文件!解决办法参考这里或者这里。或者直接用上面提到的基于这个项目来做,该项目已经改好了这个Bug。


再次编译项目,这次的报错是 项目根路径\app\src\main\java\net\sourceforge\simcpux\Util.java,会发现该文件中引入的org.apache.http包报错了。

解决办法参考这里。原因是项目太老,使用的org.apache.http包已过时了,改用引入org.apache.http.legacy库即可。在项目根路径\app\build.gradle中新增一行:

【Unity】微信支付SDK官方安卓Demo的使用问题的更多相关文章

  1. 开源微信支付SDK

    应该有一年多没在博客园上写文章了,毕竟是一个记录自己技术成长的平台,没能将写博客长期坚持下来,说起来也是挺惭愧的.对于自己的近况而言,确实平常加班也比较多,时间会比较压缩,所以到后来博客也基本停止了更 ...

  2. 微信支付.net官方坑太多,我们来精简

    原文:微信支付.net官方坑太多,我们来精简 微信支付官方坑太多,我们来精简 我把官方的代码,打包成了 an.wxapi.dll. 里面主要替换了下注释.呵呵.然后修改了几个地方. 修改一.Confi ...

  3. iOS 微信支付SDK与微信友盟分享两者同时集成时,出现的问题与解决之路。

    这两天改版一个旧的APP,要旧貌换新颜,拿到app后进行编译,一直报下面的错误. 报不认识的符号名PayReq错误.奇怪,啥也没动就这样,真不知道给的包是不是本来就是个报错的工程. 不管怎样,要对它修 ...

  4. tp6中使用微信支付sdk

    一.下载微信支付sdk 二.将lib文件夹下的文件复制到目录:extend->WxPay 将example文件夹下的WxPay.Config.php文件也复制到:extend->WxPay ...

  5. Unity接入微信支付SDK 2022年版安卓篇

    最近1年转了UE开发,博客更新的比较少,技术栈宽了不少,以后有空尽量多更新,也方便总结记忆 Unity接入微信支付整个过程坑比较多,网上之前的教程要么比较老,要么比较零碎,只能东拼西凑摸索,跑通后还是 ...

  6. Android微信支付SDK开发笔记

    一.准备工作 1.开发平台及SDK下载 微信开放平台 https://open.weixin.qq.com 下载SDK 微信支付Demo下载 http://pay.weixin.qq.com/wiki ...

  7. Android微信支付SDK开发

    一.准备工作 1.开发平台及SDK下载 微信开放平台 https://open.weixin.qq.com 下载SDK 微信支付Demo下载 http://pay.weixin.qq.com/wiki ...

  8. 支付宝支付 微信支付SDK接口不统一? 盘他!

      开发过支付宝.微信支付的同学都知道,微信的支付 API 设计感觉是 Java 开发工程师写的,远不如支付宝 SDK 的接口设计用起来顺手.在这里,统一封装微信支付和支付宝支付的API,使两种支付方 ...

  9. Android微信支付SDK

    App对接微信调起微信支付需要在微信平台注册,鉴别的标识就是App的包名,所以将申请的包名单独打包成一个Apk文件,则在其他的App调起此Apk的时候同样可以起到调用微信支付的功能.这样就实现了调起微 ...

随机推荐

  1. 1014 Uniform Generator ACM

    http://acm.hdu.edu.cn/showproblem.php?pid=1014 题目的英文实在是太多了 ,搞不懂. 最后才知道是用公式seed(x+1) = [seed(x) + STE ...

  2. MySQL环境变量的配置

    找到mysql安装的bin目录下复制此路径: 我的电脑右击属性====>>高级系统设置==>>环境变量 找到path 单击编辑将路径粘贴到变量值的最前面,在bin后面加上英文的 ...

  3. [USACO08OPEN]寻宝之路Clear And Present Danger

    OJ题号:洛谷2910 思路:Floyd #include<cstdio> #include<algorithm> using namespace std; int main( ...

  4. React-Redux使用方法

    React-Redux使用方法 理解 在React项目中使用react-redux,可以让你更方便的使用redux,原理是在index.js中注册app时用一个<Povider>标签嵌套, ...

  5. 网络 [HNOI2016]

    Description 一个简单的网络系统可以被描述成一棵无根树.每个节点为一个服务器.连接服务器与服务器的数据线则看做一条树边.两个服务器进行数据的交互时,数据会经过连接这两个服务器的路径上的所有服 ...

  6. PHP读写Excel

    PHP读写Excel PHP读写Excel可以通过第三方库phpexcel比较优雅地完成,由于PHP对于字符串处理的优势,读写PHP非常方便. 库导入 这里使用composer包管理工具,以下是配置信 ...

  7. ES6_入门(6)_函数的扩展

    // 2017/7/22 /*ES6函数的扩展*/ //ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法. function log(x, y) { y = y || 'World'; ...

  8. 【二分+拓扑排序】Milking Order @USACO 2018 US Open Contest, Gold/upc_exam_6348

    目录 Milking Order @USACO 2018 US Open Contest, Gold/upc_exam_6348 PROBLEM 题目描述 输入 输出 样例输入 样例输出 提示 MEA ...

  9. web 和 java 资源

    1.自己按照上面的网址和密码自己去下载都那些视频都是vip的视频现在下载免费  7-17JAVA开发搜索引擎自动提示[优效学院向天] 链接:http://pan.baidu.com/s/1bpEkfR ...

  10. JSAP102

    JSAP102 1.API //案例:禁用文本框 <body> <input type="button" value="禁用" id=&quo ...