iOS支付寶集成

首先要向支付寶申請, 與支付寶簽約,獲得appID(partner)和私鑰(privateKey)烟央,這個一般都是公司做夺荒,直接找公司要瞒渠。
然后,下載支付寶SDK技扼,下載地址
下載好后伍玖,找到里面的AlipaySDK.bundle和AlipaySDK.framework拷貝到你的工程里面,

254F72E5-D8FF-4557-982F-79DA11EE5A1D.png

最好是創(chuàng)建一個文件夾單獨放支付寶拷貝的文件剿吻。
再找到AliSDKDemo文件夾里面的libcrypto.a和libssl.a兩個拷貝到工程

4DDE4C76-5AF5-4C51-8315-BEA16EFE6016.png

再找到AliSDKDemo文件夾里面的AliSDKDemo文件夾里面的Order.h和Order.m文件窍箍,Util和openssl文件也拷貝到工程里面你創(chuàng)建的文件夾。

7F332F70-3C5B-4405-8974-A5E47480ED3F.png

打開你的viewController,先導(dǎo)入#import "Order.h"和#import<AlipaySDK/AlipaySDK.h>兩個頭文件仔燕,
在viewDidLoad方法里面,添加下面代碼

 //重要說明
    //這里只是為了方便直接向商戶展示支付寶的整個支付流程魔招;所以Demo中加簽過程直接放在客戶端完成晰搀;
    //真實App里,privateKey等數(shù)據(jù)嚴禁放在客戶端办斑,加簽過程務(wù)必要放在服務(wù)端完成外恕;
    //防止商戶私密數(shù)據(jù)泄露,造成不必要的資金損失乡翅,及面臨各種安全風險鳞疲;
    /*============================================================================*/
    /*=======================需要填寫商戶app申請的===================================*/
    /*============================================================================*/
    NSString *appID = @"";
    
    // 如下私鑰,rsa2PrivateKey 或者 rsaPrivateKey 只需要填入一個
    // 如果商戶兩個都設(shè)置了蠕蚜,優(yōu)先使用 rsa2PrivateKey
    // rsa2PrivateKey 可以保證商戶交易在更加安全的環(huán)境下進行尚洽,建議使用 rsa2PrivateKey
    // 獲取 rsa2PrivateKey,建議使用支付寶提供的公私鑰生成工具生成靶累,
    // 工具地址:https://doc.open.alipay.com/docs/doc.htm?treeId=291&articleId=106097&docType=1
    NSString *rsa2PrivateKey = @"";
    NSString *rsaPrivateKey = @"";
    /*============================================================================*/
    /*============================================================================*/
    /*============================================================================*/

    
    /*
     *生成訂單信息及簽名
     */
    //將商品信息賦予AlixPayOrder的成員變量
    Order* order = [Order new];
    
    // NOTE: app_id設(shè)置
    order.app_id = appID;
    
    // NOTE: 支付接口名稱
    order.method = @"alipay.trade.app.pay";
    
    // NOTE: 參數(shù)編碼格式
    order.charset = @"utf-8";
    
    // NOTE: 當前時間點
    NSDateFormatter* formatter = [NSDateFormatter new];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    order.timestamp = [formatter stringFromDate:[NSDate date]];
    
    // NOTE: 支付版本
    order.version = @"1.0";
    
    // NOTE: sign_type 根據(jù)商戶設(shè)置的私鑰來決定
    order.sign_type = (rsa2PrivateKey.length > 1)?@"RSA2":@"RSA";
    
    // NOTE: 商品數(shù)據(jù)
    order.biz_content = [BizContent new];
    order.biz_content.body = @"";//商品標題
    order.biz_content.subject = @"";//商品描述
    order.biz_content.out_trade_no = @""; //訂單ID(由商家自行制定)
    order.biz_content.timeout_express = @"30m"; //超時時間設(shè)置
    order.biz_content.total_amount = [NSString stringWithFormat:@"%.2f", 0.01]; //商品價格
    
    //將商品信息拼接成字符串
    NSString *orderInfo = [order orderInfoEncoded:NO];
    NSString *orderInfoEncoded = [order orderInfoEncoded:YES];
    NSLog(@"orderSpec = %@",orderInfo);

編譯一下腺毫,你會發(fā)現(xiàn)報了很多的錯


C0278202-8313-4535-A1EE-AE3B3B4F7641.png

不要怕,點開這個錯誤挣柬,進入到報錯的地方,就是Base64.h里面加上一個#import <Foundation/Foundation.h>潮酒,


B06D0B5B-C670-4BC0-AE78-A9E9DEDDBAA9.png

再次編譯會發(fā)現(xiàn)還有錯誤,
6DB55E4B-C11C-40E0-831E-0C7CDA6F3B21.png

再次點開這個錯誤邪蛔,進入到openssl_wrapper.h里面急黎,加入一個#import <Foundation/Foundation.h>


F8725335-C1F1-4218-92FE-E8872A326DD8.png

如果你的項目里面有PCH文件,直接在PCH文件里面導(dǎo)入#import <Foundation/Foundation.h>就行了侧到。
再吃編譯勃教,就只剩下一個錯誤了
34901DF9-28D9-4671-A837-E0A173F0E910.png

這個錯誤的解決方法就是找到Targets -> Build Settings 下的 Header Search Paths
9DB86266-D5E5-400A-B5C2-B64CDD8F5A71.png

找到 Header Search Paths后雙擊后面的空白框彈出一個方框
E205B362-E208-4750-A2A3-56CF5C10DBE1.png

點擊+號就會出來一個輸入框,在輸入框里面輸入$(SRCROOT)/你項目的名字/文件的絕對地址(就是放拷貝的支付寶文件的文件夾名)
編譯一下會報很多錯誤床牧,這是沒有添加依賴庫荣回,要添加下列依賴庫
其中,需要注意的是:
如果是Xcode 7.0之后的版本戈咳,需要添加libc++.tbd心软、libz.tbd;
如果是Xcode 7.0之前的版本著蛙,需要添加libc++.dylib删铃、libz.dylib

libz.tbd

libc++.tbd

QuartzCore.framework

CoreText.framework

CoreGraphics.framework

UIKit.framework

Foundation.framework

CoreMotion.Framework

CFNetwork.framework

CoreTelephony.framework

SystemConfiguration.framework

284C1133-A3CA-482E-A8B8-4DCB5D59F0F6.png

回到ViewController里面添加頭文件#import "RSADataSigner.h",再在viewDidLoad里面添加下面代碼

 // NOTE: 獲取私鑰并將商戶信息簽名踏堡,外部商戶的加簽過程請務(wù)必放在服務(wù)端猎唁,防止公私鑰數(shù)據(jù)泄露;
    //       需要遵循RSA簽名規(guī)范顷蟆,并將簽名字符串base64編碼和UrlEncode
    NSString *signedString = nil;
    RSADataSigner* signer = [[RSADataSigner alloc] initWithPrivateKey:((rsa2PrivateKey.length > 1)?rsa2PrivateKey:rsaPrivateKey)];
    if ((rsa2PrivateKey.length > 1)) {
        signedString = [signer signString:orderInfo withRSA2:YES];
    } else {
        signedString = [signer signString:orderInfo withRSA2:NO];
    }
    
    // NOTE: 如果加簽成功诫隅,則繼續(xù)執(zhí)行支付
    if (signedString != nil) {
        //應(yīng)用注冊scheme,在AliSDKDemo-Info.plist定義URL types
        NSString *appScheme = @"Alipay2";
        
        // NOTE: 將簽名成功字符串格式化為訂單字符串,請嚴格按照該格式
        NSString *orderString = [NSString stringWithFormat:@"%@&sign=%@",
                                 orderInfoEncoded, signedString];
        
        // NOTE: 調(diào)用支付結(jié)果開始支付
        [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
            NSLog(@"reslut = %@",resultDic);
        }];
    }

其中 NSString *appScheme = @"Alipay2";這個是你項目自己的名字腐魂,并且為了能夠從支付寶跳轉(zhuǎn)回自己的應(yīng)用還要在Info.plist定義URL types

296718E5-7BD2-4C24-92C9-4AFA4F5AB1DE.png

點擊?號,將你的項目名字填進去進行了
最后,進入AppDelegate.m里面導(dǎo)入#import <AlipaySDK/AlipaySDK.h>再添加下面代碼

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    
    if ([url.host isEqualToString:@"safepay"]) {
        // 支付跳轉(zhuǎn)支付寶錢包進行支付逐纬,處理支付結(jié)果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
        }];
        
        // 授權(quán)跳轉(zhuǎn)支付寶錢包進行支付蛔屹,處理支付結(jié)果
        [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
            // 解析 auth code
            NSString *result = resultDic[@"result"];
            NSString *authCode = nil;
            if (result.length>0) {
                NSArray *resultArr = [result componentsSeparatedByString:@"&"];
                for (NSString *subResult in resultArr) {
                    if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
                        authCode = [subResult substringFromIndex:10];
                        break;
                    }
                }
            }
            NSLog(@"授權(quán)結(jié)果 authCode = %@", authCode?:@"");
        }];
    }
    return YES;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市豁生,隨后出現(xiàn)的幾起案子兔毒,更是在濱河造成了極大的恐慌,老刑警劉巖甸箱,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件育叁,死亡現(xiàn)場離奇詭異,居然都是意外死亡芍殖,警方通過查閱死者的電腦和手機豪嗽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來豌骏,“玉大人昵骤,你說我怎么就攤上這事】鲜剩” “怎么了变秦?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長框舔。 經(jīng)常有香客問我蹦玫,道長,這世上最難降的妖魔是什么刘绣? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任樱溉,我火速辦了婚禮,結(jié)果婚禮上纬凤,老公的妹妹穿的比我還像新娘福贞。我一直安慰自己,他們只是感情好停士,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布挖帘。 她就那樣靜靜地躺著,像睡著了一般恋技。 火紅的嫁衣襯著肌膚如雪拇舀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天蜻底,我揣著相機與錄音骄崩,去河邊找鬼。 笑死,一個胖子當著我的面吹牛要拂,可吹牛的內(nèi)容都是我干的抠璃。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼脱惰,長吁一口氣:“原來是場噩夢啊……” “哼鸡典!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起枪芒,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谁尸,沒想到半個月后舅踪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡良蛮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年抽碌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片决瞳。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡货徙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出皮胡,到底是詐尸還是另有隱情痴颊,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布屡贺,位于F島的核電站蠢棱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏甩栈。R本人自食惡果不足惜泻仙,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望量没。 院中可真熱鬧玉转,春花似錦、人聲如沸殴蹄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽袭灯。三九已至漩蟆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妓蛮,已是汗流浹背怠李。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捺癞。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓夷蚊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親髓介。 傳聞我的和親對象是個殘疾皇子惕鼓,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1、下載支付寶SDK 2唐础、進入支付平臺注冊應(yīng)用 3箱歧、獲取支付相關(guān)的 '私鑰' 和 '密鑰' 下載macOSX版本 ...
    MdWhat閱讀 1,547評論 2 6
  • 本文Demo地址 1.下載支付寶SDK以及Demohttps://doc.open.alipay.com/doc2...
    Lonely__M閱讀 5,235評論 2 41
  • 首先我們需要在官網(wǎng)上面去下載demo,和sdk一膨。注意不要找錯地方了呀邢。下面是下載地址 https://b.alipa...
    FengxinLi閱讀 1,432評論 3 5
  • 前言 前段時間公司App要集成支付寶支付與微信支付,在網(wǎng)上看各種關(guān)于支付集成的分享豹绪,最后總算是完成了任務(wù)价淌,不得不吐...
    MarkLee閱讀 830評論 3 10
  • 39/16000,34/35 1今天各種樂捐一元瞒津。 2今天給秦皇島流浪小動物協(xié)會月捐30元蝉衣。 3今天分享了我財富種...
    南戴河西謎會館慧慧閱讀 111評論 0 0