支付宝分享SDK接入指南—Android

支付宝分享入口

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;
//网页缩略图的分享支持bitmapurl两种方式,直接通过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

分享到生活圈

  1. 检查是否支持发送到生活圈,支付宝在versionCode 84之后支持分享到生活圈,判断是否支持生活圈分享,可以使用下面的接口进行判断

     api.isZFBAppInstalled() &&api.getZFBVersionCode() >= 84

  2. 生活圈分享目前支持的格式仅仅支持网页分享

    和分享到会话不同的是需要添加参数

    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();

猜你喜欢

转载自blog.csdn.net/l6666_6666/article/details/80017837