前段时间把微信支付小小整理写了一下,时隔至今,看了一遍目录,微信和支付宝支付不是同时出现的么,怎么能只写一个(强迫症害死猫)
下面请开始我的表演
建议先看看这个官方的集成文档: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;
}
}