文档章节

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

singyen
 singyen
发布于 2017/09/11 16:56
字数 1051
阅读 9
收藏 0
点赞 0
评论 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
博文 15
码字总数 1234
作品 0
轻量级支付整合轻松嵌入任何系统 - pay-java-parent

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

egzosn ⋅ 2017/02/17 ⋅ 8

集成支付宝H5支付

支付宝开放平台上有大量文档与API,可以在上面找到所需要的资料。 H5支付属于支付宝移动支付功能,可在链接中点击“SDK&DEMO下载”,将SDK与DEMO下载到本地。 将客户端的DEMO用Android Studi...

积木oooooo ⋅ 2016/07/06 ⋅ 0

支付宝使用流程和踩坑小记(附Demo)

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

xiaoyouPrince ⋅ 05/24 ⋅ 0

Android支付之支付宝封装类

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

切切歆语 ⋅ 2016/12/15 ⋅ 0

Android开发:使用EasyPay打造全能移动支付框架

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

MichaelX ⋅ 2017/03/23 ⋅ 0

android studio 编译缓存

现象:能编译生成apk,但是编译器中找不到新代码。无论是clean还是invalidate Caches /restart 还是到.android将build-cache删除,或者是更改gradle的service directory path都无效。 尝试以...

jimmy2012 ⋅ 05/24 ⋅ 0

Android 微信支付开发流程

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

展菲 ⋅ 2017/11/10 ⋅ 0

银联支付-初次接触

银联开开放平台首页 1、注册 银联开发平台 https://open.unionpay.com 平台分为三个角色 我是商户 我是机构 我是开发者 第一反应我是开发者就直接申请我是开发者的角色。但并没有如愿以偿如下...

Javen205 ⋅ 2017/10/06 ⋅ 0

Gradle/Studio构建问题(Ant/Gradle)

> 使用Gradle遇到的问题及其他: Android Studio安装过程常见问题图解-- http://jingyan.baidu.com/article/fd8044fad5bdca5031137ab7.html 1. 将GitHub上的新项目导入Studio中 Pano360-mast......

shareus ⋅ 05/11 ⋅ 0

【Mac】Caffe-android-lib 编译so文件记录

【Mac】Caffe-android-lib 编译so文件记录 1、下载Caffe-android-lib github地址是:https://github.com/lichong951/caffe-android-lib 2、下载编译环境:NDK android-ndk-r11c-darwin-x8664......

lichong951 ⋅ 05/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

linux 安装docker

通过以下命令下载安装docker wget -qO- https://get.docker.com | sh 执行以上命令后输出以下内容说明安装成功,注意红框中的内容,docker安装成功后默认只有root能使用,红框中给出的提示是...

haoyuehong ⋅ 16分钟前 ⋅ 0

482. License Key Formatting - LeetCode

Question 482. License Key Formatting Solution 思路:字符串转化为char数组,从后遍历,如果是大写字母就转化为小写字母,如果是-就忽略,如果遍历了k个字符(排除-)就追加一个-。 Java实现...

yysue ⋅ 35分钟前 ⋅ 0

聊聊spring cloud gateway的LoadBalancerClientFilter

序 本文主要研究一下spring cloud gateway的LoadBalancerClientFilter GatewayLoadBalancerClientAutoConfiguration spring-cloud-gateway-core-2.0.0.RELEASE-sources.jar!/org/springfram......

go4it ⋅ 59分钟前 ⋅ 0

详解:Nginx反代实现Kibana登录认证功能

Kibana 5.5 版后,已不支持认证功能,也就是说,直接打开页面就能管理,想想都不安全,不过官方提供了 X-Pack 认证,但有时间限制。毕竟X-Pack是商业版。 下面我将操作如何使用Nginx反向代理...

问题终结者 ⋅ 今天 ⋅ 0

002、nginx配置虚拟主机

一、nginx配置虚拟主机可分为三种方式,分别为: 1、基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站 2、基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站...

北岩 ⋅ 今天 ⋅ 0

shell脚本之死循环写法

最近在学习写shell脚本,在练习if while等流程控制时,突然它们的死循环写法是怎么样的?经过百度与亲测记录如下: for死循环 #! /bin/bashfor ((;;));do date sleep 1d...

hensemlee ⋅ 今天 ⋅ 0

苹果的ARKit2.0有多可怕,看了就知道

序言 ARKit主要由三部分组成: 跟踪(Tracking) 跟踪是ARKit的核心组件之一,其提供了设备在物理世界中的位置与方向信息,并对物体进行跟踪,如人脸。 2.场景理解(Scene Understanding) 场...

_小迷糊 ⋅ 今天 ⋅ 0

5.1 vim介绍 5.2 vim移动光标 5.3 ,5.4vim一般模式下移动光标,复制粘贴

vim命令 vim是vi的一个升级版;vim可以显示文字的颜色 安装vim这一个包vim-enhanced 如果不知道安装包,可以使用 命令下面命令来查看vim命令是那个包安装的。 [root@linux-128 ~]# yum prov...

Linux_老吴 ⋅ 今天 ⋅ 0

vim一般模式

vim 是什么 vim是什么 ? 在之前接触Linux,编辑网卡配置文件的时候我们用过了vi ,vim简单说就是vi的升级版,它跟vi一样是Linux系统中的一个文本编辑工具。 如果系统中没有vim ,需要安装一...

李超小牛子 ⋅ 今天 ⋅ 0

docker实战

构建企业级Docker虚拟化平台实战 重点剖析虚拟化和云计算概念; 分析Docker虚拟化的概念和原理; 从0开始实战Docker虚拟化平台; 基于Docker构建Nginx WEB服务器和CentOS虚拟机; 基于开源监...

寰宇01 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部