前段時間把微信支付小小整理寫了一下,時隔至今,看了一遍目錄,微信和支付寶支付不是同時出現的么,怎么能只寫一個(強迫癥害死貓)
下面請開始我的表演
建議先看看這個官方的集成文檔:App支付iOS集成流程
1、逛逛官網介紹和一些注意事項,下載demo和sdk,按照集成文檔放在自己項目里,該引入的依賴庫不要遺漏,認真添加,有些工具類文件也可以從demo里直接拿過來用(模擬生成支付用的東西 真實的不需要 在后臺處理),我最后整到項目里的是這些文件,請您過目:
2、開始編寫支付代碼,這之前最好是要弄明白后臺要做的事情 客戶端要做的事情,溝通好狠重要,接著看代碼:
(1)引入頭文件:
#import#import "Order.h"
#import "RSADataSigner.h"
(2)調用后臺獲取支付寶支付的信息,這些東西一定在后臺做,為了所謂的安全考慮,我們很樂意讓后臺來實現這個過程,
// 選中商品調用支付寶極簡支付
- (void)doAlipay:(NSDictionary *)response {
// 后臺返回的字符串
NSString *signedString = response[@"data"];?
if (signedString != nil) {
// 這個在Xcode里面設置一下添加scheme:MeiFaAlipay
NSString *appScheme = @"MeiFaAlipay";
// 開始支付
[[AlipaySDK defaultService] payOrder:signedString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"reslut = %@",resultDic);
}];
}
}
(3)以上是主要實現代碼,支付成功的回掉老是不走,不知道為啥,支付結果我們UI設計了專門的支付成功頁面,所以要拿到,我是在appdelegate.m中獲取到支付成功或者時報發了一個通知來處理的,參考:
#import <AlipaySDK/AlipaySDK.h>
//9.0后的方法里獲取支付結果回掉事件?
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options {
if ([url.host isEqualToString:@"safepay"]) {
//跳轉支付寶錢包進行支付,處理支付結果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"1、支付寶進行支付,處理支付結果:%@", resultDic);
if ([resultDic[@"resultStatus"] isEqualToString:@"9000"]) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"AliPaySucssed" object:@"Y"];
}else {
[[NSNotificationCenter defaultCenter] postNotificationName:@"AliPayFaild" object:@"N"];
}
}];
return YES;
}
}