文档章节

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

singyen
 singyen
发布于 2017/09/11 16:56
字数 1051
阅读 10
收藏 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开发:使用EasyPay打造全能移动支付框架

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

MichaelX
07/16
0
0
轻量级支付整合轻松嵌入任何系统 - pay-java-parent

轻量级支付模块集成(微信支付,友店扫码,支付宝,富友,银联, payoneer皮卡 )支付整合,app,扫码,即时到帐刷卡付条码付、支持多种支付类型多支付账户,支付与业务完全剥离,简单几行代码即可实...

egzosn
2017/02/17
0
8
AndroidStudio、gradle、buildToolsVersion关系

使用AndroidStudio 开发也已经2年了,每次gradle 或者studio 有推荐更新后,项目重新sync后都会报错,提示更新相应的其他版本,比如AndroidStudio、gradle、buildToolsVersion版本; 先来说说...

SuShine
2017/11/07
0
0
Android支付之支付宝封装类

今天介绍下在android中如何集成支付宝支付到自己的APP中去。让APP能够拥有方便,快捷的支付功能。 我们在做Android支付的时候肯定会用到支付宝支付,根据官方给出的demo做起来非常费劲,所以...

切切歆语
2016/12/15
39
0
支付宝使用流程和踩坑小记(附Demo)

支付宝使用流程和踩坑整理 官方开发指南 本文记录了我使用支付宝的一些过程 第一部分是一些我根据官方文档中摘录的可用的重要信息 第二部分是整理的 iOS/Android App 接入主要流程 && Demo ...

xiaoyouPrince
05/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0
SpringBoot2.0 停机

最近新建了个SpringBoot2.0的项目,因为原来一直使用的是传统的Tomcat部署war包的形式,所以这次SpringBoot内置Tomcat部署jar包的时候遇到了很多问题。其中一个就是因为没有外置的Tomcat容器...

Canaan_
昨天
0
1
Confluence 6 外部参考

一个外部参考的意思是任何站点链接到你 Confluence 的实例。任何时候当 Confluence 的用户单击这个外部链接的时候,Confluence 可以记录这次单击为参考。 在默认的情况下,外部链接的参考链接...

honeymose
昨天
0
0
Android中的设计模式之抽象工厂模式

参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创...

newtrek
昨天
0
0
Redis | 地理空间(GEO)的一个坑

Redis的地理空间(Geo)是个好东西,轻轻松松的就可以把地图描点的问题处理了, 最近却遇到一个坑...Redis采用的Msater-Slave模式, 运用GEORADIUS在salve读取对应的数据,新增了从节点但是从不返...

云迹
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部