微信支付宝QQ微博分享登陆支付

Social

微信 微博 支付宝 QQ 【 登陆 、分享、支付 原生分享】 。独立library 调用方便 详看文档


social.png

本Library各包均单独使用其中common库必须依赖,
截止2020-05-31,

微博使用最新的9.12.0.aar 。

支付宝sdk aar 。QQ339/微信是最新6.6.4。

银联、QQ、京东 支付后续添加

主要提供服务: 支付: 微信支付,支付宝支付,银联/qq暂未封装入 登录: 支付宝授权,微信授权,qq授权,微博授权 分享: qq分享,qq空间分享,微博分享,微博故事分享,微信分享,微信朋友圈分享 系统原生分享 集成方法1:推荐

 implementation 'com.mhy.social:common:1.2'
 implementation 'com.mhy.social:ali:1.2'
 implementation 'com.mhy.social:wx:1.2'
 implementation 'com.mhy.social:wb:1.2'
 implementation 'com.mhy.social:qq:1.2'
 //没错 1.2就是懒人版,sdk均已内置 仅依赖本库即可

集成方法2:

 //如果需要集成微博 、支付宝 根 添加如下
 allprojects {
  maven { url "https://dl.bintray.com/thelasterstar/maven/" }//微博仓库
  flatDir {
  dirs 'libs'//支付宝aar放在对应libs
  }
 }

//主库必须依赖

 //无论使用本库任一library都必须依赖此library
 //此库未依赖任何第三方,仅支持系统分享、支付宝个人首款码支付,跳转微信扫一扫页面 
  implementation 'com.mhy.social:common:1.2.2'

//以下按需依赖

 //支付宝  
  implementation 'com.mhy.social:ali:1.2.2'
  implementation (name: 'alipaySdk-15.7.6-20200521195109', ext: 'aar')

//QQ

  implementation 'com.mhy.social:qq:1.2.2'
  implementation files('libs/open_sdk_r8353806_lite.jar')
 //微信
  implementation 'com.mhy.social:wx:1.2.2'
  implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.6.4'

//微博 不支持x86
implementation 'com.mhy.social:wb:1.2.2'
implementation 'com.sina.weibo.sdk:core:9.12.0:openDefaultRelease@aar'

//////////////////////////////////////////////////////////////////////////////////////  
**AndroidManifest.xml配置**


<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"/>

<activity
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"/>

<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="tencent换成你的appid" />
</intent-filter>
</activity>

**Application配置**

//集成微信
在你包名下 新建wxapi包里面新建类 分享登陆WXEntryActivity 支付WXPayEntryActivity
两个类按需新建 都建无妨 只需按如下继承即可,不需要其他代码
public class WXEntryActivity extends BaseWXActivity {}
public class WXPayEntryActivity extends BaseWXPayEntryActivity{}

 在你的Application里 onCreate()里  【记得别忘AndroidManifest.xml里添加】
 WxSocial.setWeixinId("你的微信appid");
 QqSocial.setAppId("你的QQ appid");
 WbSocial.setWbApp("2045436852",//你的微博Key
  "http://www.sina.com",//你对应的授权回调
  "email,direct_messages_read,direct_messages_write,"+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
  + "follow_app_official_microblog," + "invitation_write");
  //第三个参数是在微博开放平台为应用申请的高级权限

 支付宝从后端返回拼接字符串》调用的时候传入

App配置

 **先说接收回调数据*******************************
 因微博和QQ需要onActivityresult()返回数据 因此他俩登陆 均使用 AuthApi和ShareApi获取实例后在你当前Activity/ Fragment 中
 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
  //微博和QQ需要
  if (api != null) {
  api.onActivityResult(requestCode, resultCode, data);
  api = null;
  }
  if (spi != null) {
  spi.onActivityResult(requestCode, resultCode, data);
  spi = null;
  }
  super.onActivityResult(requestCode, resultCode, data);
  }
 **然后 所有回调都从以下3个人接口对应出来 只需实现方法即可** 
  //登陆回调
  private AuthApi.OnAuthListener onAuthListener = new AuthApi.OnAuthListener() {
  @Override
  public void onComplete(int type, Object user) {
 //这里根据type使用不同对象 
  switch (type){
  case SocialType.ALIPAY_Auth:
 //                    ali AuthResult
  break;
  case SocialType.QQ_Auth:
 //                    JSONObject data = (JSONObject) user;
 //                    String openID = data.getString("openid");
 //                    String accessToken = data.getString("access_token");
 //                    String expires = data.getString("expires_in");
  break;
  case SocialType.WEIBO_Auth:
 //                    wb(Oauth2AccessToken)user 
  break;
  case SocialType.WEIXIN_Auth:
 //                    wx((WeiXin)user).getCode()
  break;
  }
  Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
  }
 ​
  @Override
  public void onError(int type, String error) {
  Toast.makeText(MainActivity.this, "登录失败:" + error, Toast.LENGTH_SHORT).show();
  }
 ​
  @Override
  public void onCancel(int type) {
  Toast.makeText(MainActivity.this, "登录取消", Toast.LENGTH_SHORT).show();
  }
  };
 ​
  //支付回调
  private PayApi.OnPayListener onPayListener = new PayApi.OnPayListener() {
  @Override
  public void onPayOk() {
  Toast.makeText(MainActivity.this, "支付成功", Toast.LENGTH_SHORT).show();
  }
 ​
  @Override
  public void onPayFail(String code, String msg) {
  Toast.makeText(MainActivity.this, "支付失败:" + msg, Toast.LENGTH_SHORT).show();
  }
  };
  //分享回调
  private ShareApi.OnShareListener onShareListener = new ShareApi.OnShareListener() {
  @Override
  public void onShareOk(int type) {
  Toast.makeText(MainActivity.this, "分享成功", Toast.LENGTH_SHORT).show();
  }
 ​
  @Override
  public void onShareFail(int type, String msg) {
  Toast.makeText(MainActivity.this, "分享失败:" + msg, Toast.LENGTH_SHORT).show();
  }
  };
 ​```
  **再说使用*******************************

//微信分享
findViewById(R.id.btn_share_wx).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
WxShare mShareApi = new WxShare(MainActivity.this, ShareEntity.TYPE_WX, onShareListener);
mShareApi.doShare(createWXShareEntity(false));
v.startAnimation(shake);
}
});
//微信朋友圈分享
findViewById(R.id.btn_share_wx_circle).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
WxShare mShareApi = new WxShare(MainActivity.this, ShareEntity.TYPE_PYQ, onShareListener);
mShareApi.doShare(createWXShareEntity(true));
v.startAnimation(shake);
}
});
//微信登录
findViewById(R.id.btn_login_wx).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// WxAuth wxAuth=new WxAuth(MainActivity.this, onAuthListener);
// wxAuth.doAuth();
WxAuth authApi = new WxAuth(MainActivity.this, onAuthListener);
authApi.doAuth();
v.startAnimation(shake);

}
});
//qq登录
findViewById(R.id.btn_login_qq).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
QqAuth authApi = new QqAuth(MainActivity.this, onAuthListener);
authApi.doAuth(false);
v.startAnimation(shake);
api = authApi;//onActivityResult()内使用
}
});
//原生分享
findViewById(R.id.btn_share_local).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.startAnimation(shake);
ShareUtil shareUtil = new ShareUtil(MainActivity.this);
// shareUtil.shareFile(new File(getExternalFilesDir(null) + "/ccc.JPG"));
shareUtil.shareText("【flutter凉了吗?】知乎:… https://www.zhihu.com/question/374113031/answer/1253795562?utm_source=com.eg.android.alipaygphone&utm_medium=social&utm_oi=1020568397012209664 (分享自知乎网)");
}
});
//长按 打开小程序
findViewById(R.id.btn_mini_qq).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.startAnimation(shake);
QqAuth authApi = new QqAuth(MainActivity.this, onAuthListener);
authApi.doOpenMiniApp("1108108864", "pages/tabBar/index/index", "release");
}
});
//qq分享
findViewById(R.id.btn_share_qq).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
QqShare mShareApi = new QqShare(MainActivity.this, SocialType.QQ_Share, onShareListener);
mShareApi.doShare(QQShareEntity.createImageInfo(getExternalFilesDir(null) + "/aaa.png", "app"));
spi = mShareApi;
v.startAnimation(shake);
}
});
//qq空间分享
findViewById(R.id.btn_share_qq_zone).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ArrayList<String> imgUrls = new ArrayList<>();
imgUrls.add(getExternalFilesDir(null) + "/aaa.png");
imgUrls.add(getExternalFilesDir(null) + "/bbb.jpg");
QqShare mShareApi = new QqShare(MainActivity.this, SocialType.QQ_ZONE_Share, onShareListener);
mShareApi.doShare(QQShareEntity.createImageTextInfoToQZone("toptitle", "http://www.baidu.com", imgUrls, "summary", "我"));
spi = mShareApi;
v.startAnimation(shake);
}
});
//支付宝登陆
findViewById(R.id.btn_login_ali).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AliAuth authApi = new AliAuth(MainActivity.this, onAuthListener);
authApi.doAuth("");
v.startAnimation(shake);
}
});
//支付宝支付
findViewById(R.id.btn_pay_alipay).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AliPay authApi = new AliPay(MainActivity.this, onPayListener);
authApi.doPay(new AliPayContent(""));
v.startAnimation(shake);
}
});
//微信支付
findViewById(R.id.btn_pay_wx).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
JSONObject jsonObject = new JSONObject("source json data...");
//服务端获取
jsonObject = jsonObject.getJSONObject("pay_message");

WxPayContent req = new WxPayContent(
jsonObject.getString("appid"),
jsonObject.getString("partnerid"),
jsonObject.getString("prepayid"),
jsonObject.getString("packagestr"),
jsonObject.getString("noncestr"),
jsonObject.getString("timestamp"),
jsonObject.getString("sign"));
PayApi wxApi = new WxPay(MainActivity.this, onPayListener);
wxApi.doPay(req);
v.startAnimation(shake);
} catch (JSONException ignored) {

}
}
});
//小程序分享
findViewById(R.id.btn_mini_wx).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.startAnimation(shake);
// WxShare wxShare=new WxShare(MainActivity.this,SocialType.WEIXIN_Share,onShareListener);
// wxShare.doShare(WxShareEntity.createMiniApp( miniAppid, miniPath, webpageUrl, title, desc, imgUrl));

WxAuth wxAuth = new WxAuth(MainActivity.this, onAuthListener);
wxAuth.doOpenMiniApp("gh_d43f693ca31f", "", WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE);
}
});
//微博分享
findViewById(R.id.btn_share_weibo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
WbShare wbShare = new WbShare(MainActivity.this, SocialType.WEIBO_Share, onShareListener);
wbShare.doShareStory(WbShareEntity.createImageStory(getExternalFilesDir(null) + "/aaa.png"));
spi = wbShare;
v.startAnimation(shake);
}
});
//微博登录
findViewById(R.id.btn_login_weibo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
WbAuth wbAuth = new WbAuth(MainActivity.this, onAuthListener);
wbAuth.doAuth();
api = wbAuth;
v.startAnimation(shake);
}
});

  关于分享 使用对应ShareEntity  的createxxx 方法传参调用对应分享内容包装W
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342