# SDKDemo **Repository Path**: zhongrui_developer/SDKDemo ## Basic Information - **Project Name**: SDKDemo - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-12-19 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #

SDK集成

* [支付宝](#zfb) * [微信](#wx) * [相关配置](#wx) * [1.支付](#wx1) * [2.分享](#wx2) * [2.登录](#wx3) * [QQ](#qq) * [相关配置](#qq) * [1.分享](#qq1) * [2.登录](#qq2) [ ![Download](https://api.bintray.com/packages/zhongrui/mylibrary/sdklibrary/images/download.svg) ](https://bintray.com/zhongrui/mylibrary/sdklibrary/_latestVersion)<--版本号 ``` compile 'com.github:sdklibrary:版本号看上面' ``` #

支付宝支付

```xml ``` ```java /********************************app本地生成支付订单信息传参******************************************/ MyAliOrderBean aliBean=new MyAliOrderBean(); aliBean.setAppId(appid); aliBean.setPid(pid); aliBean.setSiYao(rsa2); //如果在application初始化上述三个参数,则可以不用每次调用set方法赋值 //MyAliPay.setConfig(appid,pid,siyao); aliBean.setNotifyUrl(notifyUrl); aliBean.setOut_trade_no(orderNo); //订单金额(单位:元) aliBean.setTotal_amount(totalPrice); aliBean.setSubject("XXX订单"); aliBean.setBody("XXX订单交易"); /********************************服务器生成支付订单信息传参*********************************************/ MyAliOrderBean aliBean=new MyAliOrderBean(); aliBean.setOrderInfo(orderInfo); /*如果getOrderInfo()不为空则为服务器生成订单,否则属于app本地生成订单信息*/ MyAliPay.newInstance(mContext).startPay(aliBean, new MyAliPayCallback() { @Override public void paySuccess(PayResult result) { // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。(官方原话) //支付成功 } @Override public void payFail() { //支付失败 } @Override public void payCancel() { //支付取消 } }); ``` | √:必传参数
×:非必传参数
o:可在application初始化 | 说明 | 本地生成支付订单 | 服务器生成支付订单 | |-----------------------|----------------------------------------------------------------------------|:----------------:|:------------------:| | setAppId | 开发者应用id| √-o | × | | setNotifyUrl | 支付宝通知商户服务器的地址 | √ | × | | setPid | 商户号 | √-o | × | | setSiYao | 私钥 | √-o | × | | setOut_trade_no | 自己服务器生成的订单号 | √ | × | | setTotal_amount | 订单金额(单位:元)精确到小数点后两位
取值范围[0.01,100000000] | √ | × | | setSubject | 商品的标题/交易标题/订单标题/订单关键字等 | √ | × | | setBody | 订单具体描述信息 | √ | × | | setOrderInfo | 请求支付的订单信息 | × | √ | **上述参数中的appid,pid,siyao可在application中调用MyAliPay.setConfig(APPID,PID,SIYAO)设置** #### 支付宝官方混淆规则 ```java -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

**[返回目录](#top)** ```xml ```
```java //在项目包名下新建一个wxapi文件夹,里面新建WXEntryActivity(用于登录和分享),WXPayEntryActivity(用于支付) //分别继承MyWXEntryActivity和MyWXPayEntryActivity //登录分享 public class WXEntryActivity extends MyWXEntryActivity{ @Override protected int getContentView() { return 0; } @Override protected void initView() { } } //支付 public class WXPayEntryActivity extends MyWXPayEntryActivity { @Override protected int getContentView() { return 0; } @Override protected void initView() { } } ``` #### 微信官方混淆规则 ```java -keep class com.tencent.mm.opensdk.** { *; } -keep class com.tencent.wxop.** { *; } -keep class com.tencent.mm.sdk.** { *; } -keep class com.tencent.mm.opensdk.** { *; } -keep class com.tencent.wxop.** { *; } -keep class com.tencent.mm.sdk.** { *; } ``` ####

微信支付

**[返回目录](#top)** ```java /********************************app本地生成支付订单信息传参******************************************/ MyWXOrderBean wxOrderBean=new MyWXOrderBean(); wxOrderBean.setAppId(appId); wxOrderBean.setMch_id(mch_id); wxOrderBean.setMiyao(miyao); //如果在application初始化上述三个参数,则可以不用每次调用set方法赋值 //MyWXPay.setConfig(appId,mch_id,miyao); wxOrderBean.setNotifyUrl(notifyUrl); wxOrderBean.setBody(body); wxOrderBean.setOut_trade_no(out_trade_no); //订单金额,单位:分 wxOrderBean.setTotalFee(totalFee); //ip和nonceStr两个参数在支付之前自动赋值,可以不用手动赋值 wxOrderBean.ip="设备ip地址"; wxOrderBean.nonceStr="随机数"; /********************************服务器生成支付订单信息传参*********************************************/ MyWXOrderBean wxOrderBean=new MyWXOrderBean(); wxOrderBean.setAppId(appId); wxOrderBean.setMch_id(mch_id); wxOrderBean.setMiyao(miyao); wxOrderBean.setPrepayId(prepayId); wxOrderBean.setSign(sign); //packageValue默认为Sign=WXPay wxOrderBean.setPackageValue(packageValue); wxOrderBean.setTimeStamp(timeStamp); MyWXPay.newInstance(this).startPay(wxOrderBean, new MyWXPayCallback() { @Override public void paySuccess() { //支付成功 } @Override public void payFail() { //支付失败 } @Override public void payCancel() { //支付取消 } }); //如果支付时不添加回调则需要按照微信官方的做法在WXPayEntryActivity中重写onResp(BaseResp resp)方法处理 MyWXPay.newInstance(this).startPay(wxOrderBean); ``` **如果微信分享、支付、登录不成功,请仔细检查相关配置(微信开放平台是否配置相关信息,应用包名、应用签名是否配置正确)和app是否进行签名** | √:必传参数
×:非必传参数
o:可在application初始化 | 说明 | 本地生成支付订单 | 服务器生成支付订单 | |-------------------------|------------------------------------------------------------------------------|:----------------:|:------------------:| | setAppId | 开发者应用id | √-o | √-o | | setMch_id | 商户号 | √-o | √-o | | setMiyao | 密钥 | √-o | √-o | | setNotifyUrl | 微信通知商户服务器的地址 | √ | × | | setOut_trade_no | 自己服务器生成的订单号 | √ | × | | setTotalFee | 订单金额(单位:分) | √ | × | | setBody | 订单具体描述信息 | √ | × | | ip | 设备ip | √ | × | | nonceStr | 随机数 | √ | × | | setPrepayId | 微信支付订单号 | × | √ | | setSign | 请求微信支付所需要的签名(不是app签名) | × | √ | | setPackageValue | 默认值:Sign=WXPay | × | √ | | setTimeStamp | 时间戳 | × | √ | **上述参数中的APPID,MCH_ID,MIYAO可在application中调用MyWXPay.setConfig(APPID,MCH_ID,MIYAO)设置** ####

微信分享

**[返回目录](#top)** ```java //分享网页 MyWXWebHelper helper=new MyWXWebHelper(scene); //scene参数说明 //分享好友:ShareParam.friend: //分享朋友圈:ShareParam.friendCircle //收藏:ShareParam.favorite helper.setBitmap(bitmap); //或者helper.setBitmapResId(R.mipmap.ic_launcher); helper.setUrl("目标网址"); helper.setTitle("分享的标题"); helper.setDescription("分享的内容"); MyWXShare.newInstance(this).shareWeb(helper, new MyWXShareCallback() { @Override public void shareSuccess() { //分享成功 } @Override public void shareFail() { //分享失败 } @Override public void shareCancel() { //分享取消 } }); ``` | MyWXWebHelper(分享网页) | 说明 | 是否必填 | |-----------------------------|----------|:--------:| | setUrl | 网页url | √ | | setTitle | 网页标题 | √ | | setDescription | 网页描述 | √ | | setBitmap或者setBitmapResId | 缩略图 | √ | | 图片大小不能超过32K | | | | MyWXTextHelper(分享文本) | 说明 | 是否必填 | |----------------|--------------------------|:--------:| | setText | 文本内容 | √ | | setTitle | 文本标题 | × | | setDescription | 文本描述(默认为文本内容) | × | | MyWXImageHelper(分享图片) | 说明 | 是否必填 | |---------------------------|----------|:--------:| | setBitmap或setBitmapResId | 图片 | √ | | setDstWidth(默认150) | 缩略图宽度 | √ | | setDstHeight(默认150) | 缩略图高度 | √ | | MyWXVideoHelper(分享视频) | 说明 | 是否必填 | |---------------------------|------------|:--------:| | setUrl | 视频url | √ | | setTitle | 视频标题 | √ | | setDescription | 视频描述 | √ | | setBitmap或setBitmapResId | 缩略图 | √ | | setDstWidth(默认150) | 缩略图宽度 | √ | | setDstHeight(默认150) | 缩略图高度 | √ | | MyWXWebHelper(分享音乐) | 说明 | 是否必填 | |---------------------------|------------|:--------:| | setUrl | 音乐url | √ | | setTitle | 音乐标题 | √ | | setDescription | 音乐描述 | √ | | setBitmap或setBitmapResId | 缩略图 | √ | | MyWXVideoHelper | | | | setDstWidth(默认150) | 缩略图宽度 | √ | | setDstHeight(默认150) | 缩略图高度 | √ | ####

微信登录

**[返回目录](#top)** ```java /*判断是否安装微信*/ MyWXShare.newInstance(this).isInstall() /*不用支付功能secret可传null,建议放到application初始化*/ MyWXShare.setAppId(appid,secret); MyWXShare.newInstance(this).login(new MyWXLoginCallback() { @Override public void loginSuccess(MyWXUserInfo userInfo) { //登录成功 } @Override public void loginFail() { //登录失败 } @Override public void loginCancel() { //取消登录 } }); ``` | MyWXUserInfo | 返回用户信息说明 | |------------------|---------------------------------------------------------------------------------------------| | access_token | 接口调用凭证 | | refresh_token | 用户刷新access_token | | expires_in | access_token接口调用凭证超时时间,单位(秒) | | openid | 授权用户唯一标识(同一账户,ios和android登录会返回不同openid) | | unionid | 用户统一标识,针对一个微信开放平台帐号下的应用,同一用户(ios和android登录)返回的unionid是唯一的 | | nickname | 普通用户昵称 | | headimgurl | 用户头像,用户没有头像时该项为空 | | sex | 普通用户性别,0未设置性别,1为男性,2为女性 | | country | 国家,如中国为CN | | province | 普通用户个人资料填写的省份 | | city | 普通用户个人资料填写的城市 | | scope | 用户授权的作用域,使用逗号(,)分隔 | | language | 国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语,默认为zh-CN | | privilege | 用户特权信息,json数组,如微信沃卡用户为(chinaunicom) | #

QQSDK

**[返回目录](#top)** ```java //在分享或者登录的Activity中配置,建议在父类统一配置,不配置会导致回调函数不执行 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); MyQQActivityResult.onActivityResult(requestCode,resultCode,data); } ``` ```xml ``` ####

QQ分享

**[返回目录](#top)** ```java //返回Tencent类的实例:MyQQShare.newInstance(this).getTencent(); //检查是否有安装QQ MyQQShare.newInstance(this).isInstall() MyQQWebHelper helper=new MyQQWebHelper(scene); //scene参数说明 //QQ好友:ShareParam.QQ //空间:ShareParam.QZONE MyQQShare.newInstance(this).shareWeb(helper, new MyQQShareListener() { @Override public void doComplete(Object o) { //分享成功 } @Override public void doError(UiError uiError) { //分享失败 } @Override public void doCancel() { //取消分享 } }); ``` | MyQQWebHelper--(图文分享) | 说明 | 是否必填 | |-------------------------|---------------------------------------|:--------:| | setTitle | 标题 | √ | | setDescription | 摘要 | × | | setUrl | 页面链接 | √ | | setImagePath | 图片(手机本地图片路径或者网络图片url) | × | | MyQQImageHelper(图片分享) | 说明 |是否必填 | |---------------------------|---------------------------------------|:--------:| | setImagePath | 需要分享的本地图片路径(不能是网络图片url) | √ | | MyQQAudioHelper(音乐分享) | 说明 | 是否必填 | |---------------------------|-----------------------------------------------------|:--------:| | setTitle | 标题 | √ | | setDescription | 摘要 | × | | setUrl | 页面跳转链接 | √ | | setAudioUrl | 音乐文件的远程链接, 以URL的形式传入, 不支持本地音乐 | √ | | setImagePath | 分享图片的URL或者本地路径 | × | | setAppName | 应用名称 | × | ####

QQ登录

**[返回目录](#top)** ```java /*建议放到application初始化*/ MyQQShare.setAppId(appid); MyQQShare.newInstance(this).login(new MyQQLoginCallback() { @Override public void loginSuccess(MyQQUserInfo userInfo) { //登录成功 } @Override public void loginFail() { //登录失败 } @Override public void loginCancel() { //取消登录 } }); ``` | MyQQUserInfo | 返回用户信息说明 | |--------------|--------------------------------------------------------------------------------------------------------------| | access_token | 接口调用凭证 | | pay_token | | | expires_in | access_token接口调用凭证超时时间,单位(秒) | | openid | 授权用户唯一标识(同一账户,ios和android登录会返回不同openid) | | unionid | 用户统一标识,ios和android数据未申请打通时为空,打通之后不为空,且同一用户(ios和android登录)返回的unionid是唯一的 | | nickname | 用户昵称 | | userImageUrl | 用户头像 | | sex | 性别"男"或"女" |