1. 申请你的AppID
请到支付宝开放平台应用登记页面进行登记,登记并选择移动应用进行设置后,将获得AppId,可立即用于开发。但应用登记完成后还需要提交审核,只有审核通过的应用才能正式发布使用。
Android申请AppId需要的信息:
应用包名,应用签名MD5,应用图标
2. 搭建开发环境
[1] 在IDE中建立你的工程。
[2] 在工程中新建一个libs目录,将开发工具包中libs目录下的libapshare.jar复制到该目录中(如下图所示,建立了一个名为APShareDemo的工程,并把jar包复制到libs目录下)。
[3] 将libs目录下的libapshare.jar文件添加到工程依赖中
3. 在代码中使用开发工具包
[1] 发送请求到支付宝钱包
现在,你的程序要发送请求到支付宝钱包,可以通过IAPApi的 sendReq方法来实现。
boolean sendReq(BaseReq req);
sendReq是第三方app主动发送消息给支付宝钱包,发送完成之后会切回到第三方app界面。
sendReq的实现示例,如下图所示:
//初始化一个APTextObject对象
APTextObject textObject = newAPTextObject();
textObject.text =text;
//用APTextObject对象初始化一个APMediaMessage对象
APMediaMessage mediaMessage = newAPMediaMessage();
mediaMessage.mediaObject = textObject;
//构造一个Req
SendMessageToZFB.Req req = newSendMessageToZFB.Req();
req.message = mediaMessage;
//调用api接口发送消息到支付宝
api.sendReq(req);
[2] 接收支付宝钱包的返回值
如果你的程序需要接收支付宝钱包发送的请求,或者接收发送到支付宝钱包请求的响应结果,需要下面3步操作:
a. 在你的包名相应目录下新建一个apshare包,并在该apshare目录下新增一个ShareEntryActivity类,该类继承自Activity(例如应用程序的包名为com.alipay.share,则新添加的类如下图所示)
并在AndroidManifest文件里面加上exported属性,设置为true,例如:
<activityandroid:name=".apshare.ShareEntryActivity"
android:exported="true">
b. 实现IAPAPIEventHandler接口,发送到支付宝钱包请求的响应结果将回调到onResp方法
c. 在ShareEntryActivity中将接收到的intent及实现了IAPAPIEventHandler接口的对象传递给IAPApi接口的handleIntent方法,示例如下图:
api.handleIntent(intent, apiEventHandler);
应用请求支付宝钱包的响应结果将通过onResp回调。
注意
如果需要混淆代码,为了保证sdk的正常使用,需要在proguard.cfg加上下面两行配置:
-keep class com.alipay.share.sdk.** {
*;
}
4. 判断当前设备是否支持分享
支付宝钱包从9.0版本开始支持分享,api中提供了接口来判断当前设备是否能够支持分享到支付宝钱包
[1]判断当前设备是否已经安装支付宝钱包
//判断当前是被是否已经安装支付宝钱包
boolean isZFBInstalled = api.isZFBSupportAPI();
[2]判断当前设备是否支持分享到支付宝(已经安装支付宝&&支付宝版本支持分享)
//判断当前设备是否支持分享到支付宝钱包
boolean isZFBSupportApi = api.isZFBSupportAPI();
5. 分享其他类型
9.0版本支付宝钱包支持的分享类型如下
文本 (APTextObject)
网页Card (APWebPageObject)
图片 (APImageObject)
[1] 文本消息的发送请参照3[1]的示例
[2] 发送网页Card
//初始化一个APWebPageObject对象 APWebPageObject webPageObject = new APWebPageObject(); webPageObject.webpageUrl = webUrl; //用APWebPageObject对象初始化一个APMediaMessage对象 APMediaMessage webMessage = new APMediaMessage(); webMessage.mediaObject = webPageObject; webMessage.title = title; webMessage.description = desc; //网页缩略图的分享支持bitmap和url两种方式,直接通过bitmap传递时bitmap最大为32K webMessage.thumbUrl = thumbUrl; webMessage.setThumbImage(bitmap);
bitmap.recycle();
//构造一个Req SendMessageToZFB.Req webReq = new SendMessageToZFB.Req(); webReq.message = webMessage; webReq.transaction = buildTransaction("webpage"); //调用api接口发送消息到支付宝 api.sendReq(webReq);
[3] 分享图片
//初始化一个APImageObject对象,支持三种方式分享图片,本地文件路径,图片二进制流,网上图片url,选取最方便的一个即可 APImageObject imageObject = new APImageObject(); //本地图片路径分享 imageObject.setImagePath(path); //图片二进制流分享 imageObject.imageData = bitmapByte; //图片URL分享 imageObject.imageUrl = imageUrl; //用APImageObject对象初始化一个APMediaMessage对象 APMediaMessage mediaMessage = new APMediaMessage(); mediaMessage.mediaObject = imageObject; //构造一个Req SendMessageToZFB.Req req = new SendMessageToZFB.Req(); req.message = mediaMessage; req.transaction = buildTransaction("image"); //调用api接口发送消息到支付宝 api.sendReq(req);
至此,你已经能够使用支付宝分享SDK的所有内容了,更多内容,可以参考Android分享开发工具包中的分享Demo
分享到生活圈
检查是否支持发送到生活圈,支付宝在versionCode 84之后支持分享到生活圈,判断是否支持生活圈分享,可以使用下面的接口进行判断
api.isZFBAppInstalled() &&api.getZFBVersionCode() >= 84
生活圈分享目前支持的格式仅仅支持网页分享
和分享到会话不同的是需要添加参数
webReq.scene= SendMessageToZFB.Req.ZFBSceneTimeLine;
完整代码如下
APWebPageObject webPageObject = new APWebPageObject(); webPageObject.webpageUrl = url.getText().toString(); APMediaMessage webMessage = new APMediaMessage(); webMessage.title = title.getText().toString(); webMessage.description = desc.getText().toString(); webMessage.mediaObject = webPageObject; webMessage.thumbUrl = thumbUrl.getText().toString(); SendMessageToZFB.Req webReq = new SendMessageToZFB.Req(); webReq.message = webMessage; webReq.transaction = buildTransaction("webpage"); webReq.scene = timelineChecked.isChecked() ? SendMessageToZFB.Req.ZFBSceneTimeLine : SendMessageToZFB.Req.ZFBSceneSession; webReq.scene = SendMessageToZFB.Req.ZFBSceneTimeLine; api.sendReq(webReq); finish();