支付寶支付 -- 適配iOS9
首先咱們一塊兒看一下,最終調起支付寶完成支付的必要參數和方法(Order類由支付寶demo中提供)html
1 Order *order = [Order new]; 2 order.partner = kAliPayPartner; 3 order.seller = kAliPaySeller; 4 order.tradeNO = @"111"; 5 order.productName = @"阿里支付test商品"; //商品標題 6 order.productDescription = @"阿里支付test商品描述"; //商品描述 7 order.amount = @"0.01"; //商品價格 8 order.notifyURL = @"http://www.xxx.com"; //回調URL 9 10 order.service = @"mobile.securitypay.pay"; 11 order.paymentType = @"1"; 12 order.inputCharset = @"utf-8"; 13 order.itBPay = @"30m"; 14 order.showUrl = @"m.alipay.com"; 15 16 // 應用註冊scheme 17 NSString *appScheme = @"aliPay"; 18 19 //將商品信息拼接成字符串 20 NSString *orderSpec = [order description]; 21 NSLog(@"orderSpec = %@",orderSpec); 22 23 //獲取私鑰並將商戶信息簽名,外部商戶能夠根據狀況存放私鑰和簽名,只須要遵循RSA簽名規範,並將簽名字符串base64編碼和UrlEncode 24 id<DataSigner> signer = CreateRSADataSigner(kAliPayPrivateKey); 25 NSString *signedString = [signer signString:orderSpec]; 26 27 //將簽名成功字符串格式化爲訂單字符串,請嚴格按照該格式 28 NSString *orderString = nil; 29 if (signedString != nil) { 30 orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"", 31 orderSpec, signedString, @"RSA"]; 32 33 [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) { 34 NSLog(@"reslut = %@",resultDic); 35 }]; 36 37 }
1.到支付寶開放平臺申請移動支付資質,並建立應用,獲得c++
partner : 2088121154111111 (參考格式)api
seller:即支付寶帳號,例如郵箱號手機號等app
支付寶開放平臺:https://open.alipay.com/platform/home.htm dom
2.下載demo,並將下列類庫文件等加入工程ide
AlipaySDK.bundleui
AlipaySDK.framework編碼
Order類url
openssl文件夾spa
Util文件夾
3.在buildPhases選項卡的LinkBinaryWithLibraries中,添加系統依賴庫
1 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 2 { 3 4 //若是極簡開發包不可用,會跳轉支付寶錢包進行支付,須要將支付寶錢包的支付結果回傳給開發包 5 if ([url.host isEqualToString:@"safepay"]) { 6 [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) { 7 //【因爲在跳轉支付寶客戶端支付的過程當中,商戶app在後臺極可能被系統kill了,因此pay接口的callback就會失效,請商戶對standbyCallback返回的回調結果進行處理,就是在這個方法裏面處理跟callback同樣的邏輯】 8 NSLog(@"result = %@",resultDic); 9 }]; 10 } 11 if ([url.host isEqualToString:@"platformapi"]){//支付寶錢包快登受權返回authCode 12 13 [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) { 14 //【因爲在跳轉支付寶客戶端支付的過程當中,商戶app在後臺極可能被系統kill了,因此pay接口的callback就會失效,請商戶對standbyCallback返回的回調結果進行處理,就是在這個方法裏面處理跟callback同樣的邏輯】 15 NSLog(@"result = %@",resultDic); 16 }]; 17 } 18 return YES; 19 }
1 <key>NSAppTransportSecurity</key> 2 <dict> 3 <key>NSExceptionDomains</key> 4 <dict> 5 <key>alipay.com</key> 6 <dict> 7 <key>NSIncludesSubdomains</key> 8 <true/> 9 <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> 10 <true/> 11 <key>NSTemporaryExceptionMinimumTLSVersion</key> 12 <string>TLSv1.0</string> 13 <key>NSTemporaryExceptionRequiresForwardSecrecy</key> 14 <false/> 15 </dict> 16 <key>alipayobjects.com</key> 17 <dict> 18 <key>NSIncludesSubdomains</key> 19 <true/> 20 <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> 21 <true/> 22 <key>NSTemporaryExceptionMinimumTLSVersion</key> 23 <string>TLSv1.0</string> 24 <key>NSTemporaryExceptionRequiresForwardSecrecy</key> 25 <false/> 26 </dict> 27 </dict> 28 </dict>
2.工程未使用https,並對NSAppTransportSecurity下NSAllowsArbitraryLoads設置爲true
再次運行. 支付一個試試 呵呵. 應該成功瞭如遇問題歡迎加個人qq 343381934 一塊兒交流