支付-支付寶

前言

支付寶支付是很常見的支付方式,下面這篇就是親測有用的文章,純手打,會持續(xù)更新。


? ?賣家跟支付寶簽約

? (需要實名認證這個支付寶賬號,需要提供企業(yè)資料,成為企業(yè)支付寶賬號,一般為公司的支付寶賬號)

? ? ?第一步:登陸支付寶官方網(wǎng)站(支付寶商家中心)。

? ? ? 這是沒有簽約的賬戶效果

? ? ? 以下是申請好了的效果圖,(申請好套餐后正常2-5天會有申請狀態(tài),成功后進入【我的商家服務】)

? ? ? ? 第二步:點擊導航欄中“商家服務”,找到“合作身份(Partner ID)查詢”與“安全校驗碼(key)查詢”。


? ? ?合作者身份ID(partner)和交易安全校驗碼(key)是商戶與支付寶簽約后,商戶獲得的支付寶商戶唯一識別碼與密鑰。當商戶把支付寶功能接入商戶網(wǎng)站時會用到它們,以便讓支付寶認證商戶。 即可查詢到合作者身份ID,以2088開頭的16位純數(shù)字。

生成公鑰和私鑰,并上傳公鑰里的字符串

? ?怎么上傳公鑰呢?輸入支付寶密碼,跳轉到查看交易安全校驗碼(key)頁面,在那個頁面設置下,打開公鑰把公鑰里面的字符串粘到指定位置并上傳即可,公鑰必須給支付寶,不然他們解密不了。打開終端,生成共私鑰:

? ?私鑰:OpenSSL genrsa -out rsa_private_key.pem 1024

? ?公鑰:OpenSSL rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

? 編碼后:openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out rsa_private_key_pkcs8.pem

代碼里需要使用 編碼后的私鑰進行加密,注意是編碼后的。

? ? (上傳公鑰)

? ? (RSA秘鑰)

? 項目集成支付寶SDK

? 下載支付寶SDK,把支付寶相關的SDK和依賴的系統(tǒng)庫資源文件導入到本地工程項目中。

?#define gxPartner? ? ? @"2088*******"? 商家的PID

#define gxSeller? ? ? @"2000000000@qq.com"? ? 收錢的支付寶賬號

#define gxPrivateKey? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //商戶方的私鑰,pkcs8 格式。 ? ?@"MIICeAIBADANBgkqdasdasdasdasdasdoGBAM09Ym+y5Tzw/xVIdQ6xCZnpqh7ZUr-------"

?+(void)PayMoney :(NSDictionary *)dataDic;{? ??

/*? ? *生成訂單信息及簽名? ? */? ? //將商品信息賦予AlixPayOrder的成員變量? ??

Order *order = [[Order alloc] init];? ??

order.partner = gxPartner;? ?

//支付寶賬號

?order.seller = gxSeller;? ??

//訂單ID不能兩次一樣,否則第二次無法支付。

order.tradeNO = [dataDic objectForKey:@"fid"]; //訂單ID(由商家自行制定)? ??

order.orderNumber =[dataDic objectForKey:@"orderNumber"]; //訂單號? ??

order.productDescription = @"呵呵"; //商品描述? ??

order.amount = [dataDic objectForKey:@"fpayMoney"]; //商品價格? ??

order.notifyURL =? @"http://www.xxx.com"; //回調(diào)URL ? ??

?order.service = @"mobile.securitypay.pay";? ??

order.paymentType = @"1";? ??

order.inputCharset = @"utf-8";? ??

order.itBPay = @"30m";? ??

order.showUrl = @"m.alipay.com";? ? //應用注冊scheme,在AlixPayDemo-Info.plist定義URL types`該字符串是你自定義的 URL scheme 的名字。建議采用反轉域名的方法保證該名字的唯一性`? ?

NSString *appScheme = @"Mall";? ? >? //將商品信息拼接成字符串? NSString *orderSpec = [order description];? DMLog(@"orderSpec = %@",orderSpec);? ? ? >? //獲取私鑰并將商戶信息簽名,外部商戶可以根據(jù)情況存放私鑰和簽名,只需要遵循RSA簽名規(guī)范,并將簽名字符串base64編碼和UrlEncode? ? idsigner = CreateRSADataSigner(gxPrivateKey);

NSString *signedString = [signer signString:orderSpec];

?//將簽名成功字符串格式化為訂單字符串,請嚴格按照該格式

NSString *orderString = nil;

if (signedString != nil) {

orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",

orderSpec, signedString, @"RSA"];

? ?[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {

DMLog(@"reslut = %@",resultDic);

if ([[resultDic objectForKey:@"resultStatus"]isEqualToString:@"9000"]) {

//支付成功了

}

}];}}



resultStatus,狀態(tài)碼,SDK里沒對應信息,第一個文檔里有提到:支付成功后,后臺的訂單狀態(tài)已經(jīng)改變了,此時可以通知頁面刷新,以后臺的數(shù)據(jù)狀態(tài)為準,更新前端頁面中訂單的支付狀態(tài)。

9000 訂單支付成功

8000 正在處理中

4000 訂單支付失敗

6001 用戶中途取消

6002 網(wǎng)絡連接出錯

memo, 提示信息,比如狀態(tài)碼為6001時,memo就是“用戶中途取消”。但千萬別完全依賴這個信息,如果未安裝支付寶app,采用網(wǎng)頁支付時,取消時狀態(tài)碼是6001,但這個memo是空的。。(當我發(fā)現(xiàn)這個問題的時候,我就決定,對于這么不靠譜的SDK,還是盡量靠自己吧。。)


result,訂單信息,以及簽名驗證信息。如果你不想做簽名驗證,那這個字段可以忽略了。。

集成支付寶iOS

*****************************更新 **************************

iOS9上面不能跳轉到支付寶客戶端支付 什么情況只能跳到網(wǎng)頁

(一)為了適配 iOS9.0 中的 App Transport Security(ATS)對 http 的限制,這里需要對 支付寶的請求地址 alipay.com 做例外,在 app 對應的 info.list 中添加如下配置 (文中以 XML 格式描述)。

解決方法

(二) 同時需要在Plist中設置支付寶為白名單

解決方法

支付結果不回調(diào)

- (BOOL)application:(UIApplication*)application

openURL:(NSURL*)url

sourceApplication:(NSString*)sourceApplication

annotation:(id)annotation {

if([url.hostisEqualToString:@"safepay"]) {

//跳轉支付寶錢包進行支付,處理支付結果

[[AlipaySDKdefaultService]processOrderWithPaymentResult:urlstandbyCallback:^(NSDictionary*resultDic) {

NSLog(@"result = %@",resultDic);

}];

}

returnYES;

}

// NOTE: 9.0以后使用新API接口

- (BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary *)options

{

if([url.hostisEqualToString:@"safepay"]) {

//跳轉支付寶錢包進行支付,處理支付結果

[[AlipaySDKdefaultService]processOrderWithPaymentResult:urlstandbyCallback:^(NSDictionary*resultDic) {

NSLog(@"result = %@",resultDic);

}];

}

returnYES;

}


你會發(fā)現(xiàn) callback:^(NSDictionary *resultDic)? 沒有結果返回了,查了官網(wǎng)后發(fā)現(xiàn),需要在APPDelegate里手動獲取下返回結果,保持原支付代碼不變的情況下,復制上面的代碼粘貼到 APPDelegate里,支付密代碼那里的回調(diào)callback里就會有內(nèi)容返回了。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

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

  • 關于第IOS三方支付(支付寶)問題 一:平臺注冊(快速集成): 1創(chuàng)建應用并獲取APPID: 要在您的應用中使用支...
    sillen閱讀 1,367評論 1 3
  • 在支付寶開發(fā)中心與支付寶簽約店家我的商家服務—在頁面的下方找到——>簽約管理—>找到移動支付—–>點擊下載集成文檔...
    閣子菌閱讀 541評論 0 5
  • 一.移動支付 什么叫移動支付:移動支付也稱為手機支付,就是允許用戶使用其移動終端(通常是手機)對所消費的商品或服務...
    川農(nóng)鑒黃師閱讀 1,924評論 8 16
  • 相比之前的支付寶sdk,新版的sdk不再判斷App客戶端是否安裝了支付寶客戶端。如果用戶安裝了支付寶,將跳到支付寶...
    V1tas閱讀 1,266評論 2 4
  • 一直以來覺得沒有什么,但是最近兩年,尤其是結婚生子了之后,傳統(tǒng)思想與現(xiàn)在的我們之間理想和沖擊實在太強,中間又穿插著...
    冷冷同學閱讀 224評論 0 0