====================
安卓个人开发者如果如果想着App里实现支付打赏功能,嵌入sdk不说成本大外,基本是过不了市场审核的。那么我们可以利用有限资源,封装组件实现一个mini型的打赏功能。
一、支付宝转账分析
支付宝的转账和支付功能,都可以通过二维码打开相关的支付页面,并且用浏览器扫一扫后也是可以正常呼起正常支付页面的。那么我们简单分析下,支付宝的二维码整个跳转肯定不需要相关集成sdk的,那么到底什么样的数据格式可以做到的?
在支付宝个人信息页,找到 我的二维码,截图自己的支付宝二维码,识别下,得到以下信息:
可以看到支付宝的支付二维码就是一个普通的http url, 然后它主要信息就存在后缀字符: apafm3kp91df7yo517 里。
https://qr.alipay.com/apafm3kp91df7yo517
网上查询后,发现果然可以通过scheme去打开支付宝转账页面。参考
于是马上动手实现,验证scheme方式是有效的。剩下的就是怎么封装下方面调用。
二、微信转账分析
有了支付宝的转账经验,我们同样从二维码信息入手,发现微信随着版本更新,会有很多验证,直接用scheme调微信,会打开微信的一个空白网页。
分析
然后研究里下微信支付sdk,发现在接口调用的时间需要商户id,及appsecret等信息验证,这就意味这我们单纯的没有任何身份信息去调起微信支付是不可能的。 那么我们退而求其次,用引导方式帮用户直接打开微信扫一扫页面,文案引导用户从相册打开二维码,然后支付。
下一步,就是找到打开微信扫一扫的方法。
private void toWeChatScan() {
try {
//利用Intent打开微信
Uri uri = Uri.parse(“weixin://dl/scan”);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
} catch (Exception e) {
//若无法正常跳转,在此进行错误处理
Toast.makeText(DinpayWeChatActivity.this, “无法跳转到微信,请检查您是否安装了微信!”, Toast.LENGTH_SHORT).show();
}
}
以上是网上推荐的方法,那么很不幸的是,这种方法估计在很早之前版本可以,但是现在这种方法是无效的。
那么是不是高版本就没有方法里呢?继续google,发现以下方法是可行的:
/package/ static void startWechatScan(Context c) {
Intent intent = new Intent();
intent.setComponent(new ComponentName(“com.tencent.mm”, “com.tencent.mm.ui.LauncherUI”));
intent.putExtra(“LauncherUI.From.Scaner.Shortcut”, true);
intent.setFlags(335544320);
intent.setAction(“android.intent.action.VIEW”);
if (MiniPayUtils.isActivityAvailable(c, intent)) {
c.startActivity(intent);
} else {
Toast.makeText(c, “未安装微信~”, Toast.LENGTH_SHORT).show();
}
}
二维码微信相册保存
实现微信扫一扫跳转后,用户在从相册选择二维码时,怎么样才能一眼选出我们的目标转账二维码呢?
观察发现微信的二维码选择相册是按照时间顺序排序,那么只要我们的图片生成时间最新就可以排在第一位,每次新生成截图保存即可。
相关图片生成及相册保存逻辑如下:
/package/
static void startWeZhi(Context c, View view) {
File dir = c.getExternalFilesDir(“pay_img”);
if (dir != null &&
!dir.exists() && !dir.mkdirs()) {
return;
} else {
File[] f = dir.listFiles();
for (File file : f) {
file.delete();//删除旧截图,每次用新截图,保证相册排序。
}
}
String fileName = System.currentTimeMillis() + “weixin_qa.png”;
File file = new File(dir, fileName);
if (!file.exists()) {
file.delete();
}
snapShot(c, file, view);
startWechat©;
}
/**
- 截图保存逻辑
*/
private static void snapShot(Context context, @NonNull File file, @NonNull View view) {
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas();
canvas.setBitmap(bitmap);
view.draw(canvas);
FileOutputStream fos = null;
boolean isSuccess = false;
try {
fos = new FileOutputStream(file);
//通过io流的方式来压缩保存图片
isSuccess = bitmap.compress(Bitmap.CompressFormat.PNG, 80, fos);
fos.flush();
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
文末
很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我整理了一些资料,需要的可以免费分享给大家
这里笔者分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
【视频教程】
天道酬勤,只要你想,大厂offer并不是遥不可及!希望本篇文章能为你带来帮助,如果有问题,请在评论区留言。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
6)]
天道酬勤,只要你想,大厂offer并不是遥不可及!希望本篇文章能为你带来帮助,如果有问题,请在评论区留言。