美文网首页
ios 支付宝支付集成

ios 支付宝支付集成

作者: 爱迪生的小跟班 | 来源:发表于2018-11-15 17:48 被阅读0次

    客户端集成支付宝、微信支付,所限还是需要后台的配合,后台做一些逻辑数据处理,客户端只需要进行第三方集成、授权、调起支付接口就行了,其实从客户端来讲还是比较简单的。先讲讲支付宝支付的集成,后续再讲微信支付。

    1、注册支付宝开发者账号、创建应用 https://openhome.alipay.com/ (这一步就不细讲了,使用第三方不备步骤)。

    创建应用后,需要授权应用支持的功能:支付、登录等功能。

    2、从官网上下载SDK,并导入到工程中

    下载SDK解压后如下文件:


    导入SDK文件.png

    将上面文件拖入工程后,下一步添加依赖库:


    添加依赖库.png

    3、写个单例类,实现支付宝支付功能,方便APP中各个地方的调用

    创建HCAlipayManager 类:

    .h文件:
    #import <AlipaySDK/AlipaySDK.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    @interface HCAlipayManager : NSObject
    
    //生成支付宝单例类
    +(id)sharePayManager;
    
    //支付宝支付
    //aParam 后端返回支付信息
    -(void)handleOrderPayWithParams:(NSString *)aParam;
    
    @end
    
    NS_ASSUME_NONNULL_END
    

    .m文件:

    @implementation HCAlipayManager
    
    + (id)sharePayManager{
        static HCAlipayManager *asAlixPay = nil;
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            asAlixPay = [[HCAlipayManager alloc] init];
        });
        return asAlixPay;
    }
    
    /**
     支付宝支付
    
     @param aParam <#aParam description#>
     */
    - (void)handleOrderPayWithParams:(NSString *)aParam{
        NSLog(@"aParm = %@",aParam);
        NSString *appScheme = @"alipayredpag";//appScheme是你在项目中添加的URL Type(别写错)
        NSString *orderString = aParam;//aParam[@"payInfo"];
        
        
        // NOTE: 调用支付结果开始支付
        [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
            NSLog(@"reslut = %@",resultDic);
            int statusCode = [resultDic[@"resultStatus"]  intValue];
            
            if (statusCode == 9000){
                //订单支付
                [[HCToast shareInstance] showToast:@"支付成功"];
                [[NSNotificationCenter defaultCenter] postNotificationName:@"alipay_paySuccess" object:nil];
                
            }else{
                //交易失败
                // [[NSNotificationCenter defaultCenter] postNotificationName:@"PAY_STATUS" object:@"0"];
                [[HCToast shareInstance] showToast:@"支付异常"];
            }
        }];
    }
    @end
    

    4、支付成功后跳转

    在AppDelegate.m中写拦截跳转协议:

    #pragma mark - openURL Delegate
    ///ios9.0之后实现该方法
    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:
        //支付宝支付跳转
        if ([url.host isEqualToString:@"safepay"]) {
            //跳转支付宝钱包进行支付,处理支付结果
            [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
                NSLog(@"支付宝支付跳转 result = %@",resultDic);
                int statusCode = [resultDic[@"resultStatus"]  intValue];
                
                if (statusCode == 9000){
                    //订单支付
                    [[HCToast shareInstance] showToast:@"支付成功"];
                    [[NSNotificationCenter defaultCenter] postNotificationName:@"alipay_paySuccess" object:nil];
                    
                }else{
                    //交易失败
                    // [[NSNotificationCenter defaultCenter] postNotificationName:@"PAY_STATUS" object:@"0"];
                    [[HCToast shareInstance] showToast:@"支付异常"];
                }
            }];
        }
        
        
        return YES;
    }
    
    ///ios9.0之前实现该方法
    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
        
        //支付宝支付跳转
        if ([url.host isEqualToString:@"safepay"]) {
            //跳转支付宝钱包进行支付,处理支付结果
            [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
                NSLog(@"支付宝支付跳转 result = %@",resultDic);
                int statusCode = [resultDic[@"resultStatus"]  intValue];
                
                if (statusCode == 9000){
                    //订单支付
                    [[HCToast shareInstance] showToast:@"支付成功"];
                    [[NSNotificationCenter defaultCenter] postNotificationName:@"alipay_paySuccess" object:nil];
                    
                }else{
                    //交易失败
                    // [[NSNotificationCenter defaultCenter] postNotificationName:@"PAY_STATUS" object:@"0"];
                    [[HCToast shareInstance] showToast:@"支付异常"];
                }
            }];
        }
        
        return YES;
    }
    
    ///ios9.0之前实现该方法
    -(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);
                int statusCode = [resultDic[@"resultStatus"]  intValue];
                
                if (statusCode == 9000){
                    //订单支付
                    [[HCToast shareInstance] showToast:@"支付成功"];
                    [[NSNotificationCenter defaultCenter] postNotificationName:@"alipay_paySuccess" object:nil];
                    
                }else{
                    //交易失败
                    // [[NSNotificationCenter defaultCenter] postNotificationName:@"PAY_STATUS" object:@"0"];
                    [[HCToast shareInstance] showToast:@"支付异常"];
                }
            }];
        }
        
        return YES;
    }
    

    5、在需要支付的地方,调用支付方法

    ///调起支付宝支付
    - (void)doAlipayWithParams:(NSString *)params{
        NSLog(@"支付宝支付信息:%@",params);
        ///没错,只需要调用单例方法 一句话搞定。但是需要注意,params:一般是后台给你的支付所需的信息,拼接成字符串传给支付宝就可以了。
        [[HCAlipayManager sharePayManager] handleOrderPayWithParams:params];
    }
    

    结束了,感谢阅读~

    相关文章

      网友评论

          本文标题:ios 支付宝支付集成

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