效果图
源码
版本
- 华为: 2.6.3.301
- QQ: 3.3.3 (6008)
- 微博: 4.3.9
- 微信: 5.4.0
- 银联: 3.4.1
- 支付宝: 15.6.4
- OPPO:2.0.0
集成
-
添加仓库地址
maven { url "https://dl.bintray.com/thelasterstar/maven/" } // 微博 aar maven { url 'http://developer.huawei.com/repo/' } // 华为仓库 maven { url 'https://dl.bintray.com/wenjie/maven' }
-
根据要集成的第三方库添加依赖
api 'com.enowr.android:Auth:0.0.7' api 'com.enowr.android:AuthHW:0.0.7' api 'com.enowr.android:AuthQQ:0.0.7' api 'com.enowr.android:AuthWB:0.0.7' api 'com.enowr.android:AuthWX:0.0.7' api 'com.enowr.android:AuthYL:0.0.7' api 'com.enowr.android:AuthZFB:0.0.7' api 'com.enowr.android:AuthOPPO:0.0.7'
-
Manifest
-
混淆
# Auth -keep class com.enowr.** {*;} # 华为 -ignorewarning -keepattributes *Annotation* -keepattributes Exceptions -keepattributes InnerClasses -keepattributes Signature -keepattributes SourceFile,LineNumberTable -keep class com.hianalytics.android.**{*;} -keep class com.huawei.updatesdk.**{*;} -keep class com.huawei.hms.**{*;} -keep class com.huawei.android.hms.agent.**{*;} # QQ -keep class com.tencent.open.TDialog$* -keep class com.tencent.open.TDialog$* {*;} -keep class com.tencent.open.PKDialog -keep class com.tencent.open.PKDialog {*;} -keep class com.tencent.open.PKDialog$* -keep class com.tencent.open.PKDialog$* {*;} # 微博 -keep class com.sina.weibo.sdk.** {*;} # 微信 -keep class com.tencent.mm.opensdk.** {*;} -keep class com.tencent.wxop.** {*;} -keep class com.tencent.mm.sdk.** {*;} # 银联 -keep public class com.unionpay.uppay.net.HttpConnection {public
;} -keep public class com.unionpay.uppay.net.HttpParameters {public ;} -keep public class com.unionpay.uppay.model.BankCardInfo {public ;} -keep public class com.unionpay.uppay.model.PAAInfo {public ;} -keep public class com.unionpay.uppay.model.ResponseInfo {public ;} -keep public class com.unionpay.uppay.model.PurchaseInfo {public ;} -keep public class com.unionpay.uppay.util.DeviceInfo {public ;} -keep public class com.unionpay.uppay.util.PayEngine { public ; native ; } -keep public class com.unionpay.utils.UPUtils {native ;} # 支付宝 -keep class com.alipay.android.app.IAlixPay{*;} -keep class com.alipay.android.app.IAlixPay$Stub{*;} -keep class com.alipay.android.app.IRemoteServiceCallback{*;} -keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;} -keep class com.alipay.sdk.app.PayTask{ public *;} -keep class com.alipay.sdk.app.AuthTask{ public *;} -keep class com.alipay.sdk.app.H5PayCallback { ; ; } -keep class com.alipay.android.phone.mrpc.core.** { *; } -keep class com.alipay.apmobilesecuritysdk.** { *; } -keep class com.alipay.mobile.framework.service.annotation.** { *; } -keep class com.alipay.mobilesecuritysdk.face.** { *; } -keep class com.alipay.tscenter.biz.rpc.** { *; } -keep class org.json.alipay.** { *; } -keep class com.alipay.tscenter.** { *; } -keep class com.ta.utdid2.** { *;} -keep class com.ut.device.** { *;} # SDK 包可能不包含 utdid -dontwarn com.ta.utdid2.** -dontwarn com.ut.device.** # SDK 包可能不包含 securitysdk -dontwarn com.alipay.mobilesecuritysdk.** # OPPO -keep class com.nearme.** {*;} -
初始化
Auth.init() .setHWAppID("") .setHWKey("") .setHWMerchantID("") .setQQAppID("") .setWXAppID("") .setWXSecret("") .setWBAppKey("") .setWBRedirectUrl("") .setWBScope("") .setOPPOAppSecret("secret") .build(); // 如果使用华为支付功能, 还需要在 MainActivity 里初始化华为 Auth.withHW(context).initHW(activity); // OPPO 要求使用OPPO 自带的退出功能 Auth.withOPPO(context).exit(activity); // 使用微信相关功能 // 包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增两个WXPayEntryActivity、WXEntryActivity类,继承自AuthActivity
使用
public void hwLogin() {
Auth.withHW(this)
.loginForceLogin(false) // 当force为false时,错误码为2001、2002时,会再次以参数为ture尝试调用一次
.login(mCallback);
}
public void hwPay() {
Auth.withHW(this)
.payAmount("")
.payApplicationId("")
.payChannel(1)
.payCountry("")
.payCurrency("")
.payExtReserved("")
.payMerchantId("")
.payMerchantName("")
.payProductDesc("")
.payProductName("")
.payPublicKey("")
.payRequestId("")
.payServiceCatalog("")
.paySign("")
.payUrl("")
.payVersion("")
.pay(mCallback);
}
public void hwRouse() {
Auth.withHW(this)
.rouseAmount("")
.rouseApplicationId("")
.rouseChannel(1)
.rouseCountry("")
.rouseCurrency("")
.rouseExtReserved("")
.rouseMerchantId("")
.rouseMerchantName("")
.rouseProductDesc("")
.rouseProductName("")
.rousePublicKey("")
.rouseRequestId("")
.rouseServiceCatalog("")
.rouseSign("")
.rouseUrl("")
.rouseVersion("")
.rouseTradeType("")
.rouse(mCallback);
}
public void oppoPay() {
Auth.withOPPO(this)
.payAmount(1)
.payAttach("attach")
.payOrderId(String.valueOf(System.currentTimeMillis()))
.payProductName("test")
.payProductDesc("test")
.payCallbackUrl("")
.payUseCachedChannel(false)
.pay(mCallback);
}
public void qqLogin() {
Auth.withQQ(this)
.loginQrcode(true)
.login(mCallback);
}
public void qqShareText() {
Auth.withQQ(this)
.shareTextArk("")
.shareTextImage("")
.shareTextName("")
.shareTextQzoneHide(true)
.shareTextSummary("")
.shareTextTargetUrl("")
.shareTextTitle("")
.shareText(mCallback);
}
public void qqShareImage() {
Auth.withQQ(this)
.shareImageArk("")
.shareImagePath("")
.shareImageName("")
.shareImageQzoneHide(true)
.shareImage(mCallback);
}
public void qqShareMusic() {
Auth.withQQ(this)
.shareMusicImageUrl("")
.shareMusicSummary("")
.shareMusicArk("")
.shareMusicName("")
.shareMusicQzoneHide(true)
.shareMusicTargetUrl("")
.shareMusicTitle("")
.shareMusicUrl("")
.shareMusic(mCallback);
}
public void qqShareVideo() {
Auth.withQQ(this)
.shareVideoPath("")
.shareVideoBack("")
.shareVideoImageList(null)
.shareVideoScene("")
.shareVideoSummary("")
.shareVideo(mCallback);
}
public void qqShareApp() {
Auth.withQQ(this)
.shareAppName("")
.shareAppImageUrl("")
.shareAppSummary("")
.shareAppTitle("")
.shareAppArk("")
.shareAppQzoneHide(true)
.shareApp(mCallback);
}
public void qqShareQzone() {
Auth.withQQ(this)
.shareToQzoneImageList(null)
.shareToQzoneSummary("")
.shareToQzoneTargetUrl("")
.shareToQzoneTitle("")
.shareToQzone(mCallback);
}
public void qqShareMood() {
Auth.withQQ(this)
.shareToMoodBack("")
.shareToMoodImageList(null)
.shareToMoodScene("")
.shareToMoodSummary("")
.shareToMoodVideoPath("")
.shareToMood(mCallback);
}
public void wbLogin() {
Auth.withWB(this)
.login(mCallback);
}
public void wbShareText() {
Auth.withWB(this)
.shareTextContent("")
.shareTextSummary("")
.shareTextTitle("")
.shareTextUrl("")
.shareText(mCallback);
}
public void wbShareImage() {
Auth.withWB(this)
.shareImageBitmap(null)
.shareImageContent("")
.shareImage(mCallback);
}
public void wbShareMultiImage() {
Auth.withWB(this)
.shareMultiImageContent("")
.shareMultiImageUriList(null)
.shareMultiImage(mCallback);
}
public void wbShareLink() {
Auth.withWB(this)
.shareLinkContent("")
.shareLinkSummary("")
.shareLinkThumbImage(null)
.shareLinkTitle("")
.shareLinkUrl("")
.shareLink(mCallback);
}
public void wbShareVideo() {
Auth.withWB(this)
.shareVideoPath("")
.shareVideoContent("")
.shareVideoSummary("")
.shareVideoTitle("")
.shareVideo(mCallback);
}
public void wbShareToStory() {
Auth.withWB(this)
.shareToStoryImagePath("")
.shareToStoryVideoPath("")
.shareToStory(mCallback);
}
public void wxLogin() {
Auth.withWX(this)
.login(mCallback);
}
public void wxPay() {
Auth.withWX(this)
.payNonceStr("")
.payPackageValue("")
.payPartnerId("")
.payPrepayId("")
.paySign("")
.payTimestamp("")
.pay(mCallback);
}
public void wxRouse() {
Auth.withWX(this)
.rouseUrl("")
.rouse(mCallback);
}
public void wxShareText() {
Auth.withWX(this)
.shareTextSummary("")
.shareTextContent("")
.shareTextThumbData(null)
.shareTextTitle("")
.shareText(mCallback);
}
public void wxShareImage() {
Auth.withWX(this)
.shareImageBitmap(null)
.shareImageSummary("")
.shareImageThumbData(null)
.shareImageTitle("")
.shareImage(mCallback);
}
public void wxShareLink() {
Auth.withWX(this)
.shareLinkThumbData(null)
.shareLinkSummary("")
.shareLinkTitle("")
.shareLinkUrl("")
.shareLink(mCallback);
}
public void wxShareVideo() {
Auth.withWX(this)
.shareVideoThumbData(null)
.shareVideoSummary("")
.shareVideoLowBandUrl("")
.shareVideoTitle("")
.shareVideoUrl("")
.shareVideo(mCallback);
}
public void wxShareMusic() {
Auth.withWX(this)
.shareMusicThumbData(null)
.shareMusicSummary("")
.shareMusicDataUrl("")
.shareMusicLowBandDataUrl("")
.shareMusicLowBandUrl("")
.shareMusicTitle("")
.shareMusicUrl("")
.shareMusic(mCallback);
}
public void wxShareApp() {
Auth.withWX(this)
.shareAppId("")
.shareAppPath("")
.shareAppSummary("")
.shareAppThumbData(null)
.shareAppTitle("")
.shareAppType(1)
.shareAppUrl("")
.shareAppWithShareTicket(true)
.shareApp(mCallback);
}
public void ylPay() {
Auth.withYL(this)
.payOrderInfo("")
.payIsTest(true)
.pay(mCallback);
}
public void zfbPay() {
Auth.withZFB(this)
.payOrderInfo("")
.payIsShowLoading(true)
.pay(mCallback);
}
public void zfbRouse() {
Auth.withZFB(this)
.rouseUrl("")
.rouse(mCallback);
}
返回码
华为
-
QQ
110201:未登陆 110405:登录请求被限制 110404:请求参数缺少appid 110401:请求的应用不存在 110407:应用已经下架 110406:应用没有通过审核 100044:错误的sign 110500:获取用户授权信息失败 110501:获取应用的授权信息失败 110502:设置用户授权失败 110503:获取token失败 110504:系统内部错误
-
微博
C8998: 签名不一致 8000: 没有安装客户端 8001: 非官方客户端
微信
支付宝
OPPO 为离线文档
说明
-
华为:Mac 下集成Agent执行脚本文件没反应。
GetHMSAgent_cn.sh 换行符的原因导致在macos下执行无反映,可通过下列命令替换下换行符:
cat GetHMSAgent_cn.sh | tr "^M" "\n" > GetHMSAgent_cn_new.sh -
华为:同时引入其他第三方华为支持时(如极光的华为推送插件)
禁用华为依赖传递,由于极光插件全量引入了华为SDK,所以全部禁用所有依赖
implementation ('com.enowr.android:AuthHW:0.0.3'){transitive false}
引入极光的华为插件,配置相关配置即可
implementation 'cn.jiguang.sdk.plugin:huawei:3.3.2'