社交分享功能是指第三方App通过接入该功能,让用户可以从App分享图片、网页至支付宝。社交分享功能目前支持图片、网页共两种类型。以下是分享内容的代码示例。
不同类型的分享数据主要通过APMediaMessage内的mediaObject对象进行区分:
不同场景的分享区分:
分享到动态在支付宝9.9.5版本前(不包括9.9.5版本)只支持网页链接类型的消息,在9.9.5版本及以后只有纯文本类型的消息不支持。
代码示例:
// 发送文本消息到支付宝 - (void)sendText { // 创建消息载体 APMediaMessage 对象 APMediaMessage *message = [[APMediaMessage alloc] init]; // 创建文本类型的消息对象 APShareTextObject *textObj = [[APShareTextObject alloc] init]; textObj.text = @"此处填充发送到支付宝的纯文本信息"; // 回填 APMediaMessage 的消息对象 message.mediaObject = textObj; // 创建发送请求对象 APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init]; // 填充消息载体对象 request.message = message; // 分享场景,0为分享到好友,1为分享到生活圈;支付宝9.9.5版本至当前版本,分享入口已合并,scene参数并没有被使用,用户会在跳转进支付宝后选择分享场景(好友、动态、圈子等),但为保证老版本上无问题,建议还是照常传入。 request.scene = 0; // 发送请求 BOOL result = [APOpenAPI sendReq:request]; if (!result) { //失败处理 NSLog(@"发送失败"); } }b)发送网页Card
代码示例:
// 发送网页消息到支付宝 - (void)sendWebByUrl { // 创建消息载体 APMediaMessage 对象 APMediaMessage *message = [[APMediaMessage alloc] init]; message.title = @"此处填充网页标题"; message.desc = @"此处填充网页简要内容"; message.thumbUrl = @"此处填充缩略图的url链接地址"; //缩略图也可使用thumbData字段分享本地UIImage类型图片,必须填充有效的image NSData类型数据,否则无法正常分享 //例如 message.thumbData = UIImagePNGRepresentation(Your UIImage Obj); // 创建网页类型的消息对象 APShareWebObject *webObj = [[APShareWebObject alloc] init]; webObj.wepageUrl = @"此处填充网页url链接地址"; // 回填 APMediaMessage 的消息对象 message.mediaObject = webObj; // 创建发送请求对象 APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init]; // 填充消息载体对象 request.message = message; // 分享场景,0为分享到好友,1为分享到生活圈;支付宝9.9.5版本至当前版本,分享入口已合并,scene参数并没有被使用,用户会在跳转进支付宝后选择分享场景(好友、动态、圈子等),但为保证老版本上无问题,建议还是照常传入。 request.scene = 1; // 发送请求 BOOL result = [APOpenAPI sendReq:request]; if (!result) { //失败处理 NSLog(@"发送失败"); } }c)发送图片分享
代码示例:
// 发送图片消息到支付宝 - (void)sendPhotoByUrl { // 创建消息载体 APMediaMessage 对象 APMediaMessage *message = [[APMediaMessage alloc] init]; // 创建图片类型的消息对象 APShareImageObject *imgObj = [[APShareImageObject alloc] init]; imgObj.imageUrl = @"此处填充图片的url链接地址"; //图片也可使用imageData字段分享本地UIImage类型图片,必须填充有效的image NSData类型数据,否则无法正常分享 //例如 imgObj.imageData = UIImagePNGRepresentation(Your UIImage Obj); // 回填 APMediaMessage 的消息对象 message.mediaObject = imgObj; // 创建发送请求对象 APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init]; // 填充消息载体对象 request.message = message; // 分享场景,0为分享到好友,1为分享到生活圈;支付宝9.9.5版本至当前版本,分享入口已合并,scene参数并没有被使用,用户会在跳转进支付宝后选择分享场景(好友、动态、圈子等),但为保证老版本上无问题,建议还是照常传入。 request.scene = 0; // 发送请求 BOOL result = [APOpenAPI sendReq:request]; if (!result) { //失败处理 NSLog(@"发送失败"); } }
a)检查当前手机上是否安装了支付宝
支付宝钱包从9.0版本开始支持分享,api中提供了接口来判断当前设备是否能够支持分享到支付宝钱包。
//@return 支付宝已安装返回YES,未安装返回NO。
+(BOOL) isAPAppInstalled;
b)判断当前设备是否支持分享到支付宝好友(已经安装支付宝&&支付宝版本支持分享到好友)
//@return 支持返回YES,不支持返回NO。
+(BOOL) isAPAppSupportOpenApi;
c)判断当前设备是否支持分享到支付宝生活圈(已经安装支付宝&&支付宝版本支持分享到生活圈)
// @return 支持返回YES,不支持返回NO。
+(BOOL) isAPAppSupportShareTimeLine;
d)获取支付宝钱包在AppStore的下载链接,未安装钱包时可使用该链接跳转安装
// @return 支付宝的安装地址字符串。
+(NSString *) getAPAppInstallUrl;
在参照章节的接受和处理支付宝返回的响应消息实现回调接口之后,在回调方法里面可以处理相关错误码
错误码枚举定义在APErrorCode中:
错误码 | 说明 |
---|---|
APSuccess | 分享成功 |
APErrCodeUserCancel | 分享被用户取消 |
APErrCodeAuthDeny | 分享鉴权失败,需要检查appId、packageId以及签名是否和注册的时候一致 |
APErrCodeSentFail | 分享过程中出现异常导致分享失败,可能由于网络或其他原因的失败 |
APErrCodeUnsupport | 支付宝钱包版本不支持 |
APErrCodeCommon | 分享参数错误 |