新版支付寶支付

首先申請(qǐng)并登陸開發(fā)者賬號(hào)歉胶,地址:https://open.alipay.com/platform/home.htm
與支付寶進(jìn)行簽約簽約管理
在管理中心

創(chuàng)建應(yīng)用并獲取APPID

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

應(yīng)用環(huán)境配置

環(huán)境配置.png

1 應(yīng)用網(wǎng)關(guān):這個(gè)應(yīng)用網(wǎng)關(guān)是什么匪蝙?
就是你的支付寶簽約支付寶時(shí),指定可用于支付驗(yàn)證的網(wǎng)址。比如你公司后臺(tái)支付服務(wù)器的網(wǎng)址孵奶,類似 應(yīng)用網(wǎng)關(guān) http://www.thisIsAtext.cn/web.php/home/pay/notifyurl在這里要處理一些支付寶的響應(yīng)
2授權(quán)回調(diào)地址:
第三方授權(quán)或用戶信息授權(quán)后回調(diào)地址司忱。授權(quán)鏈接中配置的redirect_uri的值必須與此值保持一致。如:
授權(quán)回調(diào)地址 http://www.thisIsAtext.cn/web.php/home/pay/returnurl

題外話:支付寶集成時(shí)锄蹂,有同步返回地址return_url和異步通知地址notify_url氓仲,這兩個(gè)地址中的參數(shù)與簽名驗(yàn)證有非常大的關(guān)系,在支付寶的說(shuō)明中,強(qiáng)調(diào)return_url不可以有自定義參數(shù)敬扛,否則會(huì)導(dǎo)致sign和mysign不相等晰洒,但有時(shí)我們需要一些自定義參數(shù)來(lái)做判斷

簽名驗(yàn)證機(jī)制

支付寶簽名有兩次,第一次是發(fā)送的時(shí)候啥箭,第二次是返回的時(shí)候谍珊,返回又分為同步返回和異步通知,這兩個(gè)的簽名方式是相同的急侥。
關(guān)于支付支付寶異步通知(notify_url)與return_url可查看支付寶接口使用文檔說(shuō)明了解一番

.

生成與配置密鑰

第一步 生成RSA密鑰
生成方式一(推薦):使用支付寶提供的一鍵生成工具(內(nèi)附使用說(shuō)明)
Windows:下載
MAC OSX:下載

解壓打開文件夾砌滞,直接運(yùn)行“支付寶RAS密鑰生成器SHAwithRSA1024_V1.0.bat”(WINDOWS)或“SHAwithRSA1024_V1.0.command”(MACOSX),點(diǎn)擊“生成RSA密鑰”坏怪,會(huì)自動(dòng)生成公私鑰贝润,然后點(diǎn)擊“打開文件位置”,即可找到工具自動(dòng)生成的密鑰陕悬。
注意:工具不支持含中文或空格的路徑题暖,請(qǐng)下載到英文目錄下使用。

第二步 密鑰配置
開發(fā)者登錄開放平臺(tái)后捉超,找到并進(jìn)入應(yīng)用胧卤。
點(diǎn)擊“RSA(SHA1)密鑰”處的“設(shè)置開發(fā)者公鑰”(如已設(shè)置則顯示“查看開發(fā)者公鑰”,可修改)拼岳,將公鑰文件去除頭尾枝誊、換行和空格,僅需填入字符串惜纸。
例如轉(zhuǎn)換前公鑰pem文件格式:
-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxLDkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unormYQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/QpkddCVXnZ4bAUaQjXQIDAQAB

-----END PUBLIC KEY-----

轉(zhuǎn)換后得到的字符串為:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxLDkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unormYQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/QpkddCVXnZ4bAUaQjXQIDAQAB

第三步 獲取支付寶公鑰
應(yīng)用上線后點(diǎn)擊“查看支付寶公鑰”叶撒,即可獲取支付寶公鑰,用于支付寶返回?cái)?shù)據(jù)的驗(yàn)簽耐版。
對(duì)于支付寶公鑰祠够,看到的是一個(gè)字符串,如下:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDI6d306Q8fIfCOaTXyiUeJHkrIvYISRcc73s3vF1ZT7XN8RNPwJxo8pWaJMmvyTn9N4HQ632qJBVHf8sxHi/fEsraprwCtzvzQETrNRwVxLO5jVmRGi60j8Ue1efIlzPXV9je9mkjzOmdssymZkh2QhUrCmZYI/FCEa3/cNMW0QIDAQAB

如果需要使用文件方式(如使用服務(wù)端SDK的PHP/.NET版本)讀取支付寶公鑰粪牲,需要在頭尾加入標(biāo)示后保存至文件古瓤,文件內(nèi)容如下:

-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDI6d306Q8fIfCOaTXyiUeJHkrIvYISRcc73s3vF1ZT7XN8RNPwJxo8pWaJMmvyTn9N4HQ632qJBVHf8sxHi/fEsraprwCtzvzQETrNRwVxLO5jVmRGi60j8Ue1efIlzPXV9je9mkjzOmdssymZkh2QhUrCmZYI/FCEa3/cNMW0QIDAQAB

-----END PUBLIC KEY-----

集成并配置SDK

接入移動(dòng)支付需要集成兩個(gè)SDK,客戶端SDK需要集成在商戶自己的APP中腺阳,用于喚起支付寶APP并發(fā)送交易數(shù)據(jù)落君,并在支付寶APP返回商戶APP時(shí)獲得支付結(jié)果。服務(wù)端SDK需要商戶集成在自己的服務(wù)端系統(tǒng)中亭引,用于協(xié)助解析并驗(yàn)證客戶端同步返回的支付結(jié)果和異步通知绎速。

集成客戶端SDK

官方文檔iOS集成流程詳解
支付寶SDK的使用
先下載一個(gè)支付寶的SDK

選擇iOS客戶端



在項(xiàng)目里面導(dǎo)入下面的組合文件夾


在pch文件里面導(dǎo)入

#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif

在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)事了

Android集成流程詳解

集成服務(wù)端SDK
在需要使用支付的地方導(dǎo)入下面的頭文件(也可寫在pch
文件里面)
//訂單框架#import "Order.h"http://使用RSA加密框架#import "DataSigner.h"http://支付報(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;
 }

回調(diào)的添加

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

工程中配置

提示:
集成支付寶 報(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.pem3
將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
需要導(dǎo)入的文件 密碼: aqyg
ios支付寶demo 密碼:cbfx
老版本的支付寶,JoanKing做的demo 密碼: dkwf
老版本的支付寶集成文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末型宝,一起剝皮案震驚了整個(gè)濱河市八匠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌趴酣,老刑警劉巖梨树,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異岖寞,居然都是意外死亡抡四,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門慎璧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)床嫌,“玉大人,你說(shuō)我怎么就攤上這事胸私⊙岽Γ” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵岁疼,是天一觀的道長(zhǎng)阔涉。 經(jīng)常有香客問(wèn)我缆娃,道長(zhǎng),這世上最難降的妖魔是什么瑰排? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任贯要,我火速辦了婚禮,結(jié)果婚禮上椭住,老公的妹妹穿的比我還像新娘崇渗。我一直安慰自己,他們只是感情好京郑,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布宅广。 她就那樣靜靜地躺著,像睡著了一般些举。 火紅的嫁衣襯著肌膚如雪跟狱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天户魏,我揣著相機(jī)與錄音驶臊,去河邊找鬼。 笑死叼丑,一個(gè)胖子當(dāng)著我的面吹牛关翎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鸠信,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼笤休,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了症副?” 一聲冷哼從身側(cè)響起店雅,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤翠忠,失蹤者是張志新(化名)和其女友劉穎充择,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體色乾,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辕坝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年窍奋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酱畅。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡琳袄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纺酸,到底是詐尸還是另有隱情窖逗,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布餐蔬,位于F島的核電站碎紊,受9級(jí)特大地震影響佑附,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仗考,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一音同、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秃嗜,春花似錦权均、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至橡类,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芽唇,已是汗流浹背顾画。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匆笤,地道東北人研侣。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像炮捧,于是被迫代替她去往敵國(guó)和親庶诡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

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

  • 支付寶集成過(guò)程詳解——運(yùn)行DEMO 前言咆课,夢(mèng)想是需要堅(jiān)持的末誓,在路上,一路前行书蚪。加油喇澡。 這兩天軟件需要集成支付寶了,...
    改昵稱已被占用閱讀 19,043評(píng)論 2 39
  • 這里我講的是關(guān)于最新的支付寶支付的流程 1.有個(gè)支付寶賬號(hào)并申請(qǐng)自己的app應(yīng)用支付寶開放平臺(tái) 1.1.創(chuàng)建應(yīng)用 ...
    IIronMan閱讀 1,536評(píng)論 1 12
  • 【不浮躁 不糾結(jié) 不焦慮-百度閱讀】https://mr.baidu.com/qhvi4wq
    泠念蝶閱讀 179評(píng)論 0 0
  • 1234567殊校,把眼淚逼回去晴玖,對(duì)。就是這樣为流。
    蘇向晚閱讀 140評(píng)論 0 0
  • 想要學(xué)習(xí)視頻呕屎,還是被FEI種草的,她去年拍啦不少視頻敬察,尤其是那一篇關(guān)于“貝加爾湖”的秀睛,我心就跟著一起飛了。后來(lái)她在...
    朱泓默閱讀 1,320評(píng)論 5 6