文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-06-06 07:59

关注

最近项目要用到支付宝支付和微信支付,本想使用第三方支付框架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作为后缀的,另存一下,或者修改你的文件名使其和后缀名一致。

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


compileSdkVersion 23
 buildToolsVersion "24.0.0"
 aaptOptions.cruncherEnabled = false
 aaptOptions.useNewCruncher = false
 defaultConfig {
 applicationId "net.sourceforge.simcpux"
 minSdkVersion 4
 targetSdkVersion 23
}

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

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

哦,原来是因为6.0以后官方隐藏的HttpClient的相关API,然而大多数导入的代码都还用着这个强大的框架,那怎么弄呢?
好的,只需要再在Gradle文件中添加这样的一句话就好


 android {
 useLibrary 'org.apache.http.legacy'
 }
dependencies {
 compile files('libs/libammsdk.jar')
 android {
 useLibrary 'org.apache.http.legacy'
 }
}

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

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

Oh on,直接崩溃

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

空指针异常?进去一看
 sign = URLEncoder.encode(sign, "UTF-8");

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



 private String sign(String content) {
 return SignUtils.sign(content, RSA_PRIVATE);
 }

这个方法的问题,这样返回的是一个空的。
 再进去一看


public static String sign(String content, String privateKey) {
 try {
  PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(
   Base64.decode(privateKey));
  KeyFactory keyf = KeyFactory.getInstance(ALGORITHM);
  PrivateKey priKey = keyf.generatePrivate(priPKCS8);
  java.security.Signature signature = java.security.Signature
   .getInstance(SIGN_ALGORITHMS);
  signature.initSign(priKey);
  signature.update(content.getBytes(DEFAULT_CHARSET));
  byte[] signed = signature.sign();
  return Base64.encode(signed);
 } catch (Exception e) {
  e.printStackTrace();
 }
 return null;
 }

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



 private String sign(String content) {
// return SignUtils.sign(content, RSA_PRIVATE);
 return RSA_PRIVATE;
}

修改一下,再次运行。Oh yeah,成功!
今天就讲这么多,有啥不懂的,还是运用万能的百度吧!

您可能感兴趣的文章:Android实现微信支付功能微信支付仅能成功调用一次问题的解决方法(Android)Android支付宝和微信支付集成Android微信支付开发问题android仿微信支付宝的支付密码输入框示例Android微信支付获取二次签名Sign的方法Android第三方微信支付教程Android 高仿微信支付数字键盘功能Android编程实现的微信支付功能详解【附Demo源码下载】Android实现微信支付的统一下单


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯