社交分享功能是指第三方App通过接入该功能,让用户可以从App分享图片、网页至支付宝。
支付宝好友分享功能目前支持图片、网页共两种类型。
发送到聊天界面——ZFBSceneSession
发送到生活圈——ZFBSceneTimeline(仅支持网页消息)
从支付宝9.9.5版本(VersionCode为101)开始,您的代码中无需再添加场景码,分享到支付宝后会让用户选择分享渠道(聊天、生活动态 or 圈子)。
a)发送文本消息您会使用到开发工具包中的如下类,来实现发送请求:
//社交分享开放工具接口类,便于对社交分享开放接口的调用 import com.alipay.share.sdk.openapi.IAPApi; //社交分享开放工具工厂类,用于创建工具实例 import com.alipay.share.sdk.openapi.APAPIFactory; //普通文本消息内容定义类 import com.alipay.share.sdk.openapi.APTextObject; //分享消息定义类 import com.alipay.share.sdk.openapi.APMediaMessage; //分享消息请求包装类 import com.alipay.share.sdk.openapi.SendMessageToZFB;
代码示例:
//创建工具对象实例,此处的APPID为上文提到的,申请应用生效后,在应用详情页中可以查到的支付宝应用唯一标识 IAPApi api = APAPIFactory.createZFBApi(getApplicationContext(),APPID,false); //初始化APTextObject,组装文本消息内容对象 APTextObject textObject = new APTextObject(); textObject.text = "需要发送的内容"; //初始化APMediaMessage ,组装分享消息对象 APMediaMessage mediaMessage = new APMediaMessage(); mediaMessage.mediaObject = textObject; //将分享消息对象包装成请求对象 SendMessageToZFB.Req req = new SendMessageToZFB.Req(); req.message = mediaMessage; //发送请求 api.sendReq(req);b)发送网页Card
您会使用到开发工具包中的如下类,来实现发送请求:
//社交分享开放工具接口类,便于对社交分享开放接口的调用 import com.alipay.share.sdk.openapi.IAPApi; //社交分享开放工具工厂类,用于创建工具实例 import com.alipay.share.sdk.openapi.APAPIFactory; //网页Card消息内容定义类 import com.alipay.share.sdk.openapi.APWebpageObject; //分享消息定义类 import com.alipay.share.sdk.openapi.APMediaMessage; //分享消息请求包装类 import com.alipay.share.sdk.openapi.SendMessageToZFB;
代码示例:
//创建工具对象实例,此处的APPID为上文提到的,申请应用生效后,在应用详情页中可以查到的支付宝应用唯一标识 IAPApi api = APAPIFactory.createZFBApi(getApplicationContext(),APPID,false); //初始化一个APWebPageObject对象,组装网页Card内容对象 APWebPageObject webPageObject = new APWebPageObject(); webPageObject.webpageUrl = "http://www.yoururl.com/"; ////初始化APMediaMessage ,组装分享消息对象 APMediaMessage webMessage = new APMediaMessage(); webMessage.mediaObject = webPageObject; webMessage.title = "分享标题"; webMessage.description = "分享内容描述"; //网页缩略图的分享支持bitmap和url两种方式,直接通过bitmap传递时bitmap最大为32K //a)url方式 //webMessage.thumbUrl = "http://www.yoururl.com/thumb.jpg"; //b)Bitmap方式 //webMessage.setThumbImage(bitmap); //bitmap.recycle(); webMessage.thumbUrl = "http://www.yoururl.com/thumb.jpg"; //将分享消息对象包装成请求对象 SendMessageToZFB.Req webReq = new SendMessageToZFB.Req(); webReq.message = webMessage; webReq.transaction = "WebShare"+String.valueOf(System.currentTimeMillis()); //发送请求 api.sendReq(req);c)发送图片分享
您会使用到开发工具包中的如下类,来实现发送请求:
//社交分享开放工具接口类,便于对社交分享开放接口的调用 import com.alipay.share.sdk.openapi.IAPApi; //社交分享开放工具工厂类,用于创建工具实例 import com.alipay.share.sdk.openapi.APAPIFactory; //图片消息内容定义类 import com.alipay.share.sdk.openapi.APImageObject; //分享消息定义类 import com.alipay.share.sdk.openapi.APMediaMessage; //分享消息请求包装类 import com.alipay.share.sdk.openapi.SendMessageToZFB;
代码示例:
//创建工具对象实例,此处的APPID为上文提到的,申请应用生效后,在应用详情页中可以查到的支付宝应用唯一标识 IAPApi api = APAPIFactory.createZFBApi(getApplicationContext(),APPID,false); //初始化一个APImageObject对象,组装图片内容对象 APImageObject imageObject = new APImageObject(); //支持三种方式分享图片,本地文件路径,图片二进制流,网上图片url,选取最方便的一个即可 //a)本地图片路径分享 //imageObject.setImagePath("/DCIM/Camera/test.jpg"); //b)图片二进制流分享 //imageObject.imageData = bitmapByte; //c)图片URL分享 //imageObject.imageUrl = "http://www.yoururl.com/test.jpg"; imageObject.imageUrl = "http://www.yoururl.com/test.jpg"; //初始化一个APMediaMessage对象 ,组装分享消息对象 APMediaMessage mediaMessage = new APMediaMessage(); mediaMessage.mediaObject = imageObject; //将分享消息对象包装成请求对象 SendMessageToZFB.Req req = new SendMessageToZFB.Req(); req.message = mediaMessage;
req.transaction = "ImageShare"+String.valueOf(System.currentTimeMillis()); //发送请求 api.sendReq(req);
从支付宝9.9.5版本(VersionCode为101)开始,不用显式增加scene场景码来标识分享到支付宝生活圈,分享到支付宝后会让用户选择分享渠道(聊天、生活动态 or 圈子)。
您会使用到开发工具包中的如下类,来实现发送请求:
//社交分享开放工具接口类,便于对社交分享开放接口的调用 import com.alipay.share.sdk.openapi.IAPApi; //社交分享开放工具工厂类,用于创建工具实例 import com.alipay.share.sdk.openapi.APAPIFactory; //网页Card消息内容定义类 import com.alipay.share.sdk.openapi.APWebpageObject; //分享消息定义类 import com.alipay.share.sdk.openapi.APMediaMessage; //分享消息请求包装类 import com.alipay.share.sdk.openapi.SendMessageToZFB;
代码示例:
//创建工具对象实例,此处的APPID为上文提到的,申请应用生效后,在应用详情页中可以查到的支付宝应用唯一标识 IAPApi api = APAPIFactory.createZFBApi(getApplicationContext(),APPID,false); //初始化一个APWebPageObject对象,组装网页Card内容对象 APWebPageObject webPageObject = new APWebPageObject(); webPageObject.webpageUrl = "http://www.yoururl.com/"; ////初始化APMediaMessage ,组装分享消息对象 APMediaMessage webMessage = new APMediaMessage(); webMessage.mediaObject = webPageObject; webMessage.title = "分享标题"; webMessage.description = "分享内容描述"; //网页缩略图的分享支持bitmap和url两种方式,直接通过bitmap传递时bitmap最大为32K //a)url方式 //webMessage.thumbUrl = "http://www.yoururl.com/thumb.jpg"; //b)Bitmap方式 //webMessage.setThumbImage(bitmap); //bitmap.recycle(); webMessage.thumbUrl = "http://www.yoururl.com/thumb.jpg"; //将分享消息对象包装成请求对象 SendMessageToZFB.Req webReq = new SendMessageToZFB.Req(); webReq.message = webMessage; webReq.transaction = "WebShare"+String.valueOf(System.currentTimeMillis()); //修改请求消息对象的scene场景值为ZFBSceneTimeLine //9.9.5版本之后的支付宝不需要传此参数,用户会在跳转进支付宝后选择分享场景(好友、动态等) webReq.scene = SendMessageToZFB.Req.ZFBSceneTimeLine; //发送请求 api.sendReq(req);
a)检查当前手机上是否安装了支付宝
//创建工具对象实例,此处的APPID为上文提到支付宝应用唯一标识 IAPApi api = APAPIFactory.createZFBApi(getApplicationContext(),APPID,false); //判断是否安装了支付宝,返回boolean类型 boolean isZFBInstalled = api.isZFBAppInstalled();
b)检查当前手机上安装的支付宝版本是否支持分享到朋友
//创建工具对象实例,此处的APPID为上文提到支付宝应用唯一标识 IAPApi api = APPIFactory.createZFBApi(getApplicationContext(),APPID,false); //判断是否支持分享,返回boolean类型 boolean isZFBSupportApi = api.isZFBSupportAPI();
c)检查当前手机上的支付宝安装版本是否支持分享到动态
支付宝在versionCode 84之后支持分享到生活圈,判断是否支持生活圈分享,可以使用下面的接口进行判断
//创建工具对象实例,此处的APPID为上文提到支付宝应用唯一标识 IAPApi api = APAPIFactory.createZFBApi(getApplicationContext(),APPID,false); //判断是否支持生活圈 boolean isZFBSupportLife = api.isZFBAppInstalled() && api.getZFBVersionCode() >= 84;
参照"Android接入指南-接受和处理支付宝返回的响应消息"章节实现回调函数之后,可以在回调方法里面针对不同的错误码进行后续处理
错误码枚举定义在com.alipay.share.sdk.openapi.BaseResp.ErrCode中:
错误码 | 说明 |
---|---|
ERR_OK | 分享成功 |
ERR_USER_CANCEL | 分享被用户取消 |
ERR_AUTH_DENIED | 分享鉴权失败,需要检查appId、packageId以及签名是否和注册的时候一致 |
ERR_SENT_FAILED | 分享过程中出现异常导致分享失败,可能由于网络或其他原因的失败 |
ERR_COMM | 分享参数错误 |
除以上错误码外,其他未知异常建议做失败处理 |