29.支付寶支付改版了,你知道嗎?

這里我講的是關(guān)于最新的支付寶支付的流程

  • 1.有個(gè)支付寶賬號(hào)并申請(qǐng)自己的app應(yīng)用

    支付寶開放平臺(tái)

  • 1.1.創(chuàng)建應(yīng)用


  • 1.2.設(shè)置bundle Id (要和自己項(xiàng)目的保持一致)

  • 2.公鑰私鑰的生成

    2.1尋找生成器


  • 2.2.下載公鑰和私鑰生成器


  • 2.3打開下載好的生成器,雙擊


  • 2.4.公鑰和私鑰的生成

  • 2.5.公鑰的使用
  • 3.支付寶SDK的使用
  • 3.1先下載一個(gè)支付寶的SDK(官方文檔->APP支付->iOS集成流程詳解)
  • 3.2下載SDK
  • 3.3選擇iOS客戶端
  • 3.4在項(xiàng)目里面導(dǎo)入下面的組合文件夾
  • 3.5.在pch文件里面導(dǎo)入

    #ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
    #endif
    
  • 3.6.在Build Phases選項(xiàng)卡的Link Binary With Libraries中喜爷,增加以下依賴:


其中,需要注意的是:
如果是Xcode 7.0之后的版本忍法,需要添加libc++.tbd魁蒜、libz.tbd叼丑;
如果是Xcode 7.0之前的版本,需要添加libc++.dylib、libz.dylib(如下圖)秋麸。

  • 3.7.上面的步驟做完運(yùn)行一下,會(huì)報(bào)錯(cuò)

解決辦法:配置路徑:配置完再運(yùn)行就沒(méi)事了

  • 4.在需要使用支付的地方導(dǎo)入下面的頭文件(也可寫在pch文件里面)

    //訂單框架
    #import "Order.h"
    //使用RSA加密框架
    #import "DataSigner.h"
    //支付報(bào)框架
    #import <AlipaySDK/AlipaySDK.h>
    
  • 5.在點(diǎn)擊支付的方法里面調(diào)用下面的方法

這兩項(xiàng)用戶需要自己填寫
應(yīng)用的appID
NSString *appID = @"";

私鑰(上面的步驟有生成)
NSString *privateKey = @"";
- (void)doAlipayPay
{
//重要說(shuō)明
//這里只是為了方便直接向商戶展示支付寶的整個(gè)支付流程嗜诀;所以Demo中加簽過(guò)程直接放在客戶端完成猾警;
//真實(shí)App里,privateKey等數(shù)據(jù)嚴(yán)禁放在客戶端隆敢,加簽過(guò)程務(wù)必要放在服務(wù)端完成发皿;
//防止商戶私密數(shù)據(jù)泄露,造成不必要的資金損失拂蝎,及面臨各種安全風(fēng)險(xiǎn)穴墅;

/*=======================需要填寫商戶app申請(qǐng)的===================================*/
/*============================================================================*/
NSString *appID = @"";
NSString *privateKey = @"";
/*============================================================================*/

//partner和seller獲取失敗,提示
if ([appID length] == 0 ||
    [privateKey length] == 0)
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"message:@"缺少appId或者私鑰。"
                                                   delegate:self cancelButtonTitle:@"確定"
                                          otherButtonTitles:nil];
   
    [alert show];
    return;
}

/*
 *生成訂單信息及簽名
 */
//將商品信息賦予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: 當(dāng)前時(shí)間點(diǎn)
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設(shè)置
order.sign_type = @"RSA";

// NOTE: 商品數(shù)據(jù)
order.biz_content = [BizContent new];
order.biz_content.body = @"我是測(cè)試數(shù)據(jù)";
order.biz_content.subject = @"1";
order.biz_content.out_trade_no = [self generateTradeNO]; //訂單ID(由商家自行制定)
order.biz_content.timeout_express = @"30m"; //超時(shí)時(shí)間設(shè)置
order.biz_content.total_amount = [NSString stringWithFormat:@"%.2f", 0.01]; //商品價(jià)格

//將商品信息拼接成字符串
NSString *orderInfo = [order orderInfoEncoded:NO];
NSString *orderInfoEncoded = [order orderInfoEncoded:YES];
NSLog(@"orderSpec = %@",orderInfo);

// NOTE: 獲取私鑰并將商戶信息簽名,外部商戶的加簽過(guò)程請(qǐng)務(wù)必放在服務(wù)端玄货,防止公私鑰數(shù)據(jù)泄露皇钞;
//       需要遵循RSA簽名規(guī)范,并將簽名字符串base64編碼和UrlEncode
id<DataSigner> signer = CreateRSADataSigner(privateKey);
NSString *signedString = [signer signString:orderInfo];

// NOTE: 如果加簽成功誉结,則繼續(xù)執(zhí)行支付
if (signedString != nil) {
    //應(yīng)用注冊(cè)scheme,在AliSDKDemo-Info.plist定義URL types
    NSString *appScheme = @"alisdkdemo";
    
    // NOTE: 將簽名成功字符串格式化為訂單字符串,請(qǐng)嚴(yán)格按照該格式
    NSString *orderString = [NSString stringWithFormat:@"%@&sign=%@",
                             orderInfoEncoded, signedString];
    
    // NOTE: 調(diào)用支付結(jié)果開始支付
    [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
        NSLog(@"123reslut = %@",resultDic);
        
        
    }];
  }
}

- (NSString *)generateTradeNO
{
     static int kNumber = 15;

     NSString *sourceStr = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     NSMutableString *resultStr = [[NSMutableString alloc] init];
     srand((unsigned)time(0));
     for (int i = 0; i < kNumber; i++)
    {
        unsigned index = rand() % [sourceStr length];
        NSString *oneStr = [sourceStr substringWithRange:NSMakeRange(index, 1)];
        [resultStr appendString:oneStr];
    }
   return resultStr;
 }
  • 6.回調(diào)的添加

  • 6.1.代碼中的回調(diào)標(biāo)識(shí)符

  • 6.2.工程中配置


提示:如果報(bào)下面的錯(cuò)

撥錯(cuò):集成支付寶 報(bào)錯(cuò):rsa_private read error : private key is NULL

解決辦法:

兩中解決方法

  • 1解決方法:

    1)在RSADataSigner.m文件中 搜索代碼 [result appendString:@"-----BEGIN PRIVATE KEY-----\n"]; 將其改成 [result appendString:@"-----BEGIN RSA PRIVATE KEY-----\n"];
    2)在RSADataSigner.m文件中 搜索代碼 [result appendString:@"\n-----END PRIVATE KEY-----"]; 將其改成 [result appendString:@"\n-----END RSA PRIVATE KEY-----"];
    
  • 2解決方法:

    A鹅士、將私鑰轉(zhuǎn)成PKCS8替換一下原私鑰即可
    
    1、生成私鑰pem,  執(zhí)行命令  openssl genrsa -out rsa_private_key.pem 1024
    2惩坑、生成公鑰,執(zhí)行命令  openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
    3掉盅、 將RSA私鑰轉(zhuǎn)換成PKCS8格式,命令執(zhí)行  openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt 
    ( PHP服務(wù)端語(yǔ)言讀取私鑰不需要PKCS8轉(zhuǎn)換)
    

iOS公鑰私鑰生成器 密碼: pqyk
我已經(jīng)拖好的需要導(dǎo)入的文件 密碼: aqyg
ios支付寶demo 密碼: cbfx
老版本的支付寶,自己做的demo 密碼: dkwf
老版本的支付寶集成文檔

支付寶常見的其他bug解決

最后推薦其他人的博客

1.支付寶支付

結(jié)論:如果有不懂得地方大家可以私聊我,歡迎批評(píng)指正!!!謝謝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瓢阴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子健无,更是在濱河造成了極大的恐慌荣恐,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件累贤,死亡現(xiàn)場(chǎng)離奇詭異募胃,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)畦浓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)检疫,“玉大人讶请,你說(shuō)我怎么就攤上這事。” “怎么了夺溢?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵论巍,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我风响,道長(zhǎng)嘉汰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任状勤,我火速辦了婚禮鞋怀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘持搜。我一直安慰自己密似,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布葫盼。 她就那樣靜靜地躺著残腌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贫导。 梳的紋絲不亂的頭發(fā)上抛猫,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音孩灯,去河邊找鬼闺金。 笑死,一個(gè)胖子當(dāng)著我的面吹牛钱反,可吹牛的內(nèi)容都是我干的掖看。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼面哥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼哎壳!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起尚卫,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤归榕,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后吱涉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刹泄,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年怎爵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了特石。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鳖链,死狀恐怖姆蘸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤逞敷,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布狂秦,位于F島的核電站,受9級(jí)特大地震影響推捐,放射性物質(zhì)發(fā)生泄漏裂问。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一牛柒、第九天 我趴在偏房一處隱蔽的房頂上張望堪簿。 院中可真熱鬧,春花似錦焰络、人聲如沸戴甩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)甜孤。三九已至,卻和暖如春畏腕,著一層夾襖步出監(jiān)牢的瞬間缴川,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工描馅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留把夸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓铭污,卻偏偏與公主長(zhǎng)得像恋日,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嘹狞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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

  • 首先申請(qǐng)并登陸開發(fā)者賬號(hào)岂膳,地址:https://open.alipay.com/platform/home.htm...
    hx永恒之戀閱讀 5,671評(píng)論 3 7
  • 嘟噥嘟噥:最近接到一個(gè)任務(wù):在客戶端動(dòng)態(tài)生成RSA密鑰對(duì),然后向服務(wù)器發(fā)送這個(gè)密鑰對(duì)中的公鑰字符串磅网,由服務(wù)器進(jìn)行公...
    TimmyR閱讀 8,020評(píng)論 19 21
  • 因?yàn)榻陧?xiàng)目中需要接入支付寶支付功能谈截,自己也爬了很多的坑,所以做了一下這邊文章供大家學(xué)習(xí)參考涧偷,遠(yuǎn)離爬坑簸喂,文章主要講...
    啓蘊(yùn)閱讀 2,298評(píng)論 0 4
  • 文章主要講到以下五部分: 一、支付寶開放平臺(tái)創(chuàng)建應(yīng)用 二燎潮、簽約移動(dòng)支付功能 三喻鳄、接入支付前的準(zhǔn)備工作附準(zhǔn)備工作中遇...
    sillen閱讀 17,858評(píng)論 1 10
  • 周小軍看著她走遠(yuǎn)的背影的眼神是絕望的。 愛一個(gè)人那么久确封,用盡了畢生精力一步步邁向那個(gè)最心愛的姑娘除呵。眼看著自己成功了...
    不過(guò)呢閱讀 492評(píng)論 0 4