Android 微信原生登录,支付,以及一些奇奇怪怪的问题。(wxApi.isWXAppInstalled 一直返回false)
导入依赖
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:5.3.1'
登录
将微信注册到APP 可以在onCreate的里边初始化
wxApi = WXAPIFactory.createWXAPI(this, Constants.wechat_appid, true)wxApi!!.registerApp(Constants.wechat_appid)
登录代码,这里判断微信客户端是否存在可以根据包名来判断,也可以使用api,但是在高版本需要适配,下文有提及
if (wxApi!!.isWXAppInstalled()) {val req = SendAuth.Req()req.scope = "snsapi_userinfo"req.state = "wechat_sdk_demo_test"wxApi!!.sendReq(req)} else {ToastUtil.getInstance()._short(this,"请先安装微信客户端")}
支付
将微信注册到APP 可以在onCreate的里边初始化
wxApi = WXAPIFactory.createWXAPI(this, Constants.wechat_appid, true)wxApi!!.registerApp(Constants.wechat_appid)
支付代码,支付相关的一系列参数有后台接口返回,拿过来直接用就可以
if (wxApi?.isWXAppInstalled == true) {val request = PayReq()request.appId = Constants.wechat_appidrequest.partnerId = data.partnerIdrequest.prepayId = data.prepayIdrequest.packageValue = data.packageStrrequest.nonceStr = data.noncestrrequest.timeStamp = data.timestamprequest.sign = data.signwxApi?.sendReq(request)} else {ToastUtil.getInstance()._short(activity, "请先安装微信客户端")}
结果回调
在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity,
并在manifest文件里面加上exported属性,设置为true,例如:
<activityandroid:name=".wxapi.WXEntryActivity"android:label="@string/app_name"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:exported="true"android:taskAffinity="net.sourceforge.simcpux"android:launchMode="singleTask">
</activity>
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {private IWXAPI api;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);api = WXAPIFactory.createWXAPI(this, Constants.wechat_appid);api.handleIntent(getIntent(), this);}@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);setIntent(intent);api.handleIntent(intent, this);}@Overridepublic void onReq(BaseReq req) {}@Overridepublic void onResp(BaseResp resp) {int type = resp.getType();if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {int errCode = resp.errCode;if (errCode == -2) {Toast.makeText(getApplicationContext(), "取消支付", Toast.LENGTH_SHORT).show();finish();} else if (errCode == 0) {Toast.makeText(getApplicationContext(), "支付完成", Toast.LENGTH_SHORT).show();finish();} else {Toast.makeText(getApplicationContext(), "支付失败", Toast.LENGTH_SHORT).show();finish();}}else if (resp.getType() == ConstantsAPI.COMMAND_SENDAUTH){}}
}
微信回调之后,根据自己的业务逻辑来进行处理
Android版本11及以上版本, 判断手机是否安装微信isWXAppInstalled()一直返回false
AndroidManifest.xml中添加以下节点(类似其他三方SDK接入的时候,如果你突然发现方法不能用了,就去看看targetSdkVersion…)
<queries><package android:name="com.tencent.mm"/></queries>
Android 微信原生登录,支付,以及一些奇奇怪怪的问题。(wxApi.isWXAppInstalled 一直返回false)相关推荐
- Android开发丶集成微信原生登录
好久没写博客了,大概是与ReactNative大战半月已经有点疲惫了,说起集成微信三方登录,还记得上次实现功能还是刚参加工作时,用Mob的ShareSDK来集成实现的,该平台集成了数个主流平台的分享和 ...
- COCOS 游戏 Android 微信授权登录闪退,崩溃
小米11手机 MIUI系统版本 13.0.8 COCOS 游戏接入微信授权登录后, 在安卓原生Demo和其他手机未见异常,都可以正常登录, 但是发现小米11手机授权或取消授权回来之后游戏都会闪退崩溃 ...
- Android Facebook原生登录
前言: 在写这篇文章之前先吐槽一下自己的英文水平,之前一直没感觉,因为做的项目都是国内的项目,很少看英文文档.但是,自从换了一个工作之后,做的是国外的项目.并且,写了给第三方写了一个SDK,需要使用G ...
- android 微信跨境支付,微信跨境支付.pdf
微信跨境支付 WeChat Cross-border Payment 1 (1) Business Overview (1) , We cooperate with China Tencent tec ...
- Android微信授权登录内存泄漏问题
最近有个APP中使用了微信授权登录功能,项目中我们采用leakcanary来检测内存泄漏,发现微信登录有内存泄漏的问题.现将解决过程记录如下,不确定与微信SDK版本有没关系,欢迎讨论指正. 一般我们是 ...
- 关于微信公众号支付接口开发遇到的奇葩问题,始终返回get_brand_wcpay_request:fail。
最近公司开发网站针对微信公众号的支付功能. 由于公司目前的这个项目网站是使用asp代码开发的,但是微信官方给出的demo中是没有asp版本的,所以楼主只有下载demo的php版本作为参考写了一个asp ...
- Android微信刷卡支付开发
微信开发不容易,在于各个环节的理解和疏通. 支付类型分为几种,每种的业务也不相同,所以就困扰了很多人,我也抱怨过资料的混乱,没办法慢慢梳理. 摸索过后才知道我需要的是刷卡支付业务.公司的Android ...
- android微信第三方登录怎么通过code获取openid?
2019独角兽企业重金招聘Python工程师标准>>> 方法1: 1.登录公众账号设置OAuth2.0 2.设置菜单按钮URL为OAuth链接 3.页面后台获取: public St ...
- html5 微信原生登录,用HTML5实现微信密码输入框
效果图 简单说一下原理 : 1.先创建一个input输入框,定位在在六个小input上面,设置css opacity: 0 2.监听输入隐藏input输入的值,循环显示在6个input里面 3.光标是 ...
最新文章
- 喊了好久的AI落地究竟卡在哪里了?
- php实现cookie加密解密
- undefined reference to...
- source tree 递归子模块_每日刷题3--漫谈二叉树的递归遍历
- adb linux 权限更改,使用命令chmod修改android文件权限
- 部署eureka和config
- stack smash_扶手椅VGUX:Super Smash Bros.Ultimate
- 编译安装PHP出现configure: error: MySQL configure failed. Please check config.log的解决方法
- C++语法:构造函数以及析构函数
- sklearn.decomposition.FastICA实现FastICA算法
- c语言数组指针题库,C语言 数组指针练习题.doc
- winform基础 C#编程
- WP10回滚WP8.1详细教程,变砖也可修复
- pe系统测试软件,PE实测:测试环境及PE制作
- C语言的自动关机程序和一个用来整人的小程序
- IEEE Fellow 2019 名单出炉,40 位国内高校学者入选
- 微信浏览器自动关闭页面
- 微信开发者工具通过二维码编译步骤
- BeanUtils的populate方法之日期处理
- CentOS7和CentOS8 Asterisk 20.0.0 简单图形化界面7--对接讯时FXO网关落地
热门文章
- matlab采样率什么意思,求教。音频文件的位数,码率,采样率都代表什么意思啊?...
- 源代码世界3—海上高墙
- PHP报错:Declaration of ... should be compatible with ... 的解决方法
- 工程力学(10)—轴向拉伸与压缩二
- 《2022汽车行业数字化厂商全景报告》发布
- CentOS7(Linux)在VMware Workstation上的 安装使用教程
- 负载均衡、高可用、可扩展解决方案
- 【通俗向】假设检验(三):卡方检验和t检验
- Revit二次开发环境配置(Revit 2020 +Visual Studio 2019)
- Revit二次开发,新手接入IExternalCommand、IExternalApplication,如何使用它们!