iOS 支付宝支付

支付宝支付流程

81fdbf664f654970835e5426b55959f6.png

支付宝的集成按着官方文档来

ios支付宝集成流程

签名呀注册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];
                                        }];

路漫漫其修远兮,吾将上下而求索
通知的详细使用

推荐阅读更多精彩内容