iOS 支付宝支付
2018-08-08 本文已影响685人
HH思無邪
81fdbf664f654970835e5426b55959f6.png支付宝支付流程
支付宝的集成按着官方文档来
签名呀注册AppKey 我们是由后台完成的
AppDelegate 的代码实现
# import <AlipaySDK/AlipaySDK.h>支付宝
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
if ([url.host isEqualToString:@"safepay"]) {
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
}];
}
return YES;
}
// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
if ([url.host isEqualToString:@"safepay"]) {
//跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
//发送支付成功通知
[[NSNotificationCenter defaultCenter] postNotificationName:ReturnSucceedPayNotification object:nil];
}];
}
if ([url.host isEqualToString:@"platformapi"]){//支付宝钱包快登授权返回authCode
[[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
//【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】
NSLog(@"platformapi result = %@",resultDic);
//发送支付失败通知
[[NSNotificationCenter defaultCenter] postNotificationName:ReturnSucceedPayNotification object:nil];
}
];};
return YES;
}
支付界面实现逻辑
一、加载头文件 接收通知
#import <AlipaySDK/AlipaySDK.h>//支付宝
//注册通知监听支付是否成功
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkPayResultRequest) name:ReturnSucceedPayNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkPayResultRequest) name:ReturnFailedPayNotification object:nil];
//通知监听响应
- (void)checkPayResultRequest {
if (self == self.navigationController.childViewControllers[self.navigationController.childViewControllers.count - 1]) {
//查看支付结果 网络请求 找后台要
[self getRechargeCallbackData];
}
}
二、支付宝方式支付
//支付宝支付 //签名和拼接在后台,APP不在进行二次签名
//需要在info文件 URL Types中建一个URL Schems 支付宝返回应用用到
NSString *appScheme = @"TSHomeFoodsToocms";
//后台拼接的签名订单信息
NSString * orderString = request[@"data"][@"sign"];
TSLog(orderString);
// NOTE: 调用支付结果开始支付宝支付
[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
TSLog2(@"reslut = %@",resultDic);
//查看支付结果 网络请求 找后台要
[self getRechargeCallbackData];
}];
路漫漫其修远兮,吾将上下而求索
通知的详细使用