美文网首页
支付宝支付

支付宝支付

作者: 古月思吉 | 来源:发表于2018-09-10 15:12 被阅读0次

按照“支付宝开放平台”的“iOS集成流程”进行集成:
https://docs.open.alipay.com/204/105295/

一、项目配置:

  • 请按照上面给的链接文档进行配置

二、代码:

1.在.pch文件中宏定义跳转app的URLSchemes:

//跳转本app需要用的 URLScheme
#define kAppURLScheme @"AJProject"

2.在用到支付宝支付的地方,倒入头文件:

#import <AlipaySDK/AlipaySDK.h>

3.AJGoodsCashierController.m文件(收银台页):

#pragma mark - 支付宝相关
/**
 支付宝支付

 @param orderStr 后台返回的订单string
 */
-(void)aliPayWithOrderStr:(NSString *)orderStr {
    [AlipaySDK.defaultService payOrder:orderStr fromScheme:kAppURLScheme callback:^(NSDictionary *resultDic) {
        //这是从支付宝H5页面支付之后走的回调 - 未离开了本app
        [self postAliPayResultNotificationWithDict:resultDic];
    }];
}
/**发送支付宝支付结果的通知*/
-(void)postAliPayResultNotificationWithDict:(NSDictionary *)dict {
    if (dict != nil) {
        [NSNotificationCenter.defaultCenter postNotificationName:@"kAliPayResultNotification" object:nil userInfo:dict];
    }
}
/**接收到通知的回调 - “支付宝支付结果”*/
-(void)getAlipayOrderPayResult:(NSNotification *)notification {
    if (notification.userInfo != nil) {
        NSDictionary * resultDic = notification.userInfo;
        NSString * resultStatus = [resultDic valueForKey:@"resultStatus"];
        if ([resultStatus isEqualToString:@"9000"]) {//支付成功
            self.payResultLabel.text = @"支付成功!";
            [self.payResultImageView setImageWithName:@"icon_pay_paySuccess"];
        } else {//支付失败
            self.payResultLabel.text = @"支付失败...";
            [self.payResultImageView setImageWithName:@"icon_pay_payFail"];
        }
        self.payResultBgView.hidden = false;
        [self.view bringSubviewToFront:self.payResultBgView];
    }
}

4.AppDelegate.m文件:

  • 下面的 processAuthResult 方法,是处理“支付宝app授权结果信息”的方法,如果需求中有对授权结果的处理,可以选择调用。如果只是处理“支付成功/失败的结果信息”,那么只需要调用 processOrderWithPaymentResult 方法即可。
#pragma mark - 支付宝接入
// NOTE: 9.0以前
- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{
    if ([url.host isEqualToString:@"safepay"]) {
        
        // 支付跳转支付宝钱包进行支付,处理支付结果(从支付宝app支付之后走的回调 - 离开了本app)
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
            [self postAliPayResultNotificationWithDict:resultDic];
        }];
        
        //处理授权结果
        [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
            // 解析 auth code
            NSString *result = resultDic[@"result"];
            NSString *authCode = nil;
            if (result.length>0) {
                NSArray *resultArr = [result componentsSeparatedByString:@"&"];
                for (NSString *subResult in resultArr) {
                    if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
                        authCode = [subResult substringFromIndex:10];
                        break;
                    }
                }
            }
            NSLog(@"授权结果 authCode = %@", authCode?:@"");
        }];
        
    }
    return YES;
}
// NOTE: 9.0及以后,使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
    if ([url.host isEqualToString:@"safepay"]) {
        
        // 支付跳转支付宝钱包进行支付,处理支付结果(从支付宝app支付之后走的回调 - 离开了本app)
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
            [self postAliPayResultNotificationWithDict:resultDic];
        }];
        
        // 处理授权结果
        [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
            // 解析 auth code
            NSString *result = resultDic[@"result"];
            NSString *authCode = nil;
            if (result.length>0) {
                NSArray *resultArr = [result componentsSeparatedByString:@"&"];
                for (NSString *subResult in resultArr) {
                    if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
                        authCode = [subResult substringFromIndex:10];
                        break;
                    }
                }
            }
            NSLog(@"授权结果 authCode = %@", authCode?:@"");
        }];
    
    }
    return YES;
}
/**发送支付宝支付结果的通知*/
-(void)postAliPayResultNotificationWithDict:(NSDictionary *)dict {
    if (dict != nil) {
        [NSNotificationCenter.defaultCenter postNotificationName:@"kAliPayResultNotification" object:nil userInfo:dict];
    }
}

相关文章

  • Android支付宝支付集成

    Android支付宝支付 标签: android Android支付宝支付使用的流程介绍 支付宝流程介绍 支付宝流...

  • ## [iOS 支付宝支付]

    [iOS开发系列-支付宝支付] 概述 开发中支付通常都会集成支付宝支付,下面讲解支付宝的整体流程。 集成支付宝支付...

  • 三方支付流程总结

    支付宝支付和微信支付 支付宝支付流程图: 支付宝支付: 当我们选择点击了支付宝支付按钮开始 1.app选择商品进行...

  • iOS支付

    支付宝支付 支付宝支付支付宝补充 微信支付 微信支付 内购 iOS开发 内购流程

  • 奖品合集

    支付宝44.44x12 支付宝200x1 支付宝121x1 支付宝111x1 支付宝100x1 支付宝88x1 支...

  • 对接支付宝支付接口开发笔记

    支付宝对接学习笔记: 功能介绍: 支付宝对接 支付宝回调 查询支付状态(略过不讲) 要求: 熟悉支付宝对接核心文档...

  • iOS集成支付宝支付

    一、支付宝支付,首先利用CocoaPods,导入支付宝SDK 二、 创建支付宝支付管理类 AlipayManag...

  • 历害word哥,支付宝AR红包风靡朋友圈

    支付宝又来搞事情,2016年12月22日,支付宝又出新玩法:支付宝AR红包! 支付宝用户可以利用支付宝的红包功能:...

  • iOS支付宝功能集成

    iOS快速集成支付宝详解/支付宝集成获取私钥与公钥 在集成支付宝功能前,我们必须了解下什么支付宝流程,下图是支付宝...

  • iOS第三方支付(支付宝、微信)

    这里会详细讲解支付宝和微信支付 一、支付宝支付 1.准备工作 1> 向支付宝”签约" 成为支付宝的”商户”, 签约...

网友评论

      本文标题:支付宝支付

      本文链接:https://www.haomeiwen.com/subject/jwysgftx.html