导入依赖

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)相关推荐

  1. Android开发丶集成微信原生登录

    好久没写博客了,大概是与ReactNative大战半月已经有点疲惫了,说起集成微信三方登录,还记得上次实现功能还是刚参加工作时,用Mob的ShareSDK来集成实现的,该平台集成了数个主流平台的分享和 ...

  2. COCOS 游戏 Android 微信授权登录闪退,崩溃

    小米11手机  MIUI系统版本 13.0.8 COCOS 游戏接入微信授权登录后, 在安卓原生Demo和其他手机未见异常,都可以正常登录, 但是发现小米11手机授权或取消授权回来之后游戏都会闪退崩溃 ...

  3. Android Facebook原生登录

    前言: 在写这篇文章之前先吐槽一下自己的英文水平,之前一直没感觉,因为做的项目都是国内的项目,很少看英文文档.但是,自从换了一个工作之后,做的是国外的项目.并且,写了给第三方写了一个SDK,需要使用G ...

  4. android 微信跨境支付,微信跨境支付.pdf

    微信跨境支付 WeChat Cross-border Payment 1 (1) Business Overview (1) , We cooperate with China Tencent tec ...

  5. Android微信授权登录内存泄漏问题

    最近有个APP中使用了微信授权登录功能,项目中我们采用leakcanary来检测内存泄漏,发现微信登录有内存泄漏的问题.现将解决过程记录如下,不确定与微信SDK版本有没关系,欢迎讨论指正. 一般我们是 ...

  6. 关于微信公众号支付接口开发遇到的奇葩问题,始终返回get_brand_wcpay_request:fail。

    最近公司开发网站针对微信公众号的支付功能. 由于公司目前的这个项目网站是使用asp代码开发的,但是微信官方给出的demo中是没有asp版本的,所以楼主只有下载demo的php版本作为参考写了一个asp ...

  7. Android微信刷卡支付开发

    微信开发不容易,在于各个环节的理解和疏通. 支付类型分为几种,每种的业务也不相同,所以就困扰了很多人,我也抱怨过资料的混乱,没办法慢慢梳理. 摸索过后才知道我需要的是刷卡支付业务.公司的Android ...

  8. android微信第三方登录怎么通过code获取openid?

    2019独角兽企业重金招聘Python工程师标准>>> 方法1: 1.登录公众账号设置OAuth2.0 2.设置菜单按钮URL为OAuth链接 3.页面后台获取: public St ...

  9. html5 微信原生登录,用HTML5实现微信密码输入框

    效果图 简单说一下原理 : 1.先创建一个input输入框,定位在在六个小input上面,设置css opacity: 0 2.监听输入隐藏input输入的值,循环显示在6个input里面 3.光标是 ...

最新文章

  1. 喊了好久的AI落地究竟卡在哪里了?
  2. php实现cookie加密解密
  3. undefined reference to...
  4. source tree 递归子模块_每日刷题3--漫谈二叉树的递归遍历
  5. adb linux 权限更改,使用命令chmod修改android文件权限
  6. 部署eureka和config
  7. stack smash_扶手椅VGUX:Super Smash Bros.Ultimate
  8. 编译安装PHP出现configure: error: MySQL configure failed. Please check config.log的解决方法
  9. C++语法:构造函数以及析构函数
  10. sklearn.decomposition.FastICA实现FastICA算法
  11. c语言数组指针题库,C语言 数组指针练习题.doc
  12. winform基础 C#编程
  13. WP10回滚WP8.1详细教程,变砖也可修复
  14. pe系统测试软件,PE实测:测试环境及PE制作
  15. C语言的自动关机程序和一个用来整人的小程序
  16. IEEE Fellow 2019 名单出炉,40 位国内高校学者入选
  17. 微信浏览器自动关闭页面
  18. 微信开发者工具通过二维码编译步骤
  19. BeanUtils的populate方法之日期处理
  20. CentOS7和CentOS8 Asterisk 20.0.0 简单图形化界面7--对接讯时FXO网关落地

热门文章

  1. matlab采样率什么意思,求教。音频文件的位数,码率,采样率都代表什么意思啊?...
  2. 源代码世界3—海上高墙
  3. PHP报错:Declaration of ... should be compatible with ... 的解决方法
  4. 工程力学(10)—轴向拉伸与压缩二
  5. 《2022汽车行业数字化厂商全景报告》发布
  6. CentOS7(Linux)在VMware Workstation上的 安装使用教程
  7. 负载均衡、高可用、可扩展解决方案
  8. 【通俗向】假设检验(三):卡方检验和t检验
  9. Revit二次开发环境配置(Revit 2020 +Visual Studio 2019)
  10. Revit二次开发,新手接入IExternalCommand、IExternalApplication,如何使用它们!