文档章节

解决新版Android studio导入微信支付和支付宝官方Demo的问题

singyen
 singyen
发布于 2017/09/11 16:56
字数 1051
阅读 15
收藏 0

最近项目要用到支付宝支付和微信支付,本想使用第三方支付框架ping++或者BeeCloud的,但是由于他们的收费问题,让我望而却步,而且公司给了相应的公钥、私钥和APPID等,所以就用下开放平台的呗。

进去倒腾了半天才发现一堆问题,Oh,我的天。完全不知所云,百度谷歌了一堆,都没找到足够的解决方案。好吧,自己来,这里也就把相关的东西分享给大家,如果有类似问题的可以考虑使用一下,不足的地方大牛就别喷了。

微信开放平台有文档和SDK,大家可以去自己查看下载,火箭:https://open.weixin.qq.com/

支付宝官方的Demo和文档相对简单些,而且说的更清楚些,火箭:https://open.alipay.com/platform/home.htm

 

还是先看下运行的Demo图示:

首先是微信的

 

再看看支付宝的

点击支付会跳转到你手机上的支付宝APP,如果手机上没有下载也是可以用的,不过用的不在一个真正的支付宝APP中

 

 

 但是这么简单的东西,楼主的确智商捉急,都弄了半天。

 

首先是导入微信的Demo,去官方下载了SimpleDemo后,发现一堆错误,好吧,首先是SDK的问题,这个就不多做赘述了。

然后修改后Try Again   oh,no,又来一个什么鬼。

什么鬼,仔细一看,是drawable里面有不是png的文件命名成了png文件。

好吧,如果你足够的耐心,那么几十张图片,你还是可以直接一张一张的检查后缀的,看看有不是png作为后缀的,另存一下,或者修改你的文件名使其和后缀名一致。

 

然而程序员的能力应该体现在偷懒的程度上,所以容我偷懒啦。

复制代码

1 compileSdkVersion 23
 2     buildToolsVersion "24.0.0"
 3     aaptOptions.cruncherEnabled = false
 4     aaptOptions.useNewCruncher = false
 5 
 6     defaultConfig {
 7         applicationId "net.sourceforge.simcpux"
 8         minSdkVersion 4
 9         targetSdkVersion 23
10     }

复制代码

只需要在对应的gradle文件中加上两句话 ,并把值至为false即可。

再次Try again, oh ,no,这次是一大堆错误,什么鬼!看一看日志。

哦,原来是因为6.0以后官方隐藏的HttpClient的相关API,然而大多数导入的代码都还用着这个强大的框架,那怎么弄呢?

好的,只需要再在Gradle文件中添加这样的一句话就好

android {
        useLibrary 'org.apache.http.legacy'
    }

复制代码

1 dependencies {
2     compile files('libs/libammsdk.jar')
3 
4     android {
5         useLibrary 'org.apache.http.legacy'
6     }
7 }

复制代码

 

 

 

再来看看支付宝的,就简单多了。我遇到的第一个问题是,没有指定APPID,公钥那些东西,好的,这个肯定是得弄得,把自己申请的一系列东西装进去。

运行一看。

 

嘿嘿,有界面,应该可以吧,点击一下支付。

Oh on,直接崩溃

 

 

错也总得有原因哈,看看日志。

 

 

空指针异常?进去一看

1 sign = URLEncoder.encode(sign, "UTF-8");

是这样一句话出现了问题,这句话什么问题呢。

复制代码

1     /**
2      * sign the order info. 对订单信息进行签名
3      * 
4      * @param content
5      *            待签名订单信息
6      */
7     private String sign(String content) {
8         return SignUtils.sign(content, RSA_PRIVATE);
9     }

复制代码

这个方法的问题,这样返回的是一个空的。

再进去一看

复制代码

1 ublic static String sign(String content, String privateKey) {
 2         try {
 3             PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(
 4                     Base64.decode(privateKey));
 5             KeyFactory keyf = KeyFactory.getInstance(ALGORITHM);
 6             PrivateKey priKey = keyf.generatePrivate(priPKCS8);
 7 
 8             java.security.Signature signature = java.security.Signature
 9                     .getInstance(SIGN_ALGORITHMS);
10 
11             signature.initSign(priKey);
12             signature.update(content.getBytes(DEFAULT_CHARSET));
13 
14             byte[] signed = signature.sign();
15 
16             return Base64.encode(signed);
17         } catch (Exception e) {
18             e.printStackTrace();
19         }
20 
21         return null;
22     }

复制代码

是这样的一串代码,原来这个方法是把私钥转换成应该有的格式,而我公司给的意见转换好了,好吧。

那直接返回就成了呗

复制代码

1 /**
 2      * sign the order info. 对订单信息进行签名
 3      * 
 4      * @param content
 5      *            待签名订单信息
 6      */
 7     private String sign(String content) {
 8 //        return SignUtils.sign(content, RSA_PRIVATE);
 9         return RSA_PRIVATE;
10     }

复制代码

修改一下,再次运行。Oh yeah,成功!

最后补充说明:LIBS/*.jar,里面文件多了一个······

本文转载自:http://www.cnblogs.com/liushilin/p/5708596.html

共有 人打赏支持
singyen
粉丝 0
博文 16
码字总数 1234
作品 0
私信 提问
Android 微信支付开发流程

首先奉上调起支付页面截图 一:介绍 项目中要用到支付功能,需要支付宝支付、微信支付、银联支付,所以打算总结一下,方便以后的查阅,也方便大家, 用到的地方避免再次被坑。 今天我们就主要...

展菲
2017/11/10
0
0
Android开发:使用EasyPay打造全能移动支付框架

前言 在这之前,笔者发布了两篇移动app支付相关博文,得到一些关注,但是由于博文中代码零碎,有些读者私信博主,以及加笔者qq咨询相关问题。考虑到这些,笔者把之前项目中的支付相关代码从业...

MichaelX
10/30
0
0
个人开发者即时到账收款方案 BufPay.com

前言 作为独立开发者,一般只有一个人独立奋战,做出了产品需要收款是非常麻烦的,接入支付宝微信支付都需要公司公户,而注册公司、开公户等一系列操作非常麻烦,成本也很高一年也要 1w 左右...

bufpay
07/10
0
0
Android 支付宝支付开发流程

首先奉上调起支付页面截图 一:介绍 项目中要用到支付功能,需要支付宝支付、微信支付、银联支付,所以打算总结一下,方便以后的查阅,也方便大家, 用到的地方避免再次被坑。 今天我们就主要...

展菲
2017/11/09
0
0
Android项目实战(五十):微信支付 坑总结

大部分APP必备需求,使用总结  Android接入文章在此:官方文档   文档很简单,Android分为四步: 1、后台配置 2、Android 内 注册appId 3、Android 内 调起支付 4、Android 内 支付结果回...

听着music睡
08/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
34分钟前
2
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
59分钟前
6
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
6
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
今天
5
0
dubbo 搭建与使用

官网:http://dubbo.apache.org/en-us/ 一,安装监控中心(可以不安装) admin管理控制台,monitor监控中心 下载 bubbo ops 这个是新版的,需要node.js环境,我没有就用老版的了...

小兵胖胖
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部