1. 程式人生 > >ios支付寶sdk分享

ios支付寶sdk分享

不知不覺的支付寶已經成為我們生活中不可或缺的一款APP,由最初的純支付APP發展到現在集各種實用的小功能著實不容易,今天在此要給大家說說這改變導致關於我們程式設計師必須要做的事情,那就是迅速增加分享到支付寶好友的功能。 
說到這,其實我也是無意間看到了微部落格戶端有分享到支付寶好友的功能,好奇來著,就弄著玩玩,像友盟、ShareSDK之類的第三方到目前為止貌似還沒有增加這項分享的。 
下面我帶大家怎麼完成這項簡單的任務。恩,非常簡單,看標題就知道了。。。�� 
下面我們來說重點:


準備工作

  • 申請你的AppID。請到支付寶開放平臺應用登記頁面進行登記,登記並選擇移動應用進行設定後,將獲得AppID,可立即用於開發。但應用登記完成後還需要提交稽核,只有稽核通過的應用才能正式釋出使用。
  • 下載並解壓介面壓縮檔案(檔名是SocialSDK.zip)。

步驟1:啟動IDE(如Xcode),把SocialSDK資料夾中以下檔案拷貝到專案資料夾下,並匯入到專案工程中。

A1ACFBC0-964D-4E7B-85E0-8DA6AE7AC4C0.png

APOpenAPI.h
APOpenAPIObject.h
libAPOpenSdk.a
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

步驟2:在需要呼叫SocialSDK的檔案中,增加標頭檔案引用。

#import "APOpenAPI.h"
  • 1
  • 1

步驟3:工程配置

  • 為Other Linker Flags 新增 -all_load

  • 為URL Types 新增支付寶回撥scheme

      
    注意

    1. identifier必須為 alipayShare
    2. URL Schemes 命名規則:ap+AppID
  • iOS 9以後的系統需要新增支付寶的分享scheme 
       
    支付寶分享的URL Schemes 命名為:alipayshare

步驟4:註冊應用並新增必要的URL Handler

如示例AppDelegate.m檔案中,增加引用程式碼:
#import "APOpenAPI.h"
  • 1
  • 1
在@implementation AppDelegate中增加如下程式碼:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    
    //  建立供Demo使用的根檢視
    APRootViewController *rootViewController = [[APRootViewController alloc] initWithNibName:nil bundle:nil];
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
    self.window.rootViewController = navigationController;
    
    //  配置應用的AppId
    //      重要:必須先在支付寶開放平臺申請您的AppId才能正常使用支付寶社交分享功能
    //      Demo中的AppId,使用xxxxxxxxxx代替
    [APOpenAPI registerApp:@"xxxxxxxxxx"];
    
    return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    //  處理支付寶通過URL啟動App時傳遞的資料
    return [APOpenAPI handleOpenURL:url delegate:self];
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

步驟5:分享資料到支付寶錢包

傳送分享請求的過程主要分為兩部分:
  • 組裝APMediaMessage物件
  • 呼叫sendReq傳送介面

不同型別的分享資料主要通過APMediaMessage內的mediaObject物件進行區分:

  • APShareTextObject 純文字資料
  • APShareImageObject 圖片資料
  • APShareWebObject 網頁資料

分享純文字

//  傳送文字訊息到支付寶
- (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;
    //  傳送請求
    [APOpenAPI sendReq:request];
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

分享純圖片(圖片連結形式)

//  傳送圖片訊息到支付寶(圖片連結形式)
- (void)sendPhotoByUrl
{
    //  建立訊息載體 APMediaMessage 物件
    APMediaMessage *message = [[APMediaMessage alloc] init];
    
    //  建立圖片型別的訊息物件
    APShareImageObject *imgObj = [[APShareImageObject alloc] init];
    imgObj.imageUrl = @"此處填充圖片的url連結地址";
    //  回填 APMediaMessage 的訊息物件
    message.mediaObject = imgObj;
    
    //  建立傳送請求物件
    APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
    //  填充訊息載體物件
    request.message = message;
    //  傳送請求
    [APOpenAPI sendReq:request];
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

分享純圖片(圖片資料形式)

//  傳送圖片訊息到支付寶(圖片資料形式)
- (void)sendPhotoByData
{
    //  建立訊息載體 APMediaMessage 物件
    APMediaMessage *message = [[APMediaMessage alloc] init];
    
    //  建立圖片型別的訊息物件
    APShareImageObject *imgObj = [[APShareImageObject alloc] init];
    //  此處填充圖片data資料,例如 UIImagePNGRepresentation(UIImage物件)
    //  此處必須填充有效的image NSData型別資料,否則無法正常分享
    imgObj.imageData = nil;
    //  回填 APMediaMessage 的訊息物件
    message.mediaObject = imgObj;
    
    //  建立傳送請求物件
    APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
    //  填充訊息載體物件
    request.message = message;
    //  傳送請求
    [APOpenAPI sendReq:request];
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

分享網頁(縮圖連結形式)

//  傳送網頁訊息到支付寶(縮圖連結形式)
- (void)sendWebByUrl
{
    //  建立訊息載體 APMediaMessage 物件
    APMediaMessage *message = [[APMediaMessage alloc] init];
    
    message.title = @"此處填充網頁標題";
    message.desc = @"此處填充網頁簡要內容";
    message.thumbUrl = @"此處填充縮圖的url連結地址";
    
    //  建立網頁型別的訊息物件
    APShareWebObject *webObj = [[APShareWebObject alloc] init];
    webObj.wepageUrl = @"此處填充網頁url連結地址";
    //  回填 APMediaMessage 的訊息物件
    message.mediaObject = webObj;
    
    //  建立傳送請求物件
    APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
    //  填充訊息載體物件
    request.message = message;
    //  傳送請求
    [APOpenAPI sendReq:request];
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

分享網頁(縮圖資料形式)

//  傳送網頁訊息到支付寶(縮圖連結形式)
- (void)sendWebByData
{
    //  建立訊息載體 APMediaMessage 物件
    APMediaMessage *message = [[APMediaMessage alloc] init];
    
    message.title = @"此處填充網頁標題";
    message.desc = @"此處填充網頁簡要內容";
    //  此處填充縮圖data資料,例如 UIImagePNGRepresentation(UIImage物件)
    //  此處必須填充有效的image NSData型別資料,否則無法正常分享
    message.thumbData = nil;
    
    //  建立網頁型別的訊息物件
    APShareWebObject *webObj = [[APShareWebObject alloc] init];
    webObj.wepageUrl = @"此處填充網頁url連結地址";
    //  回填 APMediaMessage 的訊息物件
    message.mediaObject = webObj;
    
    //  建立傳送請求物件
    APSendMessageToAPReq *request = [[APSendMessageToAPReq alloc] init];
    //  填充訊息載體物件
    request.message = message;
    //  傳送請求
    [APOpenAPI sendReq:request];
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

  
注意 
分享純圖片、網頁縮圖時,可以使用兩種形式:圖片url、圖片data。 
支付寶內優先使用圖片data形式。

步驟6: 響應自支付寶返回的分享處理結果

/*
 *  收到一個來自支付寶的請求,第三方應用程式處理完後呼叫sendResp向支付寶傳送結果
 *
 *  入參
 *      req : 支付寶向第三方發來的請求類
 */
- (void)onReq:(APBaseReq*)req
{}
/*
 *  第三方應用程式傳送一個sendReq後,收到支付寶的響應結果
 *
 *  入參
 *      resp : 第三方應用收到的支付寶的響應結果類,目前支援的型別包括 APSendMessageToAPResp(分享訊息)
 */
- (void)onResp:(APBaseResp*)resp
{
    //  Demo內主要是將響應結果通過alert的形式反饋出來,第三方應用可以根據 errCode 進行相應的處理。
    NSString *title = nil;
    NSString *message = nil;
    if (resp.errCode == APSuccess) {
        title = @"成功";
    } else {
        title = @"失敗";
        message = [NSString stringWithFormat:@"%@(%d)", resp.errStr, resp.errCode];
    }
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil];
    [alert show];
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

1.4 判斷當前裝置是否支援分享

支付寶錢包從9.0版本開始支援分享,api中提供了介面來判斷當前裝置是否能夠支援分享到支付寶錢包。

  • [1]判斷當前裝置是否已經安裝支付寶錢包
/*! @brief 檢查支付寶是否已被使用者安裝
 *
 * @return 支付寶已安裝返回YES,未安裝返回NO。
 */
+(BOOL) isAPAppInstalled;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • [2]判斷當前裝置是否支援分享到支付寶(已經安裝支付寶&&支付寶版本支援分享)
/*! @brief 判斷當前支付寶的版本是否支援OpenApi
 *
 * @return 支援返回YES,不支援返回NO。
 */
+(BOOL) isAPAppSupportOpenApi;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • [3]獲取支付寶錢包在AppStore的下載連結,未安裝錢包時可使用該連結跳轉安裝
/*! @brief 獲取支付寶的itunes安裝地址
 *
 * @return 支付寶的安裝地址字串。
 */
+(NSString *) getAPAppInstallUrl;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

**至此,你已經能夠使用支付寶分享SDK的所有內容了。 
具體的處理邏輯請參考Demo內的示例程式碼。**


轉載來至:http://blog.csdn.net/binshaosir/article/details/49331085