支付寶

一.支付寶集成的介紹

1.1 什么是支付方式?
  • 內(nèi)購是用戶將錢付款給蘋果,之后蘋果分成給商戶
  • 支付寶是用戶將錢付款給支付寶,之后支付寶將錢轉(zhuǎn)入我們的賬戶
1.2 集成支付寶的步驟
  • 向支付寶申請, 與支付寶簽約鸵隧,獲得商戶ID(partner)和賬號ID(seller)和私鑰(privateKey)
  • 下載支付寶SDK
  • 生成訂單信息,簽名加密
  • 調(diào)用支付寶客戶端婿屹,由支付寶客戶端跟支付寶安全服務(wù)器打交道
  • 支付完畢后,支付寶客戶端會自動跳回到原來的應(yīng)用程序
  • 在原來的應(yīng)用程序中顯示支付結(jié)果給用戶看
1.3 支付流程

流程1:


Snip20160730_1.png

流程圖二:官方版

Paste_Image.png

二.下載SDK

2.1 進入支付寶官網(wǎng)官網(wǎng)地址:https://www.alipay.com
2.2 點擊商家中心
  • 如何簽約

  • 進入下一個頁面,可以點擊右上角的如何簽約

  • 在公司簽約工作通常由產(chǎn)品完成

  • 我們只需和產(chǎn)品要商戶ID(partner)和賬號ID(seller)和私鑰(privateKey)

  • 點擊如何集成

  • 來到頁面下方,點擊移動支付


    移動支付
  • 下一個頁面中,點擊Demo下載


    下載demo
  • 來到移動支付功能,點擊下載即可


    下載demo

三.集成流程

  • 1.項目中展示對應(yīng)的商品內(nèi)容
  • 2.當用戶點擊購買時,通過支付購買商品
  • 3.購買流程
  • 根據(jù)對應(yīng)的商品,生成訂單
  • 對訂單進行簽名加密
  • 調(diào)用支付寶客戶端進行支付
  • 4.支付成功或者失敗時回調(diào)
    • 如果手機內(nèi)沒安裝支付寶的app,會直接展現(xiàn)支付寶web支付界面婚脱,通過callback返回支付結(jié)果;
    • 如果手機內(nèi)安裝了支付寶的app椅贱,會跳轉(zhuǎn)到支付寶的app支付怀跛,然后通過openURL的回調(diào)返回支付結(jié)果萍丐。
   // 1.獲取簽約之后的三個數(shù)據(jù)
    NSString *partner = @"";
    NSString *seller = @"";
    NSString *privateKey = @"";

    // 2.生成訂單和簽名
    Order *order = [[Order alloc] init];
    order.partner = partner;
    order.seller = seller;
    order.tradeNO = nil; //訂單ID(由商家自行制定)
    order.productName = product.name; //商品標題
    order.productDescription = product.detail; //商品描述
    order.amount = [NSString stringWithFormat:@"%.2f",product.price]; //商品價格

    // 服務(wù)器的回調(diào)地址
    order.notifyURL =  @"http://www.xxx.com"; // 用戶支付成功后,支付寶服務(wù)器會同步通知我們的服務(wù)器.我們服務(wù)器需要有一個可以回調(diào)的地址
    order.service = @"mobile.securitypay.pay";
    order.paymentType = @"1";
    order.inputCharset = @"utf-8";
    order.itBPay = @"30m";
    order.showUrl = @"m.alipay.com";

    //應(yīng)用注冊scheme,在AlixPayDemo-Info.plist定義URL types
    NSString *appScheme = @"alipay";

    //將商品信息拼接成字符串
    NSString *orderSpec = [order description];

    //獲取私鑰并將商戶信息簽名,外部商戶可以根據(jù)情況存放私鑰和簽名,只需要遵循RSA簽名規(guī)范,并將簽名字符串base64編碼和UrlEncode
    id<DataSigner> signer = CreateRSADataSigner(privateKey);
    NSString *signedString = [signer signString:orderSpec];

    //將簽名成功字符串格式化為訂單字符串,請嚴格按照該格式
    NSString *orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
                       orderSpec, signedString, @"RSA"];

    // 跳轉(zhuǎn)到支付寶進行支付
    [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
        NSLog(@"reslut = %@",resultDic);
    }];

四 調(diào)用支付接口

在調(diào)用支付寶支付接口前,我們需要先生成一個訂單党涕,文檔中描述時烦感,是將這步也放在客戶端來做了,但這個最好是 放在服務(wù)器端來做膛堤,后臺生成訂單然后拼接手趣,簽名,然后服務(wù)器端直接給客戶端傳一個加密簽名過的參數(shù)就可以了骑祟,這樣比較安全,官方demo上放在客戶端生成訂單并且簽名是因為沒有服務(wù)給你用啊气笙,所以就客戶端上生成了~~~次企。
我做的時候,為了安全潜圃,生成訂單缸棵,拼接字符串,簽名谭期,都是在服務(wù)器上做的堵第,所有的訂單信息,商戶信息等都掌握在自己的手中隧出,這樣的話APP端就不怕被攔截數(shù)據(jù)踏志,并且調(diào)用起來也就特別簡單了,只需要調(diào)用支付的接口胀瞪,打開支付寶APP客戶端進行支付就行了针余,沒有用戶的手機上沒有安裝支付寶客戶端的話會調(diào)用網(wǎng)頁來支付,也是一樣的凄诞。
如果只需要發(fā)送訂單和處理支付返回結(jié)果圆雁,只需要添加AlipaySDK.bundle和AlipaySDK.framework這兩個就行了,下載的SDK中很容易發(fā)現(xiàn)帆谍。
快捷支付方法是這個:

-(void)payOrder:(NSString *)orderStr fromScheme:(NSString *)schemeStr callback:(CompletionBlock)completionBlock;

在支付的按鈕中伪朽,試用支付寶這個類,再調(diào)用這個方法就行啦汛蝙!如下如:

在調(diào)用支付寶接口的時候烈涮,我們需要兩個參數(shù),orderString和APPScheme窖剑, APPScheme是app在info.plist注冊的scheme跃脊。
orderstring 這個是一個訂單的字符串,由后臺拼接生成的苛吱,還需要簽名的酪术。例如:

在調(diào)用支付寶接口的時候,我們需要兩個參數(shù),orderString和APPScheme绘雁, APPScheme是app在info.plist注冊的scheme橡疼。
orderstring 這個是一個訂單的字符串,由后臺拼接生成的庐舟,還需要簽名的

例如:
partner="2088101568358171"&seller_id="xxx@alipay.com"&out_trade_no="0819145412-6177"&subject="測試"&body="測試測試"&total_fee="0.01"&notify_url="http://notify.msp.hk/notify.htm"&service="mobile.securitypay.pay"&payment_type="1"&input_charset="utf-8"&it_bpay="30m"&sign="lBBK%2F0w5LOajrMrji7DUgEqNjIhQbidR13GovA5r3TgIbNqv231yC1NksLdw%2Ba3JnfHXoXuet6XNNHtn7VE%2BeCoRO1O%2BR1KugLrQEZMtG5jmJIe2pbjm%2F3kb%2FuGkpG%2BwYQYI51%2BhA3YBbvZHVQBYveBqK%2Bh8mUyb7GM1HxWs9k4%3D"&sign_type="RSA".

五 支付寶的坑

  1. Mac終端中輸入 openssl 進入Openssl程序
  1. 生成私鑰 命令 genrsa -out rsa_private_key.pem 1024
  2. iOS客戶端需要將生成的私鑰轉(zhuǎn)換成PKCS8格式 命令 pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt 獲取到pkcs8格式的字符串就是項目中需要的privatekey,取-----BEGIN PRIVATE KEY-----和 -----END PRIVATE KEY----- 中間的部分 切記P莱!E猜浴历帚!
  3. 生成公鑰 命令 rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
  • 2, 支付寶集成出現(xiàn)“系統(tǒng)繁忙,請稍后重試(ALI64)”錯誤的解決辦法

1.用記事本打開上面第四步生成的公鑰 rsa_public_key.pem杠娱,并將里面的密鑰拷貝出來挽牢,粘貼到合作伙伴密鑰管理中得RSA加密里,特別需要注意的是摊求,需要將密鑰中的空格禽拔、回車等刪除,使該密鑰為一行字符串室叉。
2.用記事本打開上面第四步生成的公鑰 rsa_public_key.pem睹栖,并將里面的密鑰拷貝出來,粘貼到開放平臺密鑰管理中得RSA加密里茧痕,特別需要注意的是野来,需要將密鑰中的空格、回車等刪除踪旷,使該密鑰為一行字符串梁只。

  • 3, 設(shè)置一下search paths

build setting ->搜索search path,然后你懂的
完成后埃脏,編譯一下搪锣,看有沒有錯,有錯沒錯彩掐,還是下一步吧构舟。

  • 4, 你可能會發(fā)現(xiàn)回調(diào)不行->設(shè)置回調(diào)shema
//上面支付時已經(jīng)傳給了支付寶客戶端回調(diào)shema名稱
 NSString *appScheme = URLScheme;
 //具體設(shè)置shema方法此處就不再累贅,這兒需要處理來自支付寶shema回調(diào)堵幽,才能完成上面方法的block回調(diào)
 在APPDelegate -
  - (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
         //跳轉(zhuǎn)支付寶錢包進行支付狗超,處理支付結(jié)果
    [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
        NSLog(@"result = %@",resultDic);
    }];

    return YES;
}
  1. iOS 支付寶集成中的那些坑
  2. 集成支付寶錢包支付iOS SDK的方法與經(jīng)驗
  3. IOS集成到支付寶的步驟及問題
  4. 這個也是遇到的一些問題和解決方法
  5. iOS應(yīng)用之支付寶集成總結(jié)
  6. iOS 集成支付寶
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市朴下,隨后出現(xiàn)的幾起案子努咐,更是在濱河造成了極大的恐慌,老刑警劉巖殴胧,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渗稍,死亡現(xiàn)場離奇詭異佩迟,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來会放,“玉大人,你說我怎么就攤上這事衰絮。” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長召嘶。 經(jīng)常有香客問我,道長哮缺,這世上最難降的妖魔是什么弄跌? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮蝴蜓,結(jié)果婚禮上碟绑,老公的妹妹穿的比我還像新娘俺猿。我一直安慰自己茎匠,他們只是感情好,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布押袍。 她就那樣靜靜地躺著诵冒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谊惭。 梳的紋絲不亂的頭發(fā)上汽馋,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天,我揣著相機與錄音圈盔,去河邊找鬼豹芯。 笑死,一個胖子當著我的面吹牛驱敲,可吹牛的內(nèi)容都是我干的铁蹈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼众眨,長吁一口氣:“原來是場噩夢啊……” “哼握牧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起娩梨,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沿腰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后狈定,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颂龙,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了厘托。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片友雳。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖铅匹,靈堂內(nèi)的尸體忽然破棺而出押赊,到底是詐尸還是另有隱情,我是刑警寧澤包斑,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布流礁,位于F島的核電站,受9級特大地震影響罗丰,放射性物質(zhì)發(fā)生泄漏神帅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一萌抵、第九天 我趴在偏房一處隱蔽的房頂上張望找御。 院中可真熱鬧,春花似錦绍填、人聲如沸霎桅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滔驶。三九已至,卻和暖如春卿闹,著一層夾襖步出監(jiān)牢的瞬間揭糕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工锻霎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留著角,地道東北人。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓旋恼,卻偏偏與公主長得像吏口,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蚌铜,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355

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