一、工程引入工具包准备
下载项目,可以在APP项目的libs文件下找到wxlibrary.aar文件(已编译为最新版),引入自己的工程
引用时需要在android标签下加入,此处设置libs路径需要根据项目结构确定位置
android {
repositories {
flatDir {
dirs 'libs'
}
}
...
}
引入微信工具包及微信SDK
dependencies {
implementation(name: 'wxlibrary', ext: 'aar')
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
...
}
二、工具包初始准备工作
工程继承WxApplication 或者 application 的 onCreate 下使用,继承方式必须重写获取 APPkey 的方法, AppSecret 根据需要重写。
isCheckSignature() 与 isNowRegister() 默认即可
WxApiUtil.getInstance().init(getApplicationContext(), "appId", "secret", false, true);
工程添加相关的微信回调activity(只需要继承即可,无需书写任何代码逻辑),如
1. 登录和分享
public class WXEntryActivity extends BaseWXEntryActivity {
}
2. 支付
public class WXPayEntryActivity extends BaseWXPayEntryActivity {
}
需要在manifest文件下声明该activity,注意:包名一定要对应微信后台设置的包名,如果不一样就新建包名分支,然后创建该activity。
目录结构为(文件所在包位置和名称都不能改变):
1. 登录和分享: 包名.wxapi.WXEntryActivity
2. 支付:包名.wxapi.WXPayEntryActivity
三、登录、分享和支付的使用
1. 登录使用
WxLoginUtil.logIn(new LoginEntryCallBack() {
@Override
public void succeed(String s) {
//登录过程回调成功 s为微信返回的code
//如果需要在app获取openID,则在此处使用s(code)向微信服务器请求获取openID。
//使用WxApiUtil.getInstance().getAppKey()和WxApiUtil.getInstance().getAppSecret()获取微信的必要参数
}
@Override
public void wxNoInstalled() {
//微信客户端未安装
}
@Override
public void userCancle() {
//用户取消
}
@Override
public void faild(int i) {
//其他类型错误, i为微信返回的错误码
}
});
2. 分享使用,注意由于微信分享变更,分享时只要唤起微信客户端,无论是否真正分享,都会返回成功
WxShareUtil.shareTextMessage("内容", "标题", "描述", ShareType.WXSceneTimeline, new ShareEntryCallBack() {
@Override
public void succeed() {
//分享过程回调成功
}
@Override
public void wxNoInstalled() {
//微信客户端未安装
}
@Override
public void userCancle() {
//用户取消,由于微信调整,用户取消状态不会触发
}
@Override
public void faild(int i) {
//其他类型错误, i为微信返回的错误码
}
});
3. 支付使用
// req.appId = json.getString("appid");
// req.partnerId = json.getString("partnerid");
// req.prepayId = json.getString("prepayid");
// req.nonceStr = json.getString("noncestr");
// req.timeStamp = json.getString("timestamp");
// req.packageValue = json.getString("package");
// req.sign = json.getString("sign");
// 此json文本需要包含以上所需字段,或者使用实体方式,不列举
WxPayUtil.payWeChat("json文本", new PayCallBack() {
@Override
public void succeed() {
//sdk支付成功,向微信服务器查询下具体结果吧
}
@Override
public void wxNoInstalled() {
//微信客户端未安装
}
@Override
public void userCancle() {
//用户取消
}
@Override
public void faild(int i) {
//其他类型错误, i为微信返回的错误码
}
});
四、测试说明
由于微信需要在后台配置签名信息,而测试时不能修改一次打包一次进行测试,所以配置项目的签名信息即可在debug模式下使用正式版签名信息。可在项目配置对话框内设置,不贴出
android {
signingConfigs {
release {
storeFile file('key文件位置,可写相对位置。')
storePassword 'key文件密码'
keyAlias = '打包别名'
keyPassword '别名密码'
}
}
...
buildTypes {
debug {
signingConfig signingConfigs.release
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
}
一般的对微信登录、分享和支付的使用此工具已基本满足
最后附上:项目地址